วิธีที่รวดเร็วในการ Cd'ing บน * ระวัง


4

ฉันพบว่าตัวเองพิมพ์อย่างต่อเนื่อง (ใช้แท็บแน่นอน) เส้นทางที่ไร้สาระเช่น

cd path/to/the/thing\ that\ I\ need/python/proj/eraseme

นอกเหนือจากการทำ ln -s (หรือรูปแบบอื่น ๆ ของ ln?) มีวิธีอื่นที่จะทำให้เร็วขึ้นได้ไหม? นอกจากนี้หากใช้วิธีแก้คือ lnมีวิธี / สถานที่มาตรฐานในการใส่ลิงค์เพื่อไม่ให้ยุ่งเหยิงของฉัน ~ ไดเรกทอรี?

ฉันไม่ได้ขอทางลัดเท่านั้น: การแก้ปัญหาใด ๆ ที่ช่วยในเรื่อง "การหลีกเลี่ยง" จะช่วยได้


1
ดูสิ่งนี้ด้วย superuser.com/questions/120399/...
mrucci

คำตอบ:


11

ในทุบตี $CDPATH ตัวแปรสภาพแวดล้อมมีรายการของเส้นทางที่จะค้นหาไดเรกทอรีเมื่อใช้ cd.

CDPATH=".:~/long path to my projects"
cd eraseme

1
ว้าว. นั่นอาจเป็นสิ่งที่ยอดเยี่ยมที่สุดที่ฉันเคยเห็น ฉันจะต้องให้มันหมุน ขอบคุณ!
Dan Rosenstark

ฉันคิดว่าอาจเป็นวิธีที่ทำให้เกิดความสับสนมากกว่านามแฝง
Stephen

2
ขึ้นอยู่กับว่าคุณจะชินกับมันหรือไม่ ฉันหมายความว่าเนื่องจากเป็นสิ่งที่คุณทำเพื่อตัวเองและไม่ใช่สิ่งที่คุณกำหนดให้กับคนอื่น ๆ จึงไม่มีอันตรายใด ๆ ในการลอง
David Z

@ สตีเฟ่น: เหตุผลที่ฉันทำเครื่องหมายว่านี่เป็นคำตอบที่ดีที่สุดเพราะถ้าคุณรวมมันเข้ากับสคริปต์ขนาดเล็ก - addcd สมมติว่า - มันอาจมีประสิทธิภาพมาก หรือคุณสามารถเพิ่มเส้นทางเดียวที่คุณใส่ ln s มันมีประโยชน์จริงๆ
Dan Rosenstark

@Ignacio Vazques-Abrams ฉันจะทำให้การเติมข้อความอัตโนมัติ (แท็บ) ของฉันจดจำเส้นทางที่เพิ่งเพิ่มเข้ามาใหม่ได้อย่างไร? หากปราศจากสิ่งนี้ไม่ได้ทำให้ฉันไปไกล
Dan Rosenstark

9

บางคนใช้นามแฝงเพื่อจุดประสงค์นี้ ลองทำเช่นนี้:

alias cderaseme='cd /home/user/whatever/path/to/the/thing\ that\ I\ need/python/proj/eraseme'

ตอนนี้คุณสามารถพิมพ์ cderaseme ทุกครั้งที่คุณต้องการไปที่ไดเรกทอรีนั้น นามแฝงจะใช้ได้เฉพาะกับเทอร์มินัลเซสชันปัจจุบันดังนั้นให้วางไว้ใน. bashrc ของคุณเพื่อเก็บไว้


ความคิดดีๆ
Dan Rosenstark

6

แนวคิดง่ายๆ:

  • ใช้แท็บเสร็จ
  • ใช้ cd เพื่อกลับไปยังไดเรกทอรีบ้านของคุณ ใช้ cd ~/<dir> เพื่อไปยังไดเรกทอรีที่สัมพันธ์กับโฮมไดเร็กตอรี่ของคุณ
  • ใช้ cd - เพื่อกลับไปยังไดเรกทอรีสุดท้าย นั่นคือ ด้วยคำสั่งนี้คุณสามารถสลับไปมาระหว่างสองไดเรกทอรี
  • ใช้ pushd <dir> เพื่อไปยังไดเรกทอรีและอย่าลืมตำแหน่งก่อนหน้าในไดเรกทอรีสแต็ก จากนั้นใช้ popd เพื่อย้อนกลับ (ในไดเรกทอรีสแต็ค) ไปยังตำแหน่งก่อนหน้า
  • ใช้เส้นทางที่สัมพันธ์กันเช่น cd ../<dir>แทนเส้นทางที่แน่นอน
  • ใช้ cd !$ เพื่อไปยังไดเรกทอรีที่กล่าวถึงในอาร์กิวเมนต์สุดท้ายของคำสั่งก่อนหน้า (ขึ้นอยู่กับเชลล์ของคุณ) ตัวอย่าง: mkdir /tmp/dir ติดตามโดย cd !$ และคุณไดเรกทอรีปัจจุบันคือ /tmp/dir.

2
คุณยังสามารถใช้ globbing ในขณะที่พิมพ์เส้นทาง เครื่องหมายดอกจัน (*) มีประโยชน์อย่างยิ่ง - เช่นการใช้แท็บเสร็จสมบูรณ์โดยไม่ต้องเลือกทางเลือก (ตราบใดที่สิ่งที่อยู่ไกลออกไปทางทำให้มันชัดเจน
mpez0

@ mpez0 ก่อนที่จะอ่านความคิดเห็นของคุณฉันได้ลองแล้ววันนี้ ไม่ทราบว่าใช้งานได้กับหลายเส้นทางจริง ๆ แล้วมันยอดเยี่ยมมาก
Dan Rosenstark

4

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

$ cd p/t/t/t/p/p/er<tab>

นอกจากนี้ยังมียูทิลิตี้บางอย่างที่สามารถจำได้ว่าคุณมักจะไปไหนและลองคาดเดาหรือทำตัวเหมือนรุ่นที่ฉลาดกว่า cd, f.e. cdargs, wcd, apparix, kcd... ไม่เคยใช้มันฉันมักจะใช้เสมอ zsh เสร็จสิ้น


น่าสนใจ ฉันจะต้องศึกษาเกี่ยวกับสาเหตุที่ฉันไม่ใช้ zsh (หรือสวิตช์อื่น)
Dan Rosenstark

แม้ใน bash ฉันสามารถทำ cd / d * / j * / g * และถ้ามันไม่เหมือนใครมันจะไปถึงที่นั่น ไม่เลวสำหรับการเริ่มต้น
Dan Rosenstark

3

ฉันมักจะสร้างเชลล์สคริปต์ที่เรียกว่า 'mycd' ซึ่งฉันสามารถส่งพารามิเตอร์ไปให้ บางสิ่งเช่นนี้

# Shell script to CD into various locations.
if   [ "$1" == "myhome"  ]  ; then cd ~;
elif [ "$1" == "mypref"  ]  ; then cd ~/Library/Preferences;
elif [ "$1" == "mylib"  ]   ; then cd ~/Library;
elif [ "$1" == "syslib" ]   ; then cd /System/Library;
elif [ "$1" == "--help" ]   ; then
  echo "Usage: $0 location, which can be one of"
  echo "myhome = My home dir."
  echo "mypref = My Preferences dir."
  echo "mylib  = My Libraries dir."
  echo "syslib = System library."
  echo "--help = Show this message."
else echo "$0: $1 not known.";
fi

จากนั้นในไฟล์ alias ให้ป้อนรายการดังนี้:

alias mycd='. /path/to/mycd'

จากนั้นฉันก็สามารถเรียกมันด้วยสิ่งที่ชอบ mycd mylib และจะพาฉันไปที่นั่น

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


+1 ฉันชอบรหัส แต่ผลลัพธ์ที่ได้คือเงอะงะเล็กน้อย
Dan Rosenstark

1

ลองสิ่งนี้:
a () {alias $ 1 = cd \ $ PWD; }
สิ่งนี้จะสร้างฟังก์ชั่นเล็ก ๆ น้อย ๆ ที่ทำให้การสร้างนามแฝงใหม่สำหรับการสลับไดเรกทอรี


เจ้ากรรมนั่นน่ารักขอบคุณสำหรับสิ่งนั้น
Dan Rosenstark

อะไรจะเป็นวิธีที่ดีที่สุดในการทำให้สิ่งเหล่านี้คงอยู่? ฉันสามารถมี a เพิ่มคำสั่งไปยังจุดสิ้นสุดของเชลล์สคริปต์ แต่ฉันไม่สามารถจัดการเพื่อส่งผลกระทบต่อสภาพแวดล้อมเชลล์ปัจจุบันได้ ปัญหานี้หากคุณจะ: stackoverflow.com/questions/496702
Dan Rosenstark

1

รับการตอบโต้ด้วยคำตอบบางส่วนในวันนี้ สิ่งที่น่าสนใจคือการผสมผสานระหว่างการใช้แล้ว tab บนเปลือก Bash ตัวอย่างเช่น

cd /p*/t*/*need*/py*

และกดที่แท็บและถ้ามันไม่ซ้ำกันมันจะขยายตัวมิฉะนั้นมันจะช่วยให้คุณเลือก


1

ใน Mac OS X คุณ (ใช้ / bin / bash) สามารถใช้คำสั่งเทอร์มินัลซีดีทั่วไปและข้อมูล cdpath ทั้งหมด

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


จริง ฉันใช้ PathFinder (ความสัมพันธ์ความรัก / ความเกลียดชัง) ซึ่งทำเช่นนั้นและฉันก็เพิ่มสิ่งต่าง ๆ ลงใน Finder อีกสักครู่เพื่อบอกเส้นทาง
Dan Rosenstark
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.