存在しないファイルを開くと、猫は別のエラーを引き起こします。

存在しないファイルを開くと、猫は別のエラーを引き起こします。

次のコマンドはすべて存在しないファイルを開こうとします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 fooシェル(ここではbash)でコマンドを実行し、cat引数を渡しますfoo。 cat プログラムは、引数をファイル名として解釈するよう選択し、ファイルを開こうとします。あなたが見ているエラーは、(自然に)ファイルを開くことができないcatプログラムで発生したことです。

このバージョンは$ cat < fooシェルで処理されるリダイレクトです。<シェルにファイルを開き、それをstdinにリダイレクトするように指示するシェル演算子。ファイルが存在しないため、「該当ファイルがありません」というメッセージが表示され、cat実行もできません。今回はエラーがシェルで発生し、少し異なって見えます。

そのため、2つの異なるエラーが表示されます。理由は同じです。しかし、2つの異なるプログラム(catとbash)から来ました。

関連情報