다음은 새로운 사용자를 돕기 위해 단순화 된 것입니다.
먼저, 표준 입력 및 표준 출력의 개념을 이해해야합니다.
Linux 및 기타 UNIX 유사 운영 체제에서 각 프로세스에는 표준 입력 ( stdin
) 및 표준 출력 ( stdout
)이 있습니다. 일반적인 상황은 stdin
키보드이고 stdout
화면 또는 터미널 창입니다.
따라서을 실행하면에 ls
출력됩니다 stdout
. 다른 작업을 수행하지 않으면 화면이나 터미널 창으로 이동하여 볼 수 있습니다.
이제 일부 Linux 명령은 사용자와 상호 작용하고이를 사용 stdin
하여 텍스트 편집기 중 하나입니다. 그것은 읽 stdin
일을, 키 입력을 수용 할 다음에 물건을 씁니다 stdout
.
그러나 대화식으로 작동하지 않지만 많은 데이터를 원하는 비 대화식 또는 "필터"명령도 있습니다. 이 명령은 모든 것을 stdin
가지고 무언가를 한 다음에 던질 것입니다.stdout
du
디스크 사용을 나타내는- 라는 또 다른 명령을 살펴 보겠습니다 . du /usr
예를 들어, stdout
다른 Linux 명령과 마찬가지로 해당 디렉토리의 모든 파일 목록을 인쇄 합니다. 크기는 다음과 같습니다.
# du /usr
2312 /usr/games
124 /usr/lib/tc
692 /usr/lib/rygel-1.0
400 /usr/lib/apt/methods
40 /usr/lib/apt/solvers
444 /usr/lib/apt
6772 /usr/lib/gnash
박쥐를 바로 알 수 있듯이, 그것은 분류되지 않았으며 아마 크기 순서대로 정렬하고 싶을 것입니다.
sort
많은 것들을 가져 와서 stdin
정렬 하는 "필터"명령 중 하나입니다 .
우리가 이렇게하면 :
# du /usr | sort -nr
우리는 이것을 얻습니다.
4213348 /usr
2070308 /usr/lib
1747764 /usr/share
583668 /usr/lib/vmware
501700 /usr/share/locale
366476 /usr/lib/x86_64-linux-gnu
318660 /usr/lib/libreoffice
295388 /usr/lib/vmware/modules
290376 /usr/lib/vmware/modules/binary
279056 /usr/lib/libreoffice/program
216980 /usr/share/icons
"파이프" stdout
가 하나의 명령을 stdin
다른 명령과 연결하는 것을 볼 수 있습니다 . 일반적으로 명령의 출력을 필터링, 정렬 또는 조작하려는 경우와 같은 상황에서 사용합니다. 여러 필터 유형 명령을 통해 출력을 처리하려는 경우 캐스케이드 연결될 수 있습니다.
sort
스스로 입력 해도 여전히에서 읽으려고 시도합니다 stdin
. stdin
이 키보드에 연결되어 있기 때문에 Ctrl-D를 누를 때까지 입력을 처리하고 처리합니다. 실제로 대화식으로 사용하기위한 것이 아니기 때문에 메시지가 표시되지 않습니다.
프로그램 stdin
이 대화식 인지 아닌지 알 수 있으므로 일부 프로그램은 자체적으로 또는 파이프 끝에서 발행하면 다르게 작동 할 수 있습니다.
또한와 같이 대화식으로 만 작동하는 프로그램을 파이핑하면 vi
시간이 나빠질 수 있습니다.
파이프는 데이터를 한 위치에서 다른 위치로 저장하지 않고 한 명령에서 다음 명령으로 섞 었다는 점에서 리디렉션과 다릅니다. 따라서 위의 예에서 du
의 출력은 어디에도 저장되지 않습니다. 파이프를 사용하는 이유는 어떤 방식으로 명령의 출력을 처리하기 때문에 파이프로 이것을 원하지 않는 대부분의 시간이지만 tee
케이크를 먹고 먹을 수 있는 명령 이 있습니다. 수신 한 stdin
내용 stdout
과 원하는 파일로 복사 하십시오. bash
내가 모르는 앰퍼샌드 및 괄호와 관련된 일부 구문 에서이 작업을 수행 할 수도 있습니다 .
|
은 이름을 사용하지 않는다는 것입니다. l-hand 명령의 출력은 파이프의 r-hand 측에있는 명령의 입력으로 직접 전달됩니다.