shell piped bash命令执行的顺序是什么?

iibxawm4  于 11个月前  发布在  Shell
关注(0)|答案(1)|浏览(91)

此问题在此处已有答案

How can I use a file in a command and redirect output to the same file without truncating it?(14个答案)
18天前关门了。
在Linux(例如Ubuntu)上,如果我有一个文本文件test.txt,其中包含以下内容:

one
two
three

字符串
然后我运行以下wc命令来计算文件中的行数:

wc -l test.txt


我收到的预期输出为:

3 test.txt


然而,当我运行相同的命令时,然后将wc命令的输出管道到相同的文件名:

wc -l test.txt > test.txt


然后cat文件test.txt:

cat test.txt


我收到以下输出,表明test.txt现在包含0行数据:

0 test.txt


难道wc -l test.txt命令不应该先处理,然后临时存储该命令的结果,然后将输出通过管道传输到文件吗?
如果它这样做了,那么第二个wc -l命令应该产生与第一个相同的输出,但它没有。

ipakzgxi

ipakzgxi1#

FYI,这不是管道,而是输出重定向。
重定向被记录为在 * wc运行之前打开test.txt进行写入(在过程中截断它)*,更不用说在wc开始从同一个文件读取之前。

相关问题