심볼릭 링크는 언제 심볼릭 링크와 마찬가지로 링크되는 것으로 간주됩니까?
심볼릭 링크는 다양한 유형의 파일에 연결할 수 있습니다. 예를 들어 mylk
디렉토리에 대한 심볼릭 링크를 가정해 보겠습니다. 다음 두 가지 작업은 서로 다른 작업을 수행합니다.
mv mylk ~
mv mylk/ ~
기호는 링크된 것으로 처리됩니까, 아니면 명령이 기대하는 것 또는 지정 방법(링크를 사용하는 명령에 관계없이)에 따라 자체적으로 종속됩니까? 감사해요.
답변1
파일의 내용에 따라 작동하는 프로그램은 항상 기호 링크가 아닌 대상에 작동합니다. 기호 링크에는 자체 내용이 없기 때문입니다.
파일 메타데이터(타임스탬프, 소유자, 권한 등)에 대해 작동하는 프로그램은 일반적으로 대상에 작동하지만 일부 프로그램은 선택적으로 기호 링크(예: , chown -h
, touch -h
...)에 대해 작동할 수 있습니다.
디렉토리 항목에서 작동하는 프로그램은 일반적으로 기호 링크에서 작동합니다. 이름 바꾸기 및 삭제와 같은 작업은 디렉터리 항목이 무엇이든 관계없이 해당 항목에 대해 수행됩니다. 프로그램이 심볼릭 링크를 따르기를 원하는지 여부에 따라 파일의 메타데이터(파일 유형 포함)에 액세스하기 위한 별도의 시스템 호출이 있습니다(stat
) 아니면(lstat
). 모든 유형의 디렉토리 항목에 대해 작동할 수 있는 일부 프로그램에는 링크가 발견될 때 링크가 아닌 대상에 대해 작동하도록 지시하는 옵션이 있습니다. 예를 들어, 디렉토리( find
, chown -R
, cp -R
...)를 반복적으로 탐색하는 많은 유틸리티는 기본적으로 심볼릭 링크에서 작동하지만 옵션이 전달되면 모든 심볼릭 링크를 따르고 -L
, 명령줄에서는 심볼릭 링크를 따르지만 실행 시에는 그렇지 않습니다. 프로세스 중에 발견된 디렉터리입니다. 옵션이 전달되면 재귀적으로 반복됩니다 -H
.
파일 이름 뒤에 슬래시가 있으면 파일 이름이 디렉터리로 해석됩니다.. 이름이 심볼릭 링크인 경우 해당 내용을 따릅니다. 따라서 mv mylk ~
무엇 mylk
이든(symlink 또는 기타) 이동하십시오. 디렉토리이면 이동하고, 대상이 디렉토리에 대한 심볼릭 링크이면 이동하고, mv mylk/ ~
디렉토리도 아니고 디렉토리에 대한 심볼릭 링크도 아니면 불평합니다. . 이 일반적인 행동mylk
mylk
mylk