使用tail -F遵循可能尚不存在的文件,它可以跨截断,如下所示:
tail: cannot open `mylog.log' for reading: No such file or directory
tail: `mylog.log' has appeared; following end of new file
run1
run1
run1
tail: mylog.log: file truncated
run2
run2
run2
Run Code Online (Sandbox Code Playgroud)
我只想看到当前运行的输出,因为多个运行适合一个屏幕,很难分辨一个停止在哪里,下一个从哪里开始。在执行运行之前,我发现自己使用
rm mylog.log; clear && tail -F mylog.log
Run Code Online (Sandbox Code Playgroud)
但我必须记住在每次跑步之前都这样做。我意识到,如果tail在发生截断时清除屏幕,它将为我提供我想要的行为,而无需我进行任何交互。
在tail似乎手册页并没有表明这是可能的。我确定我不会是第一个想要这种行为的人,有没有其他人使用其他方式来实现它?
此代码段将起作用:
tail -F $LOGFILE 2>&1 | sed -e "$(echo -e "s/^\(tail: .\+: file truncated\)$/\1\e[2J/")"
Run Code Online (Sandbox Code Playgroud)