리눅스의 명령어들. 예를 들어 cat, ls, grep .. 등은 흔히 그냥 명령어로 알고 있지만
사실은 모두 리눅스 유틸리티 입니다. 즉, 프로그램 들이지요.
이를 터미널에서 쉘이 실행 시켜 주는 겁니다.
이녀석들이 단순히 명령어가 아니고 프로그램이라는 증거가 있을 까요?
바로 명령어 뒤에 쓰는 옵션만 봐도 프로그램 이라는 것 을 알 수 있습니다.
프로그램명 다음에 오는 단어를 입력으로 받아 처리 하는 식의 프로그램은
main( int argc, char **argv ) 와 같이 main 함수에서 인자로 받아 처리하는 대표적인 
방식이지요. 꼭 그렇지만은 않겠지만.
어쨌든 리눅스 에서는 이런 유틸간에 데이터를 주고 받는 방법을 제공 합니다.
그것이 바로 파이프 ( | ) 입니다.
간단히 사용예를 들어보면, 
부팅시 어떤 메시지가 나왔는지를 볼때 dmesg 라는 명령으로 부팅시 로그를 모두 확인 할 수 있는데요
이 결과 값을 다른 유틸은 grep 으로 넘겨 원하는 값을 도출 해 볼 수 있습니다.
먼저 부팅 메시지를 확인 해보면, 
]$dmesg
.
생략
.
.
[5077093.861027] SGI XFS Quota Management subsystem
[5077093.922911] JFS: nTxBlock = 8192, nTxLock = 65536
[5077094.032201] NTFS driver 2.1.30 [Flags: R/O MODULE].
[5077094.100680] QNX4 filesystem 0.2.3 registered.
[5077094.169473] Btrfs loaded

와 같이 뭔가가 많이 나옵니다.
내용을 보면 뭐가 초기화 되었고, 뭐가 마운트 됐고, .. 등등의 정보가 나오겠지요.
여기서 만약 어떤 특정 메시지가 나왔는지를 보고 싶다면 아래와 같이 하면 됩니다.

]mdesge | grep [ 찾는 문장]

예를 들어 보기 쉽게 위의 예제에서 "QNX4" 가 들어간 내용이 있었는지 확인 해 보겠습니다.

r2adve@idea:~$ dmesg | grep "QNX4"
[5077094.100680] QNX4 filesystem 0.2.3 registered.
r2adve@idea:~$  

네 . 딱 그 문장이 들어간 라인이 출력 되는군요
파이프. 아주 유용한 녀석 입니다.