전체 심볼릭 링크 경로를 보는 방법


128

내가 사용하는 경우 ls -la symlinkName또는 stat symlinkName모든 경로가 표시됩니다 (예를 들어 ../../../one/two/file.txt)

전체 경로를 표시하는 Linux 명령은 무엇입니까?


4
여기서주의해야합니다. ls 또는 stat가 절대 경로를 표시하지 않을 때-링크에는 절대 경로가 없습니다! 이것은 esp입니다. 장치가 다른 상황에서 마운트 될 때 중요합니다 (예 : CD 또는 USB 스틱에 무언가가 있거나 손상된 HDD를 복구하려는 경우). 언급 된 모든 솔루션 (realpath, readlink, ....)은 마운트 된 컨텍스트의 절대 경로 만 표시합니다.
flolo

답변:


225

realpath모든 Linux 버전에서 사용할 수있는 것은 아니지만 readlink그래야합니다.

readlink -f symlinkName

위의 내용이 트릭을 수행해야합니다.

또는 위의 어느 것도 설치되어 있지 않은 경우 Python 2.6 (또는 그 이상)이 설치되어 있으면 다음을 수행 할 수 있습니다.

python -c 'import os.path; print(os.path.realpath("symlinkName"))'

16
OSX를 사용하는 경우 -f플래그를 생략하면 작동합니다. 즉readlink symlinkName
Josh Davenport

6
OSX에서 -f 플래그를 생략하면 상대 경로 만 제공됩니다
timoxley

2
이 질문은 리눅스에 관한 것이 었습니다.
Ian Stapleton Cordasco 2016

27

realpath <path to the symlink file> 트릭을해야합니다.


man realpath맨 아래에 "GNU coreutils"의 일부가 표시됩니다.이 부분은 항상 우분투에서 제공되는 것으로 확신합니다. 따라서 @IanStapletonCordasco가 " realpath모든 Linux 버전에서 사용할 수있는 것은 아닙니다 "라고 말하더라도 최소한 모든 버전에서 사용할 수 있어야합니다. 내가 믿는 우분투 및 우분투 파생 풍미.
Gabriel Staples

10

유닉스 풍미-> ll symLinkName

OSX-> readlink symLinkName

차이점은 첫 번째 방법은 깜박이는 방식으로 sym 링크 경로를 표시하고 두 번째 방법은 콘솔에 표시합니다.


질문은 상대 경로 (../../file.txt)가 아닌 전체 / 절대 경로를 구체적으로 묻는 것입니다. 이 두 답변 모두 상대 경로를 제공합니다.
wisbucky

3

정보를 보는 또 다른 방법은 stat더 많은 정보를 표시하는 명령입니다. stat ~/.ssh내 컴퓨터 디스플레이의 명령

File: ‘/home/sumon/.ssh’ -> ‘/home/sumon/ssh-keys/.ssh.personal’
  Size: 34          Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d  Inode: 25297409    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/   sumon)   Gid: ( 1000/   sumon)
Access: 2017-09-26 16:41:18.985423932 +0600
Modify: 2017-09-25 15:48:07.880104043 +0600
Change: 2017-09-25 15:48:07.880104043 +0600
 Birth: -

이것이 누군가를 도울 수 있기를 바랍니다.


1

호출 awk과 함께 사용 하여 전체 심볼릭 링크 경로 가있는 출력과 동일한 결과를 얻을 수 있습니다 . 예를 들면 :systemreadlinkls

ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'

예를 들어 표시됩니다.

thin_repair ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_restore ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_rmap ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_trim ->/home/user/workspace/boot/usr/bin/pdata_tools
touch ->/home/user/workspace/boot/usr/bin/busybox
true ->/home/user/workspace/boot/usr/bin/busybox

ls는 readlink없이 할 수 있습니다. 그냥 사용하십시오 ls -l. 이것은 또한 전혀 작동하지 않으며 디렉토리 (비 링크)의 모든 것에 대해 시도하고 ls가 색상을 사용하도록 구성된 경우 awk가 완전히 중단됩니다. 그냥 사용find . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'
Hashbrown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.