
foobar
たとえば、ファイルがあり、次のような場合は、ファイルの内容が変更されたらファイルの内容を出力したいと思います。
magic_command foobar
現在の端末はファイルの内容を表示する必要があります。待つ私も知らないで^ Cを押しました。
その後、他の端末で次のことを行います。
echo asdf >> foobar
最初の端末には、元のファイルの内容に加えて、新しく追加された行を表示する必要があります(もちろん^ Cを押さなかったことを考慮してください)。
答え1
あなたはtail command
それを使用することができます-f
:
tail -f /var/log/syslog
これはリアルタイム表示に適したソリューションです。
答え2
1つの端末画面に合った短いファイルを表示し、変更される内容がファイル全体である場合は、次のものを使用できますwatch
。
watch cat example.txt
Every 2.0s: cat example.txt Sun Aug 3 15:25:20 2014
Some text
another line
デフォルトでは、オプションのヘッダーを含むファイル全体が2秒ごとに表示されます。
オプション-d
(--differences
)は、以前のバージョンまたは出力の最初のバージョンに対する変更を強調表示します。
答え3
less
オンにすると、クリックできるtail -f
ようなフォローモードがあります。F
答え4
3つの解決策があります。
1) tail -f
いい考えだ
2)私達はまたtailf
使用するべきです
三)3番目はbashスクリプトです。
#!/bin/bash
GAP=10 #How long to wait
LOGFILE=$1 #File to log to
if [ "$#" -ne "1" ]; then
echo "USAGE: `basename $0` <file with absolute path>"
exit 1
fi
#Get current long of the file
len=`wc -l $LOGFILE | awk '{ print $1 }'`
echo "Current size is $len lines."
while :
do
if [ -N $LOGFILE ]; then
echo "`date`: New Entries in $LOGFILE: "
newlen=`wc -l $LOGFILE | awk ' { print $1 }'`
newlines=`expr $newlen - $len`
tail -$newlines $LOGFILE
len=$newlen
fi
sleep $GAP
done
exit 0