심볼릭 링크 대상 파일의 속성(특히 날짜)을 나열하는 방법은 무엇입니까?

심볼릭 링크 대상 파일의 속성(특히 날짜)을 나열하는 방법은 무엇입니까?

입력할 때 ls -la현재 디렉토리에 있는 파일 목록을 얻습니다. 여기서 심볼릭 링크에는 대상 파일도 인쇄됩니다.

기호 링크를 표시할 때 쉘은 기호 링크 자체의 특성(특히 날짜)을 인쇄합니다.

대상 속성을 인쇄하는 옵션이 있습니까?

답변1

-dLlls에 옵션을 추가합니다.

-L쇼 타겟을 말해주세요 ls. -d디렉토리에 들어가지 않도록 지시합니다(파일이 디렉토리인 경우에만 차이가 있습니다). -l긴 목록을 만든다고 합니다(상세하게).

답변2

대부분의 시스템 호출과 애플리케이션은 심볼릭 링크 경로가 제공되면 심볼릭 링크의 대상에서 작업을 수행합니다. 주목할만한 예외는 파일이 아닌 디렉토리 항목(예: unlink()/ rm, link()// )에서 symlink()작동하는 예외 입니다 ln.

파일 메타데이터 정보를 얻는 데에는 두 가지 별도의 시스템 호출이 있습니다: ( lstat()기호 링크 자체에서 작동), stat()(기호 링크 대상에서 작동). Linux의 최신 버전에는 플래그 statx()가 함께 제공됩니다 AT_SYMLINK_NOFOLLOW. 확장된 속성에 대해서는 listxattr()/ llistxattr(), getxattr()/ 도 참조하세요 .lgetxattr()

이를 래핑하는 유틸리티의 경우 기본값은 유틸리티에 따라 다르며 작동 모드를 변경하는 옵션(있는 경우)도 구현에 따라 다릅니다.

ls기본적으로 다음에서 실행됩니다.표적-d, -l, -F, -g, -o, 옵션 중 하나라도 전달되지 않는 한 인수로 제공된 파일의 -n경우 기호 링크 자체에서 작동합니다( lstat()플래그 대신 또는 플래그와 함께 사용됨 stat()).statx()AT_SYMLINK_NOFOLLOW

이러한 옵션 중 하나를 사용하고 싶지만 여전히 기호 링크를 따르고 싶다면 이 -H옵션을 전달할 수 있습니다.

ls -ldH -- "$file"

파일에 대한 정보는 심볼릭 링크가 해결된 후에 보고됩니다.

ls-L해결하라고 지시하는 옵션 도 있습니다모두인수로 제공된 파일에 대한 심볼릭 링크뿐만 아니라 심볼릭 링크. 예를 들어, 링크된 디렉토리가 ls -Ll /symlink-to-dir구문 분석되고 /symlink-to-dir해당 내용이 나열되며, 그 안에 있는 각 기호 링크에 대해 링크 대상의 정보도 나열됩니다. 또한 재귀가 수행되는 방식에도 영향을 줍니다 -R.

기타 도구의 경우:

Command               | default   | change with
----------------------+-----------+--------------
   IRIX stat          | target    | -L
    zsh stat          | target    | -L
    GNU stat          | symlink   | -L
    BSD stat          | symlink   | -L
busybox stat          | symlink   | -L
    AIX istat         | target    | none
    GNU date -r       | target    | none
    GNU find -printf  | symlink   | -follow/-L/-H
  Linux attr          | symlink   | -L
  Linux getfattr      | target    | -h
  Linux getfacl       | target    | -P

특정 수정 시간의 몇 가지 예:

$ date -r link +%FT%T.%N%z # GNU date
2020-03-19T17:57:11.277584965+0000
$ zmodload zsh/stat
$ stat -F %FT%T.%N%z +mtime link
2020-03-19T17:57:11.277584965+0000
$ gstat -Lc %y link # GNU stat
2020-03-19 17:57:11.277584965 +0000
$ ls -lHd --full-time link # GNU ls
drwxr-xr-x 23 root root 29 2020-03-19 17:57:11.277584965 +0000 link/
$ find -H link -prune -printf '%TFT%TT%Tz\n' # GNU find
2020-03-19T17:57:11.2775849650+0000

관련 정보