反击的论点似乎解释了两次?

时间:2012-08-07 18:49:13

标签: bash shell

我不完全确定如何对这个问题进行分类。感觉就像我在tail和/或bash中发现了一个错误,但很明显,这更像是我理解中的错误!

我运行了以下命令:

tail -f -n`wc -l scrape.log` scrape.log

cat整个文件和添加的任何新材料。但是,tail文件两次。运行此命令:

tail -f -n`wc -l scrape.log`

给了我想要的结果,tail一次该文件。我认为反引号是一个Bash转义工具,在运行下一个命令之前“预处理”一个命令。这是怎么回事?

3 个答案:

答案 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

输入重定向会阻止打印文件名。