일반적으로 grep은 단독으로 사용하기보다 파이프로 다른 명령과 조합해서 결과를 얻는 데 유용하게 씁니다. 파일 목록을 출력하는 ls -l 결과에 grep을 사용하면 파일 목록에서 data라는 문자열을 포함한 결과만 표시할 것입니다.
supreme@master:~$ ls -l | grep data
-rw-rw-r-- 1 supreme supreme 78 7월 25 20:27 teamdata
Q |가 뭔가요?
A 파이프(pipe)라고 합니다. 여러 명령을 동시에 사용하는 도구로 프로세스 사이에 정보를 전달하는 통로 역할을 수행합니다. 앞서 표준 입력 장치는 키보드, 표준 출력 장치는 모니터 화면이지만 <나 >를 이용해서 입출력을 재지정할 수 있다고 배웠습니다. 파이프는 일괄적으로 출력을 입력으로 보내 처리합니다. ‘명령A | 명령B’라고 입력하면 명령A의 출력을 명령B의 입력으로 보내 버립니다.
홈 디렉터리에서 ls -l 명령을 실행하면 숨김 파일까지 모두 표시하므로 출력 결과가 한 화면을 넘는 경우가 일반적입니다. 파일 목록이 스크롤되는 내용을 화면 단위로 끊어 주는 more나 less와 조합해서 ls -l을 사용하면 훨씬 보기가 수월할 것입니다. 파이프를 이용하면 ls -l 명령 결과를 more와 less로 넘겨서 처리합니다.
supreme@master:~$ ls -al | more
‘명령A | 명령B | 명령C’는 명령A의 출력을 명령B의 입력으로, 다시 명령B의 출력을 명령C의 입력으로 전달합니다. 파일 목록을 조회(ls -l)해서 역순으로 정렬(sort -r)하고 화면 단위로 결과를 출력(more)하는 명령은 다음과 같습니다.
supreme@master:~$ ls -al | sort -r | more