표준 입력 및 표준 출력은 명령이 아닙니다.
조립 라인이있는 공장에서 명령을 기계라고 상상해보십시오. 대부분의 기계는 데이터를 공급하기 위해 하나의 컨베이어 벨트와 데이터를 공급하기 위해 하나의 컨베이어 벨트를 갖도록 설계되었습니다. 그것들은 각각 표준 입력과 표준 출력입니다. 표준 오류는 기계 측면에서 리 젝트를 배출 할 수있는 개구부입니다.
+-------+ +------------------+ +------------------+ +------+
| input | | machine A | | machine B | |output|
| reser |=====|<stdin stdout>|=======|<stdin stdout>|=====|bucket|
| ‑voir | → | stderr | → | stderr | → | |
+-------+ +------------------+ +------------------+ +------+
|| ||
위의 다이어그램은 두 대의 기계를 통과하는 컨베이어 벨트를 보여줍니다. 데이터는 왼쪽의 입력 저장소에서 가져오고 기계 A로 공급 된 다음 출력이 기계 B로 더 전달되고 (입력 된 기계 B) 기계 B의 출력이 오른쪽의 출력 버킷에 저장됩니다.
유닉스 용어로 이것을 파이프 라인 이라고합니다 . 파이프는 머신 A를 머신 B에 연결하는 것입니다. 위의 파이프 라인에 대한 쉘 구문은 다음과 같습니다.
<input-file.txt commandA | commandB >output-file.txt
< 리디렉션 기호 연결 쉘을 알려줍니다 commandA파일에의 표준 입력을 input-file.txt시작하기 전에 commandA. 명령 이름 앞뒤에 리디렉션을 넣을 수 있습니다. >리디렉션 기호는 쉘에 commandB표준 출력을 연결하도록 지시합니다 output-file.txt. |가운데 의 파이프 ( " ") 기호는 쉘이 시작하기 전에 commandA표준 출력을 commandB표준 입력 에 연결하도록 지시 합니다.
명령은 하나 이상의 입력과 하나 이상의 출력을 가질 수 있지만 다른 날에는 중요합니다 .