Khi tôi đang sử dụng ls -la symlinkNamehoặc stat symlinkNamekhông hiển thị tất cả đường dẫn (ví dụ ../../../one/two/file.txt)
Lệnh linux tiết lộ đường dẫn đầy đủ là gì?
Khi tôi đang sử dụng ls -la symlinkNamehoặc stat symlinkNamekhông hiển thị tất cả đường dẫn (ví dụ ../../../one/two/file.txt)
Lệnh linux tiết lộ đường dẫn đầy đủ là gì?
Câu trả lời:
realpathkhông có sẵn trên tất cả các phiên bản linux, nhưng readlinknên có.
readlink -f symlinkName
Ở trên sẽ làm thủ thuật.
Ngoài ra, nếu bạn chưa cài đặt một trong hai cách trên, bạn có thể làm như sau nếu bạn đã cài đặt python 2.6 (hoặc mới hơn)
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
-fcờ và sau đó điều này hoạt động. tức làreadlink symlinkName
realpath <path to the symlink file> nên làm thủ thuật.
man realpathhiển thị ở dưới cùng rằng nó là một phần của "GNU coreutils", mà tôi khá chắc chắn rằng nó luôn có trên Ubuntu, vì vậy mặc dù @IanStapletonCordasco nói rằng " realpathkhông có sẵn trên tất cả các phiên bản linux", nó ít nhất phải có sẵn trên tất cả Tôi tin rằng Ubuntu và các phiên bản phái sinh của Ubuntu.
hương vị unix -> ll symLinkName
OSX -> readlink symLinkName
Sự khác biệt là cách thứ nhất sẽ hiển thị đường dẫn liên kết sym một cách chớp nhoáng và cách thứ hai sẽ hiển thị nó trên bảng điều khiển.
Một cách khác để xem thông tin là statlệnh sẽ hiển thị nhiều thông tin hơn. Lệnh stat ~/.sshtrên màn hình máy của tôi
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: -
Hy vọng điều này có thể giúp một ai đó.
Bạn có thể sử dụng awkvới một systemcuộc gọi readlinkđể nhận được đầu ra tương đương lsvới các đường dẫn liên kết biểu tượng đầy đủ. Ví dụ:
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
Sẽ hiển thị vd
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 -l. Điều này cũng không hoạt động chút nào, cố gắng thực hiện nó trên mọi thứ trong thư mục (không liên kết) và nếu ls của bạn được cấu hình để sử dụng màu sắc thì awk hoàn toàn bị hỏng. chỉ cần sử dụngfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'