คิดออกว่าเส้นทางที่ไม่ใช่ symlink จะเป็นอย่างไร


10

บนลีนุกซ์ถ้าฉันมีซีดีอยู่แล้วและตอนนี้อยู่ในไดเรกทอรีแล้วมีวิธีที่จะคิดออกว่าเส้นทางที่แท้จริงไปยังไดเรกทอรีนั้นคืออะไรถ้าฉันไม่ได้ใช้ลิงก์สัญลักษณ์เพื่อไปที่นั่น

พิจารณา:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5

หรือ:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4 4
$ cd 4/5
$ pwd 
/home/dave/tmp/4/5

มีวิธีที่จะคิดออกว่า / home / dave / tmp / 5 เป็นจริง / home / dave / 1/2/3/4/5 หรือไม่?

คำตอบ:


13

สำหรับใช้กับcdใช้pwd -P:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5
$ pwd -P
/home/dave/tmp/1/2/3/4/5

สำหรับลิงก์สัญลักษณ์ทั่วไปให้ใช้readlink:

$ cd ..
$ readlink 5
1/2/3/4/5

หรือls -l(ด้วย-dสำหรับไดเรกทอรี):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5

ไฟล์ readlink -f ส่งคืนพา ธ ที่ไม่ได้เชื่อมโยงไปยังไฟล์นั้นซึ่งเป็นสิ่งที่ฉันต้องการ ขอบคุณ!
David Mackintosh

1
ฮึฉันมักจะใช้ / bin / pwd เพราะมันไม่รู้ว่ามันเป็นอย่างไรไม่เหมือนกับ pwd shell builtin เห็นได้ชัดว่าเทียบเท่ากับ pwd -P
Peter Cordes

ls -lda ใช้ไม่ได้กับลิงก์ sym ที่ซ่อนอยู่ด้วยเหตุผลบางอย่าง
Casebash

2

คุณต้องการreadlink -f(ใน coreutils ติดตั้งโดยค่าเริ่มต้น) หรือจำง่ายrealpathกว่าซึ่งคุณต้องติดตั้ง


0

วิธีอื่นที่ฉันใช้

cd to the symlink
Ctrl+Shift+T #To open a new tab
pwd

แท็บใหม่ pwd ให้ symlink ;)


ฉันขอโทษคุณใช้ shell ตัวจัดการหน้าต่างหรือเทอร์มินัลอะไร
David Mackintosh

ฉันคิดว่าเขากำลังพูดถึง gnome-terminal
prestomation

ใช่ฉันกำลังพูดถึงสถานี Gnome
Lakshman Prasad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.