존재하지 않는 파일을 열 때 다른 오류가 발생합니다. 무엇입니까? $ cat foo cat:

다음 명령은 모두 존재하지 않는 파일을 열려고 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)에서 나옵니다.