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

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

我用来tail -f a.txt观看名为 的文件的更新a.txt

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

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

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

答案1

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

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

tail -F yourfile  

请注意大写 F

答案2

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

相关内容