是否可以在一个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可以实现类似的功能。
答案 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的插件来帮助自动保存,以同步显示日志。