
리눅스의 쉘에서 Command로 실행되는 프로세스는 다음 세가지 스트림을 가지고 있다.
표준 입력이나 표준 출력을 키보드나 화면으로 한느 것이 아니라 방향을 바꿔(리다이렉션) 파일로 입력을 받거나 파일로 출력하도록 변경하는 행위를 의미한다.
(명령) > (파일) : 표준 출력으로 출력하는 것을 화면이 아닌 특정 파일로 출력.
ex. ls > files.txt
: ls 로 출력되는 표준 출력 스트림의 방향을 files.txt 로 바꾼다. (files.txt 에 ls 로 출력되는 결과가 저장됨)
(명령) >> (파일) : 명령의 결과를 기존 파일의 끝 부분부터 추가.
ex. head < files.txt
: 기존에 있는 files.txt 파일 끝에, ls 출력 결과를 추가한다.
'|'를 사용하여 어떤 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 사용하게 하는 것이다.

ex. ls | grep files.txt
ls 명령을 통한 출력 내용이 grep 명령의 입력 스트림으로 들어간다. grep files.txt 는 grep 명령의 입력 스트림을 검색해서 files.txt 가 들어 있는 입력 내용만 출력해준다.
따라서, 해당 명령어는 ls명령으로 해당 디렉토리/파일 중에 files.txt 파일이 있는지를 출력하는 명령어이다.
[option]
-i : 영문의 대소문자를 구별하지 않는다.
-v : pattern을 포함하지 않는 라인을 출력한다.
-n : 검색 결과의 각 행의 선두에 행 번호를 넣는다(first line is 1).
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 개수만 출력한다.
-r : 하위 디렉토리까지 검색한다