심볼릭 링크의 경로 추적

심볼릭 링크의 경로 추적

전체 링크를 인쇄하는 추가 옵션으로 심볼릭 링크를 해결하고 싶습니다. 예를 들어, readlink -f "symlink2"링크의 각 항목을 보고하는 명령을 실행하고 싶습니다 . 즉, "symlink2->symlink1->/path/file" 심볼릭 링크를 확인하려는 경우 위 명령의 결과는 "/path/file"입니다. 다음과 같은 출력을 얻고 싶습니다.

$readlink -f "symlink2
symlink1
/path/file

답변1

한 가지 방법은 자신만의 재귀를 만드는 것입니다 readlink.

function readlinkWithPrint() {
    link=`readlink "$@"`
    [ -e "$link" ] && echo "$link"
    [ -h "$link" ] && readlinkWithPrint "$link"
}

다음은 테스트입니다.

$ touch file
$ ln -s file symlink1
$ ln -s symlink1 symlink2
$ readlinkWithPrint symlink2
symlink1
file

불행하게도 이 기능은 매우 기본적입니다. 처음에 제공하는 옵션은 readlink나머지 옵션에 전파되지 않으며 여러 파일을 읽을 수 없습니다.

답변2

찾고 계시는 것 같아요nameiutil-linux 제품군의 일부이며 임베디드가 아닌 모든 Linux 시스템에서 사용할 수 있습니다.

바라보다이 스레드macOS에 상응하는 정보. 이것소스 코드다른 Unix 변형에서 필요한 경우 대부분 이식 가능해야 합니다.

관련 정보