다음 명령은 모두 존재하지 않는 파일을 열려고 시도 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
명령에 공급함으로써 수행됩니다.cat
Bash 표준 입력 리디렉션. 파일이 존재하지 않으면 Bash는 cat
.
답변2
$ cat foo
셸(여기서는 bash) 에서 명령을 실행하고 cat
인수를 전달합니다 foo
. cat 프로그램은 인수를 파일 이름으로 해석하도록 선택하고 파일을 열려고 시도합니다. 당신이 보고 있는 오류는 (자연적으로) 파일을 열 수 없는 cat 프로그램에서 발생한 것입니다.
이 버전은 $ cat < foo
셸에서 처리되는 리디렉션입니다. <
셸에 파일을 열고 이를 stdin으로 리디렉션하도록 지시하는 셸 연산자입니다. 파일이 존재하지 않으므로 "해당 파일이 없습니다"라는 메시지가 표시되고 cat
실행도 되지 않습니다. 이번에는 오류가 셸(bash)에서 발생하며 약간 다르게 보입니다.
그렇기 때문에 두 가지 다른 오류가 표시됩니다. 이유는 동일합니다. 하지만 두 가지 다른 프로그램(cat 및 bash)에서 비롯되었습니다.