존재하지 않는 파일을 열 때 고양이가 다른 오류를 발생시킵니다.

존재하지 않는 파일을 열 때 고양이가 다른 오류를 발생시킵니다.

다음 명령은 모두 존재하지 않는 파일을 열려고 시도 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실행도 되지 않습니다. 이번에는 오류가 셸(bash)에서 발생하며 약간 다르게 보입니다.

그렇기 때문에 두 가지 다른 오류가 표시됩니다. 이유는 동일합니다. 하지만 두 가지 다른 프로그램(cat 및 bash)에서 비롯되었습니다.

관련 정보