
코드를 이해할 수 없습니다: ls -l /projects/ghosttrail | tail -n +2 | sed 's/\s\s*/ /g' | cut -d ' ' -f 3 | sort | uniq -c
. 각 단계에서 무슨 일이 일어나고 있는지 자세히 설명해 줄 수 있는 사람이 있나요? 각 명령을 하나씩 추가하여 직접 수행할 수 있다는 것을 알고 있지만 코드가 작동하지 않으며 후행 +2 매개변수의 의미나 sed 명령을 전달하는 방법 및 수행하지 않는 이유와 같은 몇 가지 사항을 이해할 수 없습니다. 't take cut 명령의 네 번째 열입니다.
답변1
이전 명령의 출력이 다음 명령의 입력으로 사용되는 파이프라인 단계:
ls -l /projects/ghosttrail
디렉터리 내용(점으로 시작하지 않음)과 세부 정보를 나열합니다.tail -n +2
출력은 라인 2에서 시작됩니다(첫 번째 라인 제거). 아니요+
,tail
마지막 두 줄(줄 수로 지정-n
, 기본값은 10)이 표시됩니다.sed 's/\s\s*/ /g'
여러 개의 연속 공백을 단일 공백으로 바꿉니다.cut -d ' ' -f 3
세 번째 필드(사용자 이름)를 가져옵니다.sort | uniq -c
고유한 행을 정렬하고 계산합니다. 이는 에 설명된 대로 인접하지 않으면 중복 행이 감지되지 않기sort
때문에 사용됩니다.uniq
man uniq
.
GNU를 사용하여 동일한 결과를 얻는 또 다른 방법find
:
find . -maxdepth 1 -not -name '.*' -printf '%u\n' | sort | uniq
find
-printf '%u\n'
작업 디렉터리에 사용자 이름을 나열합니다(옵션). -maxdepth 1
하위 디렉터리 검색을 방지합니다. -not -name '.*'
도트 파일은 포함되지 않습니다. sort | uniq
원래 예제와 동일한 목적으로 사용됩니다.