다음 명령은 무엇을 합니까? 저는 신입이고 아직 배우고 있어요.
$ sh < foo > bar
이와 같은 더 많은 질문을 명확하게 이해할 수 있도록 어떻게 단계별로 설명할 수 있습니까?
답변1
그것을 분석해 봅시다. 명령은 세 부분으로 나누어집니다.
sh
sh
실행할 프로그램의 이름입니다. 이 경우 sh
.
< foo
<
simbol은 다음 단어가 파일 이름이고 명령 쉘(sh와 관련되지 않은 명령을 실행하는 쉘, 우연히 쉘이 되는 호출된 프로그램)이 표준 입력에 추가된다는 것을 의미합니다 foo
. 이름이 Content 기호 뒤에 오는 파일을 추가합니다.
> bar
>
기호 명령 쉘은 실행 프로그램의 표준 출력을 파일에 추가합니다 bar
.
이러한 리디렉션 경로는 프로그램 실행이 시작되기 전에 설정됩니다.
따라서 전체 명령은 sh < foo > bar
셸에서 실행됩니다. 프로그램이 sh
파일에서 명령을 읽고 foo
그 출력을 파일에 저장하도록 합니다 bar
. 파일이 foo
없으면 오류가 발생합니다. 셸의 동작은 사용하는 셸의 옵션에 따라 결정되는 파일 존재 여부에 따라 달라집니다 bar
.noclobber
답변2
일반적으로 말하면,
$ utility <input >output
결과적으로 utility
처형될 것이다표준 입력 스트림파일 input
과 그 파일 에 연결표준 출력 스트림파일에 연결합니다 output
.
해당 행은 $
쉘 프롬프트로 시작됩니다(입력하지 않음).
sh
쉘 명령 해석기 의 경우 쉘 명령이 sh
입력 파일( foo
귀하의 경우)에서 읽혀지고 실행되며 모든 출력이 출력 파일( bar
귀하의 경우)에 기록됩니다. 진단 메시지(오류 및 경고)는 일반적으로 작성되므로 터미널에 계속 표시됩니다.표준 오류 스트림, 언급한 명령줄은 특정 위치로 리디렉션되지 않습니다.
언급한 명령은 거의 동일한 효과를 갖습니다.
$ sh foo >bar
이후 sh
명령줄에 언급된 파일에서 읽을 수 있으며, 언급된 파일이 없으면 표준 입력 스트림에서만 읽을 수 있습니다.