วิธีกำหนดลิงก์สัญลักษณ์ที่ฉันสามารถใช้ได้ในทุกไดเร็กทอรี


11

เป็นไปได้หรือไม่ที่จะตั้งลิงก์สัญลักษณ์เพื่อให้ฉันสามารถใช้projectชี้ไดเรกทอรีhome/me/projectได้เช่น? สิ่งนี้ควรเป็นอิสระจากตำแหน่งในระบบไฟล์

ฉันต้องการใช้คำสั่งเช่นcd projectนี้nano project/file1.texเป็นต้น

ฉันต้องเขียนลิงค์สัญลักษณ์ไปยังไดเรกทอรีทั้งหมดของฉันหรือไม่?

คำตอบ:


15

เปลือกหอยส่วนใหญ่มีCDPATHตัวแปรที่cdสามารถค้นหาไดเรกทอรีการเปลี่ยนแปลงไปในทางเดียวกันว่า executables $PATHมีการค้นหาใน

ดังนั้นถ้าคุณเพิ่ม symlink ของคุณใน~/projectsไดเรกทอรีและทำCDPATH=~/projectsคุณจะสามารถcd fooเข้าไปข้างในได้~/projects/foo

ด้วยzshหาก$varมีเส้นทางที่คุณสามารถทำได้cd ~varเพื่อcdไปยังเส้นทางนั้น ส่วนที่มีประโยชน์คือเมื่อพรอมต์ของคุณ%~แสดงถึงพรอมต์ในพรอมต์ของคุณ:

$ proj1=/usr/local proj2=/etc/apache2
$ PS1='%~$ '
$ cd ~proj1
~proj1$ cd ~proj2/sites-enabled
~proj2/sites-enabled$

ด้วยsetopt cdablevarsคุณยังสามารถทำแทนcd proj1cd ~proj1


9

คุณอาจต้องการใช้ตัวแปรแทนลิงก์สัญลักษณ์เช่น

export project=/home/me/project

แล้วก็

cd $project

หรือ

vim $project/file

UPDATE

ตามที่ระบุโดย peterph คุณสามารถรวมสิ่งเหล่านี้ (รวมถึงตัวแปรที่กำหนดไว้ล่วงหน้า) เช่น

export project=$HOME/project

1
หรือดีกว่าproject=$HOME/project...
เตอร์

@peterph ~/projectหรือแม้กระทั่งการที่เรียบง่าย
Stéphane Chazelas

4
ด้วยzshคุณสามารถทำเช่นsetopt cdablevarsนั้นได้cd project
Stéphane Chazelas

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