在Unix中,我知道0 1和2代表stdin stdout和stderr。
据我了解,命令cat
意思是“连接”,可以连接不同的文件。
例如,cat file>&1
可以连接file
和stdout,箭头表示从file
重定向到stdout ,这样我们就可以从终端 stdout 看到文件
的内容。
但是,我不明白为什么下面的命令不起作用:
cat 0>文件
我认为这个命令应该有效,因为它意味着连接标准输入和文件
并执行从标准输入到文件
的重定向。
但是它不起作用,并且出现错误:
cat: input error on standard input: Bad file number
我认为cat > file
和cat 0>file
是完全一样的,就像cat file
和cat file >&1
完全相同,但看来我错了......
令我惊讶的是,cat 1>file
和 cat > file
是相同的。为什么?
最佳答案
语法 0>file
将 stdin
重定向到文件(如果有意义的话)。然后 cat
尝试从 stdin
读取并收到 EBADF
错误,因为 stdin
不再是输入流。
EBADF
- fd is not a valid file descriptor or is not open for reading.
请注意,重定向(< 和 >)由 shell 处理,cat 看不到 0>file
位。
关于linux - 为什么 cat 0>file 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060656/