Bash 如何在终端中查看实时覆盖文件?

Bash 如何在终端中查看实时覆盖文件?,bash,shell,sh,Bash,Shell,Sh,我有一个不断被覆盖的输出文件。终端tail-f filename中有一个命令,当结果附加到输出文件中时,该命令很有用。但是,我想观察不断被覆盖的输出文件的前10或20行。有这样的命令吗?它每1秒刷新一次,并打印文件名的前100行 watch -n 1 head -100 filename 如果使用,您将使用,例如: #!/bin/sh while :; do tail file wait_on -w file done 您可能需要使用pkg install wait_on安

我有一个不断被覆盖的输出文件。终端tail-f filename中有一个命令,当结果附加到输出文件中时,该命令很有用。但是,我想观察不断被覆盖的输出文件的前10或20行。有这样的命令吗?

它每1秒刷新一次,并打印文件名的前100行

watch -n 1 head -100 filename
如果使用,您将使用,例如:

#!/bin/sh

while :; do
    tail file
    wait_on -w file
done
您可能需要使用
pkg install wait_on安装它

在Linux中,您可以使用类似以下内容的
inotifywait

#!/bin/sh

inotifywait --quiet --monitor --event modify file | while read; do
   tail file;
done
根据您的发行版,您可能需要安装
inotifytools
软件包,例如在:
yum安装inotifytools


有关更多选项,请查看此问题的答案:

建议使用php

在命令行中。这不会将整个文件加载到内存中

输出seed.txt的前8192字节

fread()从引用的文件指针读取最多长度字节 手柄一旦出现下列情况之一,读数即停止 遇见


请参见

是否希望每隔一段时间刷新一次,或者仅当文件已更改时才刷新?是否希望或需要保证在每次写入之间至少读取一次文件?
php -r "echo fread(fopen('seed.txt','r'), 8192);"