为什么cat 0>文件不起作用

时间:2016-12-09 12:35:58

标签: linux unix stdout stdin cat

在Unix中,我知道0 1和2代表stdin stdout和stderr。

根据我的理解,命令cat含义"连接"可以连接不同的文件。

例如,cat file>&1可以连接file和stdout,箭头表示从file到stdout的重定向,因此我们可以看到{{1}的内容来自终端的stdout。

但是,我不明白为什么下面的命令不起作用:
file

我认为这个命令应该有效,因为它意味着连接stdin和cat 0>file并从stdin重定向到file。 但它没有用,我收到了一个错误:

  

cat:标准输入的输入错误:文件号错误

我认为filecat > file完全相同,就像cat 0>filecat file完全一样,但似乎我错了。 ..

令我惊讶的是,cat file>&1cat 1>file是相同的。为什么呢?

1 个答案:

答案 0 :(得分:3)

Syntax 0>file redirects stdin into a file (if that makes sense). Then cat tries to read from stdin and gets EBADF error because stdin is no longer an input stream.

EBADF - fd is not a valid file descriptor or is not open for reading.

Note that redirections (< and >) are handled by the shell, cat does not see 0>file bit.