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

时间:2018-04-05 17:06:09

标签: bash shell sh

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

3 个答案:

答案 0 :(得分:1)

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

watch -n 1 head -100 filename

答案 1 :(得分:0)

如果使用FreeBSD,您可以使用wait_on,例如:

#!/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

根据您的发行版,您可能需要安装inotify-tools包,例如CentOSyum install inotify-tools

有关更多选项,请查看此问题的答案:https://superuser.com/q/181517/284722

答案 2 :(得分:0)

建议使用 php

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

首先输出 seed.txt 的8192字节。

php -r "echo fread(fopen('seed.txt','r'), 8192);"
  

fread()从引用的文件指针读取长度字节   处理。只要满足以下条件之一,读取就会停止   遇到http://php.net/manual/en/function.fread.php

请参阅https://stackoverflow.com/a/15025877/2494754