내 시스템의 고유 쉘 목록을 얻으려고 합니다. 이 명령을 실행할 때:
cat /etc/passwd | cut -d ':' -f 7 | uniq
나는 얻다:
/bin/bash
/bin/sync
/sbin/shutdown
/sbin/halt
/bin/bash
uniq
왜 내가 원하는 대로 되지 않는지 이해가 안 돼요 . 내가 이해하지 못하는 것은 무엇입니까?
이 출력을 가져와 복사본을 만들고 /bin/bash
복사본의 줄 중 하나를 다른 줄로 바꾼 다음 diff
파일을 시도했지만 출력이 없으므로 숨겨진 문자가 아닌 것 같습니다.
답변1
uniq
이는 남성이 일하는 방식 때문입니다 .
참고: "uniq"는 중복 행을 감지하지 않습니다.인접하지 않는 이상. 입력을 먼저 정렬하거나 "uniq" 없이 "sort -u"를 사용할 수 있습니다.
따라서 사용하기가 더 좋으며 다음이 필요하지 않습니다 cat
.
$ cut -d ':' -f 7 /etc/passwd | sort -u
/bin/bash
/bin/false
/bin/sync
/usr/sbin/nologin
또는 명령
awk -F: '{ print $7 | "sort -u" }' /etc/passwd
@작은자郎제안:
awk -F: '!s[$7]++{print $7}' /etc/passwd
답변2
uniq
이것이 작동 하려면 정렬된 출력을 전달해야 합니다 .
$ cat /etc/passwd | cut -d ':' -f 7 | sort | uniq
/bin/bash
/bin/sync
/sbin/halt
/sbin/shutdown