심볼릭 링크는 언제 연결 대상으로 취급되고 심볼릭 링크로 취급됩니까?

심볼릭 링크는 언제 연결 대상으로 취급되고 심볼릭 링크로 취급됩니까?

심볼릭 링크는 언제 연결 대상으로 취급되고 심볼릭 링크로 취급됩니까?

심볼릭 링크는 다양한 유형의 파일에 연결할 수 있습니다. 예를 들어 mylk디렉터리에 연결되는 심볼릭 링크를 생각해 보세요. 다음 두 가지 작업은 서로 다른 작업을 수행합니다.

mv mylk ~

mv mylk/ ~

링크하는 것으로 취급되는 기호 또는 그 자체가 명령에 의해 예상되는 기호 또는 지정 방법에 따라 달라지나요(링크를 사용하는 명령에 관계없이)? 감사해요.

답변1

파일의 내용에 따라 작동하는 프로그램은 항상 기호 링크가 아닌 대상에서 작동합니다. 기호 링크에는 자체 내용이 없기 때문입니다.

파일의 메타데이터(타임스탬프, 소유자, 권한 등)에 따라 작동하는 프로그램은 일반적으로 대상에서 작동하지만 일부 프로그램에는 대신 기호 링크에서 작동하는 옵션이 있습니다(예: chown -h, touch -h, ...).

디렉토리 항목에 대해 작동하는 프로그램은 일반적으로 기호 링크에 대해 작동합니다. 이름 바꾸기 및 삭제와 같은 작업은 그것이 무엇이든 디렉토리 항목에 적용됩니다. 프로그램이 기호 링크를 따르기를 원하는지 여부에 따라 파일의 메타데이터(파일 유형 포함)에 액세스하기 위한 별도의 시스템 호출이 있습니다(stat) 아니면 (lstat). 모든 유형의 디렉토리 항목에 대해 작동할 수 있는 일부 프로그램에는 링크를 찾을 때 링크 대신 대상에 대해 작동하도록 지시하는 옵션이 있습니다. 예를 들어, 디렉터리를 재귀적으로( find, chown -R, cp -R, …) 순회하는 많은 유틸리티는 기본적으로 기호 링크에서 작동하지만 옵션을 전달하면 모든 기호 링크를 따르며 -L, 명령줄의 기호 링크를 따르지만 도중에 발견된 디렉터리에 대한 기호 링크는 따르지 않습니다. 옵션을 전달하면 재귀 순회가 수행됩니다 -H.

파일 이름 뒤에 슬래시가 있으면 파일 이름이 디렉터리로 해석됩니다.. 이름이 심볼릭 링크이면 따라갑니다. 따라서 mv mylk ~무엇 mylk이든(기호 링크 등) 이동하고, 디렉터리인 경우 mv mylk/ ~이동하고 , 대상이 디렉터리에 대한 기호 링크인 경우 이동하고, 디렉터리도 아니고 디렉터리에 대한 기호 링크도 아닌 경우 불평합니다. 이 일반적인 행동mylkmylkmylk

관련 정보