UNIX
UNIX라는 말을 읽을 때는 역사적인 운영체제 계열, UNIX 상표·인증, Unix 계열의 설계 관습을 구분하는 편이 좋다. 셸과 파일 API가 비슷하다는 이유만으로 모든 운영체제가 UNIX 인증 제품인 것은 아니다.
Linux는 Unix 계열의 프로그래밍 모델을 제공하는 커널이다. Linux 커널과 명령어·라이브러리·서비스를 묶은 배포판은 구성 요소가 다를 수 있다. GNU, BSD, POSIX도 각각 프로젝트·계열·표준이라는 서로 다른 층의 이름이다.
작은 명령을 연결해 보기
다음은 세 줄의 입력에서 중복을 제거하고 정렬한다.
printf '%s\n' banana apple banana | LC_ALL=C sort -u
apple
banana
printf가 텍스트를 만들고, 파이프가 다음 명령의 입력으로 연결하며, sort -u가 정렬과 중복 제거를 한다. LC_ALL=C는 이 명령의 정렬 기준을 로케일에 따라 바뀌지 않게 지정한다.
작은 도구를 연결하면 각 단계의 입력과 출력을 따로 확인할 수 있다. 하지만 “모든 데이터는 텍스트”라는 뜻은 아니다. 파일명에는 공백이나 줄바꿈이 들어갈 수 있으므로 ls 출력을 줄 단위로 나눠 파일 처리에 쓰는 식의 구성은 깨질 수 있다. 도구를 조합할 때는 전달 형식도 맞아야 한다.