리다이렉션: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
잔글 revert edits by 223.62.204.238
태그: m 모바일 웹
32번째 줄:
 
위의 줄은 두 개의 기능을 수행한다: <code>명령어1</code>은 <code>들어오는파일</code>에서 내용을 불러들인 뒤 <code>나가는파일</code>에 기록한다.
 
== 파이프 처리 ==
[[파일:Pipeline.svg|섬네일|세 개의 프로그램의 파이프라인이 텍스트 터미널 위에 실행되는 모습.]]
특정 프로그램이 명시적인 중간 파일이 없더라도, 다른 프로그램의 출력을 읽게 하여 프로그램을 실행할 수 있다.
 
<source lang="bash">
명령어1 | 명령어2
</source>
 
위의 줄은 <code>명령어1</code>을 실행하되, <code>명령어2</code>에 대한 입력으로서 출력을 사용한다.
 
아래의 줄은 두 개의 리다이렉션과 임시 파일을 사용하여 동일한 결과를 얻는다:
 
<source lang="bash">
명령어1 > 임시파일
명령어2 < 임시파일
rm 임시파일
</source>
 
하지만 여기서 <code>명령어2</code>는 <code>명령어1</code>을 마칠 때까지 실행하지 않으며, 중간 결과물뿐 아니라 각 작업에 요구되는 작업 공간을 보유하기 위해 충분히 큰 스크래치 파일이 필요하다. 이를테면, 도스는 파이프 문법을 인식하지만 이러한 이차적 접근을 이용한다.
 
명령어 파이프 처리에 대한 좋은 예로, <code>echo</code>를 다른 명령어와 결합하여 비상호적인 셸에서 상호적인 일을 수행하는 것이다. 이를테면 다음과 같다.
 
<source lang="bash">
echo -e "user\npass" | ftp localhost
</source>
 
위 줄에서 \n은 리턴을 의미한다. 이는 입력 <code>user</code>를 받아 [[파일 전송 프로토콜|ftp]] 클라이언트를 실행하고, Enter 키를 누르고 <code>pass</code>를 입력하는 식이다.
 
도스 환경에서는 format 명령어로 특정 드라이브를 포맷하려면 사용자의 동의를 위해 키보드 입력 Y를 받아야 한다. 다만 다음의 줄을 이용하면
<source lang="dos">
echo y | format c: /q
</source>
사용자의 동의를 구하지 않고(컴퓨터 자판의 Y를 누르지 않고도) 셸이 직접 Y를 누르게끔 하여 C 드라이브를 빠른 포맷으로 포맷할 수 있다.
 
== 표준 파일 핸들로 나가거나 들어오는 리다이렉션 ==