$ sh < foo > bar 이 진술이 문제입니다.

$ sh < foo > bar 이 진술이 문제입니다.

다음 명령은 무엇을 합니까? 저는 신입이고 아직 배우고 있어요.

$ 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명령줄에 언급된 파일에서 읽을 수 있으며, 언급된 파일이 없으면 표준 입력 스트림에서만 읽을 수 있습니다.

관련 정보