ファイル内容が変更された場合、ファイル内容の出力

ファイル内容が変更された場合、ファイル内容の出力

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

関連情報