파일을 처리하는 동안 내 스크립트가 링크를 해석하도록 하고 싶습니다.

파일을 처리하는 동안 내 스크립트가 링크를 해석하도록 하고 싶습니다.
> ls -l aliasedname
lrwxr-xr-x  1 anon3202  users  19 Dec 25 05:24 aliasedname -> www/realfilename

내 스크립트가 지정된 링크 (위에 표시된 대로) 에 대한 정보가 아니라 ~/www/realfilename($1)에 대한 정보가 제공된 시기 에 대한 aliasedname세부 정보를 반환하도록 하려고 합니다 .aliasedname

내 생각엔 (어쩌면?) 어떤 유형을 원하는 것 같아요 exec? 그러나 나는 그것에 대해 정말로 모호합니다.

ls나는 , a를 수행하고 이를 평가한 다음 마지막 부분을 잡아서 경로로 사용할 생각이었습니다 cut... 하지만 작업이 많이 필요한 것 같으며 더 간단한(더 우아한) 솔루션이 있어야 합니다.


나는 스크립트를 사용하여 $1로 다양한 작업을 수행하지만 처리를 위해 무엇이든 내 스크립트로 전달될 수 있습니다. 별칭이 아닌 실제 파일을 다루고 있는지 확인하고 싶습니다.

파일( )인지 확인할 수 있지만 if [ -f $1 ]; then별칭을 전달하면 의도가 무엇인지 분명하므로 실패해서는 안 됩니다.

답변1

ls자세한 정보가 필요하면 -H (--dereference-command-line)다음 옵션을 사용하세요.

ls -lH ./aliasedname

답변2

사용해 보는 것은 어떨까요 readlink? man readlink더 알아보기.

예를 들어,

[/tmp]$ ls -l
lrwxrwxrwx. 1 root root 9 Jan 16 10:07 mylink -> test-link
-rw-r--r--. 1 root root 0 Jan 16 10:07 test-link

[/tmp]$ readlink -f mylink 
/tmp/test-link

편집 내용에 따라 "파일 테스트 연산자"

-h 파일은 심볼릭 링크입니다.

관련 정보