在linux终端中,
$ echo hi > foo
$ wc foo > foo
$ cat foo
0 0 0 foo (Output)
$
但是如果
$ echo hi >foo
$ wc foo
1 1 3 foo (Output)
$
为什么这些输出会有所不同?
答案 0 :(得分:1)
将输出重定向到文件时,首先清空该文件。因此,当wc
尝试读取文件时,文件中不包含任何内容。
一般情况下,你不应该尝试使用相同的文件作为输入和输出,它几乎不会工作。
答案 1 :(得分:1)
正如Barmar在他的回答中所说,' > '符号在将新数据写入要重定向输出的文件之前清空文件。所以你真正在做的是在清空文件上使用 wc 。
您可以使用以下代码附加('>>')输出,而不是截断输出:
$ wc foo >> foo
$ cat foo
hi
1 1 3 foo
要更深入地了解Linux中的I / O重定向,请按照以下文章详细介绍该主题。