Linux symlinks ไปยังไดเรกทอรี


0

ฉันสร้าง symlink ในโฟลเดอร์บ้านของฉันไปยังไดเรกทอรีอื่น:

$ pwd
/home/user1
$ ln -s /usr/local/dir/ shortcut
$ ls -l
................................... shortcut -> /usr/local/dir/
$ cd shortcut
$ pwd
/home/user1/shortcut

ฉันจะลงเอยใน dir นั้นเพื่อให้ฉันสามารถดูไฟล์ทั้งหมดในนั้น แต่ pwd สับสนและอาจทำให้เกิดปัญหา มีวิธีที่ดีกว่านี้เพื่อให้ทำหน้าที่ทางลัดและแสดงจริง /usr/local/dir เมื่อฉันเข้าไป cd shortcut แทนที่จะแสดงเส้นทางใหม่?



1
ฉันลงคะแนนให้ปิดคำถามนี้เป็นนอกหัวข้อเพราะได้รับคำตอบแล้ว ยูนิกซ์ & amp; ลินุกซ์สแต็คแลกเปลี่ยน .
G-Man

@ G-Man เป็นกรณีของคำถามที่ถูกตอบที่อื่นในคำถามที่คล้ายกันหรือ OP-cross-post คำถามเดียวกันและได้รับคำตอบในไซต์อื่น ลิงก์ในความคิดเห็นแรกเป็นคำถามที่เก่ากว่า ลิงก์ในความคิดเห็นที่ใกล้ชิดคือไปยังเว็บไซต์แทนที่จะโพสต์ที่เฉพาะเจาะจงและ OP ไม่ได้เป็นผู้ใช้ที่นั่น การมีอยู่ของคำตอบในไซต์อื่นจะไม่ทำให้เป็นเรื่องผิดที่นี่
fixer1234

คำตอบ:


1

ทั้งสอง cd และ pwd มีธงเพื่อใช้โครงสร้างไดเรกทอรีทางกายภาพ

ซีดี

$ cd --help
...
  -P   use the physical directory structure without following
       symbolic links: resolve symbolic links in DIR before
       processing instances of `..'
...

เช่น

$ cd /var/tmp 
$ ln -s /home/user test 
$ cd -P test
$ pwd
/home/user

ด้านบนเราใช้ cd -P เพื่อใช้โครงสร้างไดเรกทอรีทางกายภาพดังนั้นตอนนี้ pwd ทำให้เรามีทางกายภาพ

รหัสผ่าน

$ pwd
...
  -P    print the physical directory, without any symbolic links
...

เช่น

$ cd /var/tmp
$ ln -s /home/user test 
$ cd test
$ pwd
/var/tmp/test
$ pwd -P
/home/user

ด้านบนเรา cd เข้าสู่ไดเรกทอรีตามปกติดังนั้น pwd ให้เส้นทางสัญลักษณ์ การใช้ pwd -P จะให้เส้นทางทางกายภาพ

ตั้งทั่วโลกในทุบตี

หากคุณกำลังใช้ bash คุณสามารถบอกให้ละเว้นการเชื่อมโยงสัญลักษณ์ทั้งหมดและเพียงใช้โครงสร้างไดเรกทอรีทางกายภาพโดยการเรียกใช้ set -P จดชวเลข set -o physicalดูหน้า `bash man page) นี่อาจเป็นไปได้กับกระสุนอื่น ๆ เช่นกัน


สิ่งนี้จะรีเซ็ตเป็นค่าเริ่มต้นในการออกจากระบบทุกครั้ง ดังนั้นในขณะที่เข้าสู่ระบบการรันคำสั่งจะให้ผลลัพธ์ที่ต้องการ แต่การล็อกเอาต์และรีเซ็ตเป็นค่าเริ่มต้น มีวิธีทำให้จำ "set -P" หรือไม่?
prl77

1
ถ้อยคำที่ไม่ดีในส่วนของฉันที่มีอยู่ต่อเปลือกเท่านั้น คุณสามารถตั้งค่านี้ใน ~/.bashrcนี้จะถูกโหลดสำหรับทุกเชลล์แบบโต้ตอบจากนั้นเพื่อให้แน่ใจว่ามันจะโหลดสำหรับ ssh และอื่น ๆ ... คุณสามารถวางไว้ใน ~/.bash_profile หรือเรียกใช้ source ~/.bashrc จาก ~/.bash_profile - มันอาจจะมีแหล่งที่มาแล้วขึ้นอยู่กับ distro
wayofthepie

0

ใช้ $ CDPATH

$ CDPATH=/usr/local
$ cd dir
$ pwd
/usr/local/dir

ISTM นั้นเป็นการแก้ปัญหามากกว่าคำตอบที่แท้จริงและอาจดีกว่าเป็นความคิดเห็น
G-Man

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