ファイルで可能な変更を見たいです。通常、tail -f file
orを使用するとwatch -d cat file
トリックを実行できます。しかし、file
私が監視しているものは大きすぎて1つの画面に入れるのが難しく、変更は必ずしも特定の場所(たとえば、最後の部分)で発生するわけではありません。
変化をどのように観察しますか?理想的には、watch -d cat file
少なくとも1つの変更が画面に表示されるように、同様のスクロール効果を持ちたいと思います。
これがどんな用途なのか気になるなら、私が使っているリチウム大容量ファイルを最小化すると、最小化プロセスで潜在的なエラーに関するヒントが表示されることが多いため、進行状況を確認するのが好きです。
答え1
watch=/path/to/file
tmp="$watch".$$
cp "$watch" "$tmp".1
while true; do
clear
cp "$watch" "$tmp".2
diff -u "$tmp".1 "$tmp".2
mv "$tmp".2 "$tmp".1
sleep 10
done
ファイル全体のコピーを作成するのに必要なスペースや時間が気になる場合は、要件を満たすためにこの問題を解決する方法が実際にないことに気づく必要があります。watch -d
現在の出力と比較するには、最後の出力も維持する必要があります。
答え2
無限ループを使用してファイルをポーリングするのは悪い考えです。私の提案はnodejsをインストールして使用することです。fs.watchファイル。
fs.watchFile('message.text', (curr, prev) => {
console.log(`the current mtime is: ${curr.mtime}`);
console.log(`the previous mtime was: ${prev.mtime}`);
});
端末で1行のコマンドが必要な場合は、次のようにします。
node -e "fs.watchFile('message.text', (curr, prev) => {
console.log(`the current mtime is: ${curr.mtime}`);
console.log(`the previous mtime was: ${prev.mtime}`);
});"