파일 내용이 변경되면 파일 내용 출력

파일 내용이 변경되면 파일 내용 출력

foobar예를 들어 파일이 있고 다음을 수행하는 경우 파일 내용이 변경되면 파일 내용을 출력하고 싶습니다 .

magic_command foobar

현재 터미널은 파일의 내용을 표시해야 하며기다리다나도 모르게 ^C를 눌렀다.

그런 다음 다른 터미널에서 다음을 수행합니다.

echo asdf >> foobar

첫 번째 터미널에는 원본 파일 내용 외에 새로 추가된 줄이 표시되어야 합니다(물론 ^C를 누르지 않았다는 점을 고려하면).

답변1

당신은 tail command그것을 사용할 수 있습니다 -f :

tail -f /var/log/syslog 

이는 실시간 디스플레이에 적합한 솔루션입니다.

답변2

하나의 터미널 화면에 맞는 짧은 파일을 표시하고 변경되는 내용이 전체 파일일 수 있는 경우 다음을 사용할 수 있습니다 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

세 가지 해결책이 있습니다.

1) tail -f좋은 생각이야

2)우리는 또한 tailf사용해야 합니다

삼)세 번째는 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

관련 정보