소프트 링크의 대상이 디렉터리인지 파일인지 확인하는 방법은 무엇입니까?

소프트 링크의 대상이 디렉터리인지 파일인지 확인하는 방법은 무엇입니까?

주어진 ll명령의 출력은 다음과 같습니다

#> ll
lrwxrwxrwx ...

소프트 링크의 대상이 "lrwxrwxrwx"의 디렉터리인지 파일인지 확인하는 방법은 무엇입니까?

답변1

-Fls에 대한 인수를 사용하여 다음을 얻을 수 있습니다.

   -F, --classify
          append indicator (one of */=>@|) to entries

즉:

# ln -s videos Videos
# ls -l
lrwxrwxrwx. 1 guido guido    6 Jan 23 14:11 videos -> Videos
# ls -lF
lrwxrwxrwx. 1 guido guido    6 Jan 23 14:11 videos -> Videos/

어쨌든 다음과 같이 디렉토리에 대한 심볼릭 링크를 만드는 것이 좋습니다.

# ln -s Videos/ videos

이 경우 정렬 옵션 없이도 후행 슬래시가 표시됩니다.

답변2

ll(셸 별칭이라고 가정 ) 의 출력에는 ls -l심볼릭 링크의 모드/권한에 이 정보가 포함되어 있지 않습니다. 리눅스(심볼릭 링크(2)):

   The  permissions  of  a  symbolic link are irrelevant; the ownership is
   ignored when following the link, but is checked when removal or  renam-
   ing  of  the  link is requested and the link is in a directory with the
   sticky bit (S_ISVTX) set.

다른 곳에서 제안된 것 외에도 ls스크립팅에 적합한 덜 장황한 방법이 있습니다.

file-L심볼릭 링크를 따르도록(역참조) 지원 :

$ file /usr/local/bin/xzcat
/usr/local/bin/xzcat: symbolic link to `xz'

$ file -L /usr/local/bin/xzcat
/usr/local/bin/xzcat: ELF 32-bit LSB executable, [...]

$ file  /var/adm
/var/adm: symbolic link to `log'

$ file -L /var/adm   
/var/adm: directory

-L옵션은 그렇지 않습니다.POSIX그러나 최신 Linux 및 *BSD에서는 작동해야 합니다. 여러 개의 심볼릭 링크를 따라갑니다(그렇지 ls않습니다). 보다 강력한 사용을 위해 0으로 구분된 파일 이름 file -L -b --mime-type /var/adm과 같은 다양한 출력 형식도 지원합니다 .-0

GNU는 stat더 간단합니다:

$ stat -c %F /var/adm
symbolic link

$ stat -L -c %F /var/adm
directory

이 옵션은 파일 유형만 출력됨을 나타내는 -Lfor 와 동일한 효과를 갖습니다 file.-c %Fstat통계(1)자세한 내용은 매뉴얼 페이지를 참조하세요. *BSD는 statGNU와 다르며 stat형식 문자열도 다릅니다. 대신 사용하십시오 -f %HT.

답변3

내 생각에 당신이 원하는 것은 다음과 같습니다.

ls -l filename

man당신의 친구입니다:

man ls

관련 정보