Bash 如何写入支持tail-f的文件

Bash 如何写入支持tail-f的文件,bash,Bash,是否可以在一个bash进程中写入文件,然后用tail读取它,就像用tail-f读取系统生成的日志一样 我想打开并不断地写一些东西到文件中 vi /tmp/myfile 在另一种情况下,终端打印写入该文件的内容 tail -f /tmp/myfile 我已经试过了,但在保存之前,在vi中保存更改后,tail不会打印任何内容 动机: 在我的玩具项目中。我想使用服务构建共享剪贴板。在这里,我将不断地写入文件,tail捕获的所有更改都将通过管道传输到curl。类似于pipeto.me中的观察日志示例

是否可以在一个bash进程中写入文件,然后用tail读取它,就像用tail-f读取系统生成的日志一样

我想打开并不断地写一些东西到文件中

vi /tmp/myfile
在另一种情况下,终端打印写入该文件的内容

tail -f /tmp/myfile
我已经试过了,但在保存之前,在vi中保存更改后,tail不会打印任何内容

动机:

在我的玩具项目中。我想使用服务构建共享剪贴板。在这里,我将不断地写入文件,tail捕获的所有更改都将通过管道传输到curl。类似于pipeto.me中的观察日志示例

tail-f日志文件| curl-T--shttps://pipeto.me/2xrGcZtQ.

但它将监视我的文件,而不是日志文件,我将在这里用vi编写


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

您可以使用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的插件,它可以帮助自动保存,同步显示日志

只是一个猜测,但也许你需要把:w作为它的尾巴?不过,这只是一次冒险。除了那一个我不知道。你的目标是什么?您可以创建原始文件的快照副本,监视文件的更改并显示差异,这是您想要的吗?这真的有点像手动编辑文件的味道,不保证在现有文件的末尾追加内容,这是tail-f真正能够处理的。你想解决的任务是什么?这只是一个玩具项目。我想使用pipeto.me服务构建共享剪贴板。在这里,我将连续地写入文件,tail捕获的所有更改将通过管道传输到curl。类似于pipeto.me tail-f logfile | curl-T--s中的watch log示例https://pipeto.me/2xrGcZtQ. 但它将监视我的文件,而不是日志文件,我将在vi中编写。我将使用watch代替,并与以前保存的文件副本进行比较,然后使用diff拉出更改。在这里,tail-f似乎完全是错误的方法。实际上,当您:w写入缓冲区时,vim将正常工作。例如:触摸日志;tail-f log更改为不同的终端vim/path/to/log add stuff,然后:w,文本将通过tail显示。是的,vim可以工作,我的意思是它不会同步显示日志,因为您添加文本,直到您需要更新时手动写入。明白了。。。你说得对。您的重定向解决方案是正确的。您还可以重定向stdout等。。写入/tmp/file,然后会出现重定向时写入stdout的任何内容;而不是cat>/tmp/myfile;。但显然,这个解决方案对我有效。谢谢