유닉스 설계 철학을 한 문장으로 요약한 더그 매클로이(Doug McIlroy)의 말이 있다. "한 가지 일을 잘하는 프로그램을 만들어라. 그리고 프로그램들이 협력하도록 만들어라." 이 철학을 현실로 만든 것이 바로 **파이프(pipe)**와 **리다이렉션(redirection)**이다. ls는 파일 목록만 뽑고, grep은 패턴만 거르고, wc는 개수만 센다 — 이 작은 도구들을 파이프로 연결하면 "오늘 수정된 .log 파일이 몇 개인가" 같은 복합 질문에 한 줄로 답할 수 있다.
오늘은 그 연결의 기반이 되는 파일 디스크립터(file descriptor) 개념부터 리다이렉션 기호, 파이프와 필터, 그리고 셸이 명령을 해석하기 전에 먼저 처리하는 메타문자·와일드카드·따옴표를 깊이 다룬다. 이 영역은 1급 실기와 필기 모두에서 빠지지 않는다.
리다이렉션을 이해하려면 먼저 **파일 디스크립터(FD)**를 알아야 한다. 리눅스에서 모든 프로세스는 시작할 때 세 개의 표준 입출력 통로를 부여받는다.
| FD 번호 | 이름 | 약어 | 기본 연결 대상 |
|---|---|---|---|
| 0 | 표준 입력 | stdin | 키보드 |
| 1 | 표준 출력 | stdout | 화면(터미널) |
| 2 | 표준 에러 | stderr | 화면(터미널) |