ฉันสามารถย่อการพิมพ์ที่จำเป็นเพื่อ `cd` ลงในไดเรกทอรีที่รู้จักกันดีได้ไหม


11

ฉันพบว่าตัวเองเปิด terminal แล้ว CD'ing มากในไดเรกทอรีเดียวกันเส้นทางที่ยาวมาก

นั่นหมายความว่าฉันกำลังใช้ซีดีมากและใช้แท็บเพื่อเร่งความเร็วสิ่งต่างๆให้มากขึ้น

มันคงจะดีมากถ้าฉันมีลิงค์ไปยังไดเรกทอรีนี้และจากนั้นก็ไปที่นั่นเพื่อให้ฉันอยู่ในไดเรกทอรีที่ซ้อนกันอย่างรวดเร็ว

เป็นไปได้ไหม


1
ฉันมีสคริปต์ (ทุบตี) หลายตัวที่ทำงานเล็ก ๆ (ที่เกี่ยวข้อง) เช่น cd'ing ไปยังโครงการ github และทำงานgit statusอยู่ ฉันมีนามแฝงอยู่.bash_profileด้วย ไม่ว่าสิ่งที่คุณขอ แต่ที่เกี่ยวข้อง
keyser

คำตอบ:


24

นี่คือวิธีจัดการกับเส้นทางที่ซับซ้อนไปcdบ่อย

mkdir ~/Links
ln -s /complexpath/there ~/Links

สิ่งนี้จะสร้างลิงก์สัญลักษณ์

~/Links/there

หากต้องการใช้ใหม่นี้Linksไดเรกทอรีได้อย่างมีประสิทธิภาพถ้าเปลือกเข้าสู่ระบบของคุณจะbash มีเพียงคำสั่งนี้ในของคุณ~/.profile(ซึ่งถูกนำมาใช้โดยทั้งหมดหอยสไตล์บอร์นbash, ksh, zsh... ):

CDPATH=~/Links:.
export CDPATH

ซึ่งหมายความว่าทุกcdเชลล์ของคุณจะค้นหาภายใน 2 ไดเรกทอรีเพื่อค้นหาชื่อพา ธ :

~/Links
.

คุณไม่จำเป็นต้องรีสตาร์ทเซสชันเพื่อทดสอบเพียงรัน:

. ~/.profile

~/.profileซึ่งหมายความว่าเพียงแค่อ่านของฉัน (คุณไม่จำเป็นต้องใส่ไว้ในของคุณ~/.bashrcเนื่องจากไม่จำเป็นต้องทำซ้ำการเริ่มต้นตัวแปรเดียวกันเมื่อคุณไม่เปลี่ยนแปลง)

เมื่อคุณทดสอบแล้วคุณจะสามารถรีสตาร์ทเซสชันของคุณได้);

จากนี้ไปทุกครั้งที่คุณต้องการไปที่thereคุณจะต้องพิมพ์:

cd there

นี่เป็นคำตอบทั่วไปที่หรูหราที่สุดที่ฉันเคยเห็น ฉันมักจะสร้างชื่อแทนสำหรับจุดหมายปลายทางทั่วไป (เช่นนามแฝงcdoraถึงcd $ORACLE_HOMEและ ... )
bmike

ทุกคนจะสนใจอย่างง่ายๆผ่านอินเทอร์เฟซ Finder หรือไม่
แดน

11

การกำหนด alias เป็นวิธีที่ง่ายมากที่จะมีตัวย่อสั้น ๆ สำหรับคำสั่งที่ยาวกว่า เมื่อคุณมีนามแฝงของคุณถูกต้องคุณสามารถสร้างส่วนในไฟล์. bashrc ของคุณ (หรือไฟล์เริ่มต้นอื่น ๆ ) เพื่อให้คุณไม่ต้องพิมพ์นามแฝงเหล่านี้อีกครั้งสำหรับแต่ละเชลล์ใหม่ที่คุณเริ่ม:

ใน. bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

เป็นต้น

ออกจากระบบและย้อนกลับไปใน (หรือเพียงแค่เรียกใช้. ~/.bashrc) และตอนนี้คุณสามารถพิมพ์httpdlogและดำเนินการซีดี หรือws4และมันทำคำสั่ง ssh เป็นต้น

สิ่งนี้จะลบความจำเป็นในการสร้างลิงก์ว่างเปล่า (จำนวนมาก) ที่จะทำให้ไดเรกทอรีบ้านของคุณดูเหมือนระเบียบ


10

ลองใช้อย่างใดอย่างหนึ่งautojumpหรือZ

หลังจากติดตั้งหนึ่งในสองแบบคุณก็cdเหมือนปกติและพวกมันจะเรียนรู้ไดเรกทอรีที่คุณเข้าชมบ่อยที่สุดและช่วยให้คุณไปถึงพวกมันได้ด้วยการพิมพ์เพียงบางส่วนของเส้นทาง:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

ฉันชอบ z ของทั้งสอง


ไม่ทราบเกี่ยวกับ autojump แต่สคริปสคริปต์ 'z'!
กริช

7

ฉันขอแนะนำfasdซึ่งคล้ายกับ autojump และ z แต่ IMHO ที่ดีกว่า จากเว็บไซต์:

Fasd (ออกเสียงคล้ายกับ "fast") เป็นตัวช่วยเพิ่มประสิทธิภาพการทำงานของบรรทัดคำสั่ง Fasd เสนอการเข้าถึงไฟล์และไดเรกทอรีอย่างรวดเร็วสำหรับ POSIX เชลล์ มันได้รับแรงบันดาลใจจากเครื่องมือเช่น autojump, z และ v. Fasd ติดตามไฟล์และไดเรกทอรีที่คุณได้เข้าถึงเพื่อให้คุณสามารถอ้างอิงได้อย่างรวดเร็วในบรรทัดคำสั่ง

ชื่อ fasd มาจากชื่อแทนที่แนะนำค่าเริ่มต้น f (ไฟล์), a (ไฟล์ / ไดเรกทอรี), s (แสดง / ค้นหา / เลือก), d (ไดเรกทอรี)

Fasd จัดอันดับไฟล์และไดเรกทอรีโดย "frecency" นั่นคือโดยทั้ง "ความถี่" และ "ความใหม่" คำว่า "frecency" ได้รับการประกาศเกียรติคุณเป็นครั้งแรกโดย Mozilla และใช้ใน Firefox (ลิงก์)


4

หรือคุณสามารถสร้างนามแฝงได้ โยนสิ่งต่อไปนี้ลงในรายการเช่น. bashrc หรือ .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

จากนั้นตรวจสอบให้แน่ใจว่าไฟล์ที่อยู่ในนั้นคือsourced นามแฝงของฉันอยู่ใน. bashrc ซึ่งฉันมาด้วยบรรทัดนี้ใน. bash_profile: source ~/.bashrc


2

การเพิ่ม symlink สะดวกสบายเป็นสิ่งที่ดีสำหรับไดเรกทอรีพิเศษหรือสองแห่ง แต่มันก็เร็วมากที่จะจัดการ วิธีการแก้ปัญหาที่ดีกว่าคือการใช้ตัวแปรสภาพแวดล้อมCDPATH,ที่มีอยู่บนbashและเปลือกหอยอื่น ๆ เพียงเพื่อการนี้

CDPATHเป็นรายการPATHสถานที่ที่คั่นด้วยโคลอน (เช่น) เพื่อค้นหาชื่อไดเรกทอรี มันสามารถมีชื่อพา ธ ทั้งแบบสัมบูรณ์และสัมพัทธ์ export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>"ฉันมีชุดเหมืองเพื่อสิ่งที่ต้องการ

ด้วยการตั้งค่านี้ผมสามารถพิมพ์cd pdftools ได้จากทุกที่~/projects/pdftoolsและมันจะพาฉันไป (ด้วย symlink ให้ฉันต้องพิมพ์cd ~/pdftoolsถ้าผมไม่ได้อยู่ในไดเรกทอรีบ้านของฉัน.) cd pdftools/binฉันยังสามารถลัดเข้าสู่ไดเรกทอรีย่อย:

..ในของฉันCDPATHช่วยให้ฉันพิมพ์cd sisterdirแทนcd ../sisterdirเป็นต้นในขณะที่คุณสามารถคาดหวังว่าเมื่อผมสร้างไดเรกทอรีใหม่ที่ใดก็ได้ในCDPATHพวกเขาจะพบได้โดยอัตโนมัติcd- ไม่จำเป็นต้องสร้าง symlinks ใหม่หรือนามแฝง

ฟีเจอร์นี้จะดียิ่งขึ้นหากคุณใช้bash_completionไฟล์ที่แจกจ่ายเช่นกับระบบ Debian มันไม่ได้มาพร้อมกับกล่อง OS X ของฉันดังนั้นฉันเอาสำเนามาและมันก็ใช้ได้ดี (รับมันด้วยbrewหรือเพียงแค่ดาวน์โหลดได้ด้วยตนเองจากที่นี่ .) ไฟล์นี้กำหนดที่จะเสร็จสิ้นการปรับปรุง commandline เพื่อที่ฉันสามารถพิมพ์cd pdf<TAB>และpdftoolsไดเรกทอรีพบและขยายจากที่ใดก็ได้CDPATHบน


1

แน่นอน: สร้างลิงค์สัญลักษณ์

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut

1

ฉันชอบใช้ bashmarks เพื่อสร้าง "บุ๊กมาร์กไปยังไดเรกทอรี" อย่างง่ายดาย

ดู readme ได้ที่: https://github.com/huyng/bashmarks

หมายเหตุ: คุณจะต้องติดตั้งคอมไพล์เพื่อติดตามกระบวนการติดตั้งสามขั้นตอนของ bashmark: http://git-scm.com/download/mac

โชคดี!


1

หรือคุณสามารถลองติดตั้งตู้ปลา

http://fishshell.com/

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

ข้อเสียของปลาคือมันมีภาษาสคริปต์ของตัวเองและพวกเขาจะไม่ทุบตีกันได้


1

สิ่งที่ฉันทำคือพิมพ์ "cd" แล้วลากโฟลเดอร์จาก Finder ไปยัง Terminal ที่วางในเส้นทางแบบเต็ม อาจไม่สวยหรูนัก แต่ใช้ได้กับทุกโฟลเดอร์เทียบกับปุ่มลัดที่ตั้งไว้ล่วงหน้าบางส่วน

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