如何写到支持tail -f的文件

时间:2019-03-08 07:36:47

标签: bash

是否可以在一个bash进程中写入文件,然后在另一个bash进程中读取文件尾(以相同的方式,您可以使用tail -f读取系统生成的日志。

我想打开并不断向文件中写入内容

vi /tmp/myfile

然后在其他终端上打印写入该文件的内容

tail -f /tmp/myfile

我已经尝试过了,但是在vi中保存更改后,tail不会打印任何内容(保存前只有初始行)。

动机:

在我的玩具项目中。我想使用pipeto.me服务来构建共享剪贴板。我将连续写入文件的位置,并且尾部捕获的所有更改都将通过管道传递以卷曲。类似于pipeto.me的观看日志示例

tail -f logfile | curl -T- -s https://pipeto.me/2xrGcZtQ

但是它将代替我的日志文件来监视我的文件,而该文件将在vi中写入

但是,除了解决我的问题之外,我还在寻找一般的答案,如果vi和tail可以实现类似的功能。

1 个答案:

答案 0 :(得分:2)

您可以使用cat命令,方法是将其输出流更改为/ tmp / file,将您键入的内容添加到myfile中,

cat > /tmp/myfile;
#input-> add text(standard input by default is set as keyboard)
#typing...

然后使用以-F作为参数的tail命令打印文件,

tail -F /tmp/file; #-F -> output appended data as the file grows and with retry
#output-> input given to file
#typing....

使用vim将文本写入文件,

vi /tmp/file;
#typing...
#:w -> write text to file
tail -F /tmp/file;
#
#typing...

使用vim写入文件时,它在键入时不会立即写入(保存),而是退出插入模式并显式保存文件(:w)时,然后是tail的输出将被更新。

因此,您可以使用类似Autosaveplugin的插件来帮助自动保存,以同步显示日志。