cat 在打开不存在的文件时给出不同的错误

cat 在打开不存在的文件时给出不同的错误

以下两个命令都尝试打开一个不存在的文件foo,但错误消息略有不同。可能是什么原因?

$ cat foo
cat: cannot open foo
$ cat < foo
-bash: foo: No such file or directory

答案1

cat foo

这将运行cat带参数的命令foo。屏幕上打印的错误完全取决于命令程序员的决定cat

cat < foo 

这通过使用以下命令将文件的内容提供foo给命令catBash 标准输入重定向。如果该文件不存在,则抱怨的是 Bash,而不是cat.

答案2

$ cat fooshell(这里是bash)中执行cat命令并传递参数foo。 cat 程序选择将该参数解释为文件名 - 并尝试打开该文件。您看到的错误来自 cat 程序,它(自然)无法打开该文件。

该版本$ cat < foo是由 shell 处理的重定向。<是一个 shell 运算符,它指示 shell 打开文件并将其重定向到 stdin。该文件不存在,因此您会收到“没有此类文件”,cat甚至不会运行。这次错误来自 shell (bash),看起来有点不同。

这就是为什么您会看到两个不同的错误。原因是相同的 - 但它来自两个不同的程序(cat 和 bash)。

相关内容