더북(TheBook)

입출력이 리다이렉트되면 프로그램의 동작이 달라질까?

대부분의 리눅스 명령과 달리, ls 명령은 표준 출력 스트림의 대상이 화면인지 아닌지(파이프 또는 그 외 대상)를 구분할 수 있다. 이를 구분하는 이유는 사용성 때문이다. 표준 출력이 화면으로 이어져 있다면 ls 명령은 가독성을 배려해 한 줄에 여러 개의 파일명을 출력한다.

$ ls /bin
bash      dir     kmod    networkctl      red     tar
bsd-csh   dmesg   less    nisdomainname   rm      tempfile
...

반면 표준 출력이 화면 외의 대상과 이어져 있다면 한 줄에 하나의 파일명만 출력한다. 이를 확인하기 위해 ls 명령의 출력을 cat3 명령으로 리다이렉트한다. cat 명령은 입력된 내용을 그대로 화면에 출력하는 명령이다.

$ ls /bin | cat
bash
bsc-csh
bunzip2
busybox
...
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.