Linux wc命令&文件描述符

时间:2017-03-23 17:54:51

标签: linux terminal

在linux终端中,

$ echo hi > foo
$ wc foo > foo
$ cat foo
0 0 0 foo (Output)
$

但是如果

$ echo hi >foo
$ wc foo
1 1 3 foo (Output)
$

为什么这些输出会有所不同?

2 个答案:

答案 0 :(得分:1)

将输出重定向到文件时,首先清空该文件。因此,当wc尝试读取文件时,文件中不包含任何内容。

一般情况下,你不应该尝试使用相同的文件作为输入和输出,它几乎不会工作。

答案 1 :(得分:1)

正如Barmar在他的回答中所说,' > '符号在将新数据写入要重定向输出的文件之前清空文件。所以你真正在做的是在清空文件上使用 wc

您可以使用以下代码附加('>>')输出,而不是截断输出:

$ wc foo >> foo
$ cat foo
hi
1 1 3 foo


要更深入地了解Linux中的I / O重定向,请按照以下文章详细介绍该主题。

An Introduction to Linux I/O Redirection