web-dev-qa-db-ja.com

ターミナルでテキストファイルを開き、変更されるたびに自動更新する

テキストファイルが変更されるたびにインスタントオートリフレッシュでターミナルでテキストファイルを開くにはどうすればよいですか?

vim:set autoreadで確認しましたが、更新をトリガーするには、基本的な入力(vim内のキープレスなど)が必要です。

自動更新をハンズフリーにしたい。これを行うためのハックはありますか?

私はCrunchbang 11を使用していますが、ターミナルにはかなり慣れています。

15
Kit

これにより、毎秒1回ファイルが表示されます。

watch -n 1 cat file
tail -f /var/log/syslog

ファイルに追加されたsyslog更新を表示します。

8
Joe C.

他の答えが示唆するようにwatchを使用しますが、Unixなどのシェルによって提供されるビルディングブロックを使用して、一見複雑に見える問題にどのように対処できるかを示すだけです。 whileループは、ループを実行する簡単な方法です。

$ while [ 1 ]; do clear; date; cat <afile>; sleep 1 ;done

$ while [ 1 ]; do clear; date; cat sample.txt; sleep 1 ;done
Fri Nov 15 09:17:39 EST 2013
1
2
3
4
5

画面がクリアされ、1秒後にこれが表示されます。

Fri Nov 15 09:17:40 EST 2013
1
2
3
4
5
3
slm

コメントで提案されているように、やり過ぎですがinotifyを使用することもできます。最も簡単なのは、watchを使用することです。 inotifyでこれを行う1つの方法を次に示します。

  1. inotify-toolsパッケージをインストールする

    Sudo apt-get install inotify-tools
    
  2. inotifywatchを使用して、ファイルの変更を確認します。ループで実行し、変更が検出された場合はファイルをcatします(そのため、文字列grepに対してtotalを使用します)。

    while true; do 
      inotifywatch -e modify -t 1 kk 2>/dev/null | grep -q total && 
      echo "$(date;cat kk)"; 
    done
    
2
terdon

watch(1)は本当に便利なツールです。 [1]

catの使用はお勧めしません。

代わりに、headまたはtailを使用して、ファイルの先頭または末尾を確認する必要があります。

0
ScrewTSW