다음 명령을 고려하십시오.
ls
dir1 dir2 file1
x1 x2 y2
이 출력이 grep 등으로 파이프되면 각 파일/디렉토리가 "항목"으로 처리됩니다.
ls | grep f
file1
ls
분명히, a에 의해 생성된 실제 출력과 grep에 의해 처리된 입력 사이에는 차이가 있습니다.
ls | grep f
grep은 라인에서 작동하므로 첫 번째 라인 전체가 표시될 것으로 예상할 수 있습니다 .dir1 dir2 file1
내가 여기서 무엇을 놓치고 있는 걸까요? 이 동작의 메커니즘은 무엇입니까?
답변1
명령은 출력이 TTY로 전송되는 시기를 감지할 수 있습니다. 따라서 이 특별한 경우 ls
출력이 TTY로 전송되지 않음을 감지하면 마치 -1
매개변수로 전달된 것처럼 동작합니다.
grep
다음을 사용하여 특별한 작업을 수행하지 않는 것을 볼 수 있습니다 cat
.
ls | cat
답변2
리디렉션될 때 출력이 어떻게 동작하는지 확인하려면 ls
다음을 실행해 보세요.
ls | cat
또는
ls -1
이는 ls
출력이 TTY로 전송되지 않을 때 작동하는 방식입니다.