예를 들어 내 스크립트에는 다음과 같은 유형의 파일 경로가 있습니다.
/path/to/some/file/../../file1.txt
readlink
해당 경로를 실제 물리적 형태로 변환하기 위해 호출할 수 있는 명령이 있습니까 ?
/path/to/file1.txt
답변1
아, 너무 성급한 질문이군요. Linux에서는 스위치 readlink
와 함께 사용하는 것이 답입니다 -m
.
$ readlink -m /home/saml/web/../web_login_form_examples/basic-php-parsing.zip
/home/saml/web_login_form_examples/basic-php-parsing.zip
읽기 링크 매뉴얼 페이지
-m, --canonicalize-missing
canonicalize by following every symlink in every component of the
given name recursively, without requirements on components existence
답변2
심볼릭 링크에 관심이 없고 file.txt
파일이 존재한다고 가정하는 경우:
filename=/path/to/file1.txt
canonical_directory=$(cd -- "$(dirname -- "$filename")/" && pwd -P)
echo "$canonical_directory/${filename##*/}"
이것은 완전히 이식 가능합니다(일부 POSIX 이전 호기심을 제외하고).