我不完全确定如何对这个问题进行分类。感觉就像我在tail
和/或bash
中发现了一个错误,但很明显,这更像是我理解中的错误!
我运行了以下命令:
tail -f -n`wc -l scrape.log` scrape.log
以cat
整个文件和添加的任何新材料。但是,tail
文件两次。运行此命令:
tail -f -n`wc -l scrape.log`
给了我想要的结果,tail
一次该文件。我认为反引号是一个Bash转义工具,在运行下一个命令之前“预处理”一个命令。这是怎么回事?
答案 0 :(得分:9)
当你使用反引号时,你实际上是将一个命令的输出传递给另一个命令。现在让我们看看wc -l
做了什么:
[cnicutar@fresh ~]$ wc -l /etc/passwd
11 /etc/passwd
输出行数和文件名。所以你的命令就变成了:
tail -f -n 11 scrape.log scrape.log
答案 1 :(得分:4)
如果tail
支持,则可以使用
tail -f -n +1 scrape.log
使用文件的第1行开始tail
。
(我故意不回答你的问题,cnicutar已经做了。我只是提出一个可能的选择。)
答案 2 :(得分:1)
tail -f -n $(wc -l < scrape.log) scrape.log
输入重定向会阻止打印文件名。