ls
일반적으로 다음과 같이 인쇄됩니다.
1 1249 1653 23 33 4581 6202 6447 789 836 903 config.gz kpageflags sysrq-trigger
10 1253 1658 24 34 4582 6206 648 79 837 91 consoles loadavg thread-self
1003 1255 1662 251 347 4583 6207 649 791 84 923 cpuinfo locks timer_list
1004 1257 1667 252 35 4689 6209 6799 8 840 925 crypto meminfo timer_stats
1005 1261 167 26 357 48 6232 6986 80 841 998 devices misc uptime
1006 1263 1670 266 36 49 6242 6992 802 846 acpi diskstats modules version
1008 13 1677 27 37 5 6267 6993 803 848 asound dma mounts vmallocinfo
cat
그러나 예를 들어 with 로 파이프하면 ls /proc | cat
얻는 대로 인쇄됩니다 -1
(grep 및 기타 명령에서도 동일하게 작동).
1
10
1003
1004
1005
1006
1008
1010
1012
106
107
1073
108
109
1152
117
118
1247
1249
1253
제 질문은 파이프로 연결되고 인쇄되지 않는다는 것을 어떻게 알 수 있느냐는 것입니다. 아니면 어떻게 된 일입니까?
답변1
ls
다른 많은 프로그램은 출력(또는 입력)이 터미널에 연결되어 있는지 여부를 감지하기 위해 C 함수를 호출합니다 isatty(STDOUT_FILENO)
. 출력이 터미널(예: 파이프 또는 파일)이 아닌 경우 기본적으로 프로그램에 더 친숙한 출력 형식이 사용됩니다.