bash - 如何写入支持tail -f的文件
问题描述
是否可以在一个 bash 进程中写入文件并在另一个进程中使用 tail 读取它(与使用tail -f
.
我想打开并不断写一些东西到文件
vi /tmp/myfile
并在其他终端打印写入该文件的内容
tail -f /tmp/myfile
我已经尝试过了,但是在 vi 中保存更改后,tail 不打印任何内容(只有初始行,在保存之前)。
动机:
在我的玩具项目中。我想使用pipeto.me服务构建共享剪贴板。我会在哪里连续写入文件,tail 捕获的所有更改都将通过管道传送到 curl。类似于 pipeto.me 的观看日志示例
tail -f logfile | curl -T- -s https://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 这样的插件,它可以帮助自动保存,同步显示日志。
推荐阅读
- pytorch - 在 Pytorch 0.4、python 2.7 上获取 FileNotFoundError 异常 - 应用修复后
- excel - excel连接字符串-相对路径
- windows - 更改锁定屏幕 Windows 10 powershell
- c# - Asp.Net Core WebApi:创建单元测试
- azure - Azure 数据块从不连接
- regex - GLPI 的 Fail2ban
- javascript - 需要每秒提取网站本地存储
- php - codeigniter 中的动态字段验证
- c# - 我无法使单击的对象编辑选定的数据
- windows - 错误:mkdir ...文件名、目录名或卷标语法不正确