Khi tôi đang sử dụng ls -la symlinkName
hoặc stat symlinkName
khô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 symlinkName
hoặc stat symlinkName
khô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:
realpath
không có sẵn trên tất cả các phiên bản linux, nhưng readlink
nê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"))'
-f
cờ 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 realpath
hiể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 " realpath
khô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à stat
lệnh sẽ hiển thị nhiều thông tin hơn. Lệnh stat ~/.ssh
trê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 awk
với một system
cuộc gọi readlink
để nhận được đầu ra tương đương ls
vớ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}'