리디렉션 연산자를 제거해도 출력은 변경되지 않습니다. 왜?

리디렉션 연산자를 제거해도 출력은 변경되지 않습니다. 왜?

어딘가에서 리디렉션을 사용하는 것을 보고 오타라고 생각했습니다.

grep root < /etc/passwd

하지만 실행한 후에는 동일한 출력이 나오는 것을 볼 수 있습니다 grep root /etc/passwd.

$ grep root < /etc/passwd
root:x:0:0:root:/root:/bin/bash

$ grep root   /etc/passwd
root:x:0:0:root:/root:/bin/bash

같은 일이 일어났습니다.

cat < /etc/passwd
cat   /etc/passwd

그러나 다음 명령과 함께 사용하면 리디렉션이 무시됩니다 ls.

ls < /etc/passwd

동일한 출력을 인쇄하지 않습니다

ls  /etc/passwd

뭐가 문제 야?

답변1

파일과 함께 작동하는 많은 유틸리티는표준 입력(표준 입력)을 스트림 입력으로 사용하거나 파일 이름을 인수로 받아들입니다. 귀하의 < file예제는 파일 출력을 유틸리티로 리디렉션합니다. 파일은 쉘에 의해 열리고 다음을 통해 유틸리티로 전달됩니다.표준 입력..

반면에 cat file,고양이열기 및 읽기 처리문서이며 리디렉션이 포함되지 않습니다.

ls파일은 읽히지 않으므로 파일 이름을 인수로 사용하지 않습니다.열어서 읽어보세요file.. (파일 이름 마스크를 허용합니다)... 의 경우 ls쉘의 열린 파일을 읽는 프로세스가 없기 때문에 리디렉션 작업이 실제로 무시됩니다...

유틸리티가 어떻게 작동하는지 확인하려면 man utility-name터미널...을 입력하십시오.남성는 약어이다수동...예를 들어. man cat당신에게 선물고양이 핸드북

관련 정보