다음 명령은 모두 존재하지 않는 파일을 열려고 foo
하지만 오류 메시지는 약간 다릅니다. 이유가 무엇입니까?
$ cat foo
cat: cannot open foo
$ cat < foo
-bash: foo: No such file or directory
답변
cat foo
cat
인수와 함께 명령을 실행합니다 foo
. 화면에 인쇄되는 오류는 전적으로 명령 프로그래머가 결정한 내용에 따라 다릅니다.
cat < foo
이 파일의 내용을 공급 foo
받는 cat
사용하여 명령을 배쉬 표준 입력 리디렉션을 . 파일이 존재하지 않으면 Bash가 불평합니다.
답변
에서는 $ cat foo
쉘 (여기서는 떠들썩한 파티)을 실행 cat
명령 및 매개 변수를 전달한다 foo
. cat 프로그램은 해당 매개 변수를 파일 이름으로 해석하도록 선택하고 파일을 열려고 시도합니다. 당신이 보는 오류는 자연스럽게 파일을 열 수없는 고양이 프로그램에서 발생합니다.
버전 $ cat < foo
은 쉘이 처리하는 리디렉션입니다. <
쉘이 파일을 열고 stdin으로 리디렉션하도록 지시하는 쉘 연산자입니다. 파일이 없으므로 “No such file”이 표시됩니다. 이번에는 오류가 셸 (bash)에서 발생하고 약간 다르게 보입니다.
이것이 두 가지 다른 오류가 나타나는 이유입니다. 원인은 동일하지만 두 개의 다른 프로그램 (cat 및 bash)에서 나옵니다.