ls를 grep으로 파이핑("project" 줄)

ls를 grep으로 파이핑("project" 줄)

다음 명령을 고려하십시오.

ls
dir1 dir2 file1
x1   x2   y2

이 출력이 grep 등으로 파이프되면 각 파일/디렉토리가 "항목"으로 처리됩니다.

ls | grep f
file1

ls분명히, a에 의해 생성된 실제 출력과 grep에 의해 처리된 입력 사이에는 차이가 있습니다.

ls | grep fgrep은 라인에서 작동하므로 첫 번째 라인 전체가 표시될 것으로 예상할 수 있습니다 .dir1 dir2 file1

내가 여기서 무엇을 놓치고 있는 걸까요? 이 동작의 메커니즘은 무엇입니까?

답변1

명령은 출력이 TTY로 전송되는 시기를 감지할 수 있습니다. 따라서 이 특별한 경우 ls출력이 TTY로 전송되지 않음을 감지하면 마치 -1매개변수로 전달된 것처럼 동작합니다.

grep다음을 사용하여 특별한 작업을 수행하지 않는 것을 볼 수 있습니다 cat.

ls | cat

답변2

리디렉션될 때 출력이 어떻게 동작하는지 확인하려면 ls다음을 실행해 보세요.

ls | cat

또는

ls -1

이는 ls출력이 TTY로 전송되지 않을 때 작동하는 방식입니다.

관련 정보