Vimでテキストファイルを編集してもtail -fが更新されない


17

tail -f a.txtというファイルの更新を監視するために使用していますa.txt

ls -a >> a.txt2番目の仮想コンソールのようなものを使用してファイルを更新すると、最初のコンソールで変更がリアルタイムで表示されます。

2番目の仮想コンソールでVimを使用してファイルを更新すると、最初の仮想コンソールには変更が表示されません。

私は必ずしもそれがそのウィンドウで更新をトリガーすると期待するわけではありません-しかし、なぜこれがtail -fコマンドを実行している端末を正確に更新しないのですか?


5
tail -f追加をチェックします。tail -Fファイルの名前変更をチェックします。
-thrig

回答:


31

でファイルを編集する場合vim、通常はファイルをメモリに読み取り、新しいファイルを書き込みます。そのtailため、ファイルの期限切れコピーtail(および(および他のプログラム)がそのファイルの使用を停止するまでファイルシステムに残ります)で動作しています。

tail以下を使用して、ファイルではなくファイル名を追跡できます。

tail -F yourfile  

大文字に 注意してくださいF


1
tail -F動作します!コンソールには、「a.txtが置き換えられました:新しいファイルの終わりに続きます」などのメッセージが表示され、それに応じて更新されます。ありがとう!
アレックス

8

私の理解では、通常、で編集する場合vim、ファイルのコピーを編集しているので、ディスクに変更を書き込むと、ファイルのコピーがその場所に移動します。これは、元のファイルを作成し、新しいファイルを所定の場所に配置するunlinkことで発生するため、元のファイルに対する新しい変更は表示moveされtailません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.