此问题在此处已有答案:
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命令应该产生与第一个相同的输出,但它没有。
1条答案
按热度按时间ipakzgxi1#
FYI,这不是管道,而是输出重定向。
重定向被记录为在 *
wc
运行之前打开test.txt
进行写入(在过程中截断它)*,更不用说在wc
开始从同一个文件读取之前。