답변:
이 줄을보십시오 :
readlink -f `which command`
경우 command
당신에 $PATH
, 그렇지 않으면 당신은 당신이 알고있는 경로를 지정해야 변수입니다.
-f
중간 링크 대상이 존재하는 한 존재하지 않는 최종 대상에 대한 경로를 반환합니다 -e
. -e
최종 대상이 없으면 null을 반환합니다.
-f
readlink: illegal option -- f
OSX에서 오류가 발생 했습니다. 잘 제거했습니다.
greadlink
대신 사용할 수도 있습니다 .
Linux에서는 심볼릭 링크가 아닌 것을 찾을 때까지 심볼릭 링크 readlink
의 내용을 읽고 심볼릭 링크에 대한 심볼릭 링크 등을위한 심볼릭 readlink -f
링크를 따릅니다.
scp에는 필요하지 않습니다. scp는 항상 심볼릭 링크를 따릅니다 ( -p
가능한 경우 파일 시간과 모드 를 유지하는 것을 제외하고는 메타 데이터를 무시하고 항상 파일 내용을 복사 함 ).
메타 데이터 scp이 유지할 수 있고 보존 할 수없는 것에 실망한 경우 rsync를 사용하는 것이 좋습니다. 옵션이 없으면 rsync는 메타 데이터를 무시하고 파일 내용을 복사합니다. 일반적으로 사용되는 옵션 -a
은 모든 가든 다양성 메타 데이터 (시간, 기호 링크, 권한 및 소유권)를 유지하며 ACL 및 하드 링크와 같은 이국적인 메타 데이터를 유지하는 옵션이 있습니다.
나는 명령을 사용하여 ls
, stat
, readlink
.
파일 /etc/localtime
을 예로 들어
[flying@lempstacker ~]$ ls /etc/localtime
/etc/localtime
[flying@lempstacker ~]$ ls -l /etc/localtime
lrwxrwxrwx. 1 root root 35 Aug 2 22:41 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
스탯 사용
[flying@lempstacker ~]$ stat /etc/localtime
File: ‘/etc/localtime’ -> ‘../usr/share/zoneinfo/Asia/Shanghai’
Size: 35 Blocks: 0 IO Block: 4096 symbolic link
Device: fd01h/64769d Inode: 272202388 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-23 09:00:59.999887800 +0800
Modify: 2016-08-02 22:41:26.090389904 +0800
Change: 2016-08-02 22:41:26.090389904 +0800
Birth: -
[flying@lempstacker ~]$ stat -c "%N" /etc/localtime
‘/etc/localtime’ -> ‘../usr/share/zoneinfo/Asia/Shanghai’
readlink 사용
[flying@lempstacker ~]$ readlink /etc/localtime
../usr/share/zoneinfo/Asia/Shanghai
[flying@lempstacker ~]$ readlink -f /etc/localtime
/usr/share/zoneinfo/Asia/Shanghai
그 명령 readlink -f
이 더 나은 것 같습니다 .
-f, --canonicalize : 주어진 이름의 모든 구성 요소에있는 모든 심볼릭 링크를 재귀 적으로 따라 가면서 정식화합니다. 마지막 구성 요소를 제외한 모든 구성 요소가 존재해야합니다.
man readlink
Stat은 다음 정보를 제공합니다.
$ stat current
File: `current' -> `/home/user/releases/build/'
...
readlink -f 'which java'
나를 위해 작동하지 않았다.
그러나 이것은했다 :
readlink -f $(which java)
`
하지 '
않았지만 $()
어쨌든 더 나은 연습입니다.
$()
더 나은 방법 인지 설명한다면 기꺼이 투표를하겠습니다 .
command
하지만 더 이상 사용되지 않습니다. 캡슐화 $ ($ (command))가 훨씬 쉽고 특별한 이스케이프가 필요하지 않기 때문에 $ ()를 사용하는 것이 좋습니다. 그렇다면 바람직하다. 첫 번째 예제에서 일반적인 아포스트로피를 사용한 다음 readlink는 이름에 공백이있는 'which java'라는 파일을 찾으려고합니다. 그러나 당신은 자바 바이너리 실행 경로를 찾기 위해 인수 java를 가진 호출 명령입니다.
scp
버전은 기본적으로 심볼릭 링크를 따르지 않습니까? 당신은 당신을 확인하고 아마도 자신의 작업을 저장해야합니다.