'ls |은 무슨 뜻인가요? file.txt' 정렬은 무엇을 합니까?

'ls |은 무슨 뜻인가요? file.txt' 정렬은 무엇을 합니까?

저는 단지 쉘 명령을 배우고 있습니다. 더 구체적으로는 파이프를 배우고 있습니다.

이제 다음 명령을 구별할 수 없습니다: ls | sort file.txtsort file.txt. 분명히 차이가 있어야 합니다.

누군가 무슨 일이 일어나고 있는지 설명해 주시겠습니까?

답변1

두 명령의 표시 결과는 동일 ls | sort file.txt합니다 .sort file.txt

sort file.txt행을 사전순으로 정렬 file.txt하고 결과를 인쇄합니다.

ls | sort file.txtls현재 디렉터리에 이름 목록을 생성하기 위해 호출됩니다 . 이 목록은 에서 읽혀지므로 sort file.txt의 이름 목록을 무시하고 대신 정렬된 콘텐츠를 출력으로 생성합니다. 이 경우 표준 입력에서 아무것도 읽지 않았기 때문에 의 출력은 폐기됩니다 .sortfile.txtlsfile.txtlssort

ls | sort이를 사용하여 출력 행 ls(이미 정렬되어 있음) 을 정렬 할 수 있습니다 . sort읽을 출력은 읽을 특정 파일 이름이 지정되지 않았기 때문에 ls표준 입력 스트림(파이프된 출력 스트림)에서 읽혀집니다. ls그러나 Unix 파일 이름은 텍스트 줄이 필요한 도구를 사용하여 처리되지 않을 수 있습니다. 이러한 파일 이름에는 개행 문자가 포함될 수 있기 때문입니다.

관련 정보