bash :: ls의 하드 링크를 시각적으로 구별

bash :: ls의 하드 링크를 시각적으로 구별

나는 사용하고있다세게 때리다우분투의 쉘은 정확합니다.

나는 부분적이다심볼릭 링크~에세게 때리다때에도하드 링크더 쉽게 식별할 수 있기 때문에 더 의미가 있습니다.ㅋㅋㅋ. 대조적으로,하드 링크육안으로 비교해봐야겠네요아이노드숫자. 이는 출력에 비해 더 번거롭습니다.ㅋㅋㅋ"-->"로 대상을 표시하고 다른 색상 구성표를 적용할 수 있는 소프트 링크에 ​​있습니다. 가질 수 있는 방법이 있나요?ㅋㅋㅋ하드 링크와 "일반 파일"을 시각적으로 구별합니까? 예를 들어 참조 횟수가 1보다 큰 파일을 다르게 색칠하는 방법이 있을까요?

개념적으로 하드 링크는 inode의 또 다른 이름일 뿐이고 "일반 파일"과 구별할 수 없으며 기호 링크와 같은 대상 개념이 없지만 내 사용 사례를 얻을 수 있으므로 질문이 올바르게 구성되지 않았다는 것을 이해합니다.

답변1

ls -l출력에는 권한과 소유자 사이의 파일 시스템 항목에 대한 하드 링크 수가 표시됩니다.

$ mkdir foo
$ ls -ld foo
drwxr-xr-x  2 danielbeck  staff  68 15 Aug 18:49 foo

2기본적으로 빈 디렉토리의 foo/.경우 이며 foo. 모든 하위 디렉토리는 해당 ... OS X를 사용하고 있고 정신 상태가 의심스러운 경우가 아니라면 이것이 얻을 수 있는 유일한 디렉토리 하드 링크입니다.

물론 파일에는 "실제" 하드 링크만 표시되므로 1어딘가에 하드 링크가 있다는 것을 제외한 모든 항목이 표시됩니다.

$ touch bar
$ ln bar baz
$ ls -l bar baz
-rw-r--r--  2 danielbeck  staff  0 15 Aug 18:52 bar
-rw-r--r--  2 danielbeck  staff  0 15 Aug 18:52 baz

내 (BSD/OS X)에는 ls하드 링크와 관련된 옵션이 없지만 다음과 같이 하드 링크 수만 인쇄하고 그렇지 않으면 ls -F1( ls -l너무 번거로운 경우) 자체 쉘 함수를 작성할 수 있습니다.

function lss {
    OLDIFS="$IFS"
    IFS=$'\n'
    for line in $( ls -d1 $@ )
        do stat -f '%N%T (%l)' "$line"
    done
    IFS="$OLDIFS"
}

두 개의 하드링크와 관련되지 않은 파일에 대한 출력 qux:

$ lss bar baz qux
bar (2)
baz (2)
qux (1)

관련 정보