使用 Vim 编辑文本文件不会更新 tail -f

ale*_*lex 17 vim tail files

我正在使用tail -f a.txt一个名为a.txt.

如果我使用类似于ls -a >> a.txt在第二个虚拟控制台中的内容更新文件,更改将实时显示在第一个中。

如果我在第二个虚拟控制台中使用 Vim 更新文件,更改将不会显示在第一个控制台中。

我不一定期望它在该窗口中触发更新 - 但为什么这不更新运行tail -f命令的终端?

Bob*_*ger 31

如果您使用 编辑文件vim,通常它会将文件读入内存,然后写入一个新文件。因此tail,现在正在对过时的文件副本进行操作(该副本保留在文件系统中,直到tail(和任何其他程序)停止使用它为止。

您可以使用tail以下命令跟随文件名(而不是文件):

tail -F yourfile  
Run Code Online (Sandbox Code Playgroud)

注意大写 F


Dop*_*oti 9

我的理解是,通常在使用 进行编辑时vim,您正在编辑文件的副本,当您将更改写入磁盘时,该副本会移动到位。由于这是unlink通过将原始文件move放入并将新文件放入适当位置而发生的,因此tail不会看到对原始文件的新更改。