입출력이 리다이렉트되면 프로그램의 동작이 달라질까?
대부분의 리눅스 명령과 달리, 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
...