คุณทำซีดีลงในโฟลเดอร์แรกที่ใช้ได้โดยไม่ต้องพิมพ์ชื่อได้อย่างไร


30

ฉันเพิ่งอยู่ในสถานการณ์ที่ฉันอยู่ในโฟลเดอร์และฉันต้องการที่จะcdไปยังโฟลเดอร์ไดเรกทอรีย่อย มีเพียงโฟลเดอร์เดียวเท่านั้นภายในโฟลเดอร์นี้และเป็นชื่อที่ยาวมาก

Home (I am here)
 |
 |
  --> /reallylongnamefolder

มีวิธีใดบ้างที่จะเข้าไปในโฟลเดอร์นั้นแทนที่จะพิมพ์ออกมา:

 cd reallylongnamefolder

1
หลายวิธี: cd */หรือcd rea*/ถ้าไม่แน่ใจมีเพียง 1 subdir ตลอดเวลา (ถ้าใช้ bash, คุณสามารถcd rea[TAB].. ในเชลล์อื่นด้วยเช่นกัน แต่วิธีการขยายชื่ออาจแตกต่างกัน) ถ้า "/ reallylongnamefolder" เป็นเส้นทางแบบสัมบูรณ์สิ่งเดียวกัน แต่มี '/' ด้านหน้าเช่น:cd /rea*/
Olivier Dulac

คำตอบ:


38

tabฉันจะให้คำแนะนำอย่างใดอย่างหนึ่งที่จะพิมพ์ตัวอักษรไม่กี่ครั้งแรกและกด Bash มีคุณสมบัติการเติมข้อความอัตโนมัติที่มีประโยชน์จริงๆ ถ้ามันเป็นเพียงไดเรกทอรีในเส้นทางปัจจุบันเพียงแค่กดtabจะเติมไดเรกทอรีทั้งหมด

การพิมพ์cdและกดtabสองครั้งจะแสดงตัวเลือกทั้งหมดในไดเรกทอรีปัจจุบัน

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

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


15
คุณไม่จำเป็นต้องพิมพ์ตัวอักษรใด ๆ เลยด้วยซ้ำถ้ามีเพียงไดเรกทอรีเดียว: cd <tab>จะฉลาดพอ
amalloy

1
ทำงานได้ใน Windows เช่นกัน (สำหรับผู้ที่มาจาก google .. )
Koray Tugay

16

ฉันคิดว่าฉันคิดออกจริง

cd * 
cd */

แต่ฉันไม่ได้ทดสอบถ้ามีหลายไฟล์และหนึ่งโฟลเดอร์!


ในฐานะ@Rinzwindพูดถึงในความคิดเห็น!

สมมติว่าคุณมีสามโฟลเดอร์ยาว:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

หากคุณพิมพ์อักษรตัวแรกของไฟล์แล้วกดtabมันจะเติมชื่อไฟล์ให้โดยอัตโนมัติ! CRAZY STUFF!

ดังนั้นในตัวอย่างข้างต้นคุณสามารถพิมพ์: t tabและมันจะเติมข้อความอัตโนมัติให้มากที่สุดเท่าที่จะทำได้: cd thisislongfolder(จากนั้นพิมพ์ตัวเลขด้วยตัวคุณเอง)

หรือคุณสามารถทำได้cd t*1จะนำคุณเข้าสู่thisislongfolder1

ขอบคุณ Rinzwind!


6
first_letter_or_some_letters ซีดีแล้ว {} แท็บเป็นที่ง่ายที่สุด (ยังแก้ปัญหาของคุณจำนวนมากโฟลเดอร์. คุณสามารถตัวอักษรแม้ผสมที่มีมากกว่า 1 แท็บและตัวอักษร. ระบบอัตโนมัติจะสมบูรณ์เท่าที่จะสามารถ. คุณยังสามารถทำcd r*rและ หวังว่ามันจะเป็นโฟลเดอร์เดียวที่เริ่มต้นและลงท้ายด้วย r.
Rinzwind

@ Rinzwind ว้าว! ฉันไม่รู้ว่า! ขอบคุณ!
Arian Faurtosh

ลองดู เพิ่มผลลัพธ์ของคุณลงในคำตอบของคุณและคุณอาจจะได้รับชื่อเสียง ;-)
Rinzwind

4
cd */อาจทำเคล็ดลับ
gniourf_gniourf

3
cd *อาจล้มเหลวบ่อยครั้งกว่าจะสำเร็จ
David Richerby

14
cd $(ls -d */|head -n 1)

ls -d */รายการไดเรกทอรีhead -n 1ให้คนแรกในรายการนี้


ใช่แล้วคุณจะพิมพ์มัน ... ฉันควรไปที่แท็บแท็บและค้นหาชื่อมากกว่าที่จะพิมพ์นี้ มันถูกต้อง 100% แต่คำตอบที่ดี!
tomsmeding

1
@tomsmeding หากคุณกำลังเขียนสคริปต์ที่ต้องการไปcdยังไดเรกทอรีแรกคุณจะไม่สามารถทำแท็บได้
pastebin.com slash 0mr8spkT

-n 1 แสดง 1 ไฟล์สุดท้ายของไฟล์ หากคุณต้องการใช้สิ่งนี้เพื่อลำดับตัวแปรคุณสามารถใช้: cd $ (ls -d -1 * / | sed -n '4p') เพื่อเปิดโฟลเดอร์ที่ 4 ในไดเรกทอรี การเพิ่มไปยังนามแฝงสามารถทำให้คุณเร็วขึ้นด้วยการนำทางโฟลเดอร์
Ivan Ivković

2

ฉันมีการตั้งค่าที่ดีสำหรับสิ่งนี้มันช่วยให้ฉันไม่เพียง แต่จะ cd to ~ / somereallylongfoldername แต่ยัง cd ที่นั่นแม้ฉันอยู่ในโฟลเดอร์ /

สิ่งแรกที่ฉันใช้คือ zsh กับ oh-my-zsh สิ่งนี้จะช่วยให้คุณ cd โดยไม่ต้องกังวลเกี่ยวกับกรณีหรือแม้กระทั่งโดยไม่ต้องพิมพ์ cd

  1. ติดตั้ง git และ zsh
sudo apt-get install zsh git
  1. ติดตั้ง Oh My ZSH

curl -L http://install.ohmyz.sh | ดวลจุดโทษ

  1. เปลี่ยนเชลล์เริ่มต้นเป็น ZSH
chsh -s /bin/zsh

เปิดและแก้ไข. zshrc ของคุณที่อยู่ในโฟลเดอร์ภายในบ้านของคุณไม่ใช่ซ่อนอยู่

นาโน ~ / .zshrc

จากนั้นเพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์ export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

หากคุณชอบธีมของฉันคุณสามารถเปลี่ยนสายได้ #ZSH_THEME="robbyrussell"เป็นZSH_THEME="pygmalion"

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

คุณไม่สามารถใช้ปุ่มแท็บเพื่อเติมชื่อและใน ZSH คุณไม่จำเป็นต้องมีตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และกด tab และมันจะเปลี่ยนเป็น ~ / Documents

ป้อนคำอธิบายรูปภาพที่นี่


0

คุณสามารถเปลี่ยนไดเรกทอรีตามหมายเลข inode ครั้งแรกที่เราจะพบกับไอโหนด
แล้วก็ ls -il

cd $(find -inum directory_inode_number)

0

หากคุณต้องการทำในสคริปต์หรือเพื่อสนับสนุนไดเรกทอรีที่มีชื่อที่ไม่สามารถถอดรหัสได้:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

มันทำงานได้ถ้ามีไฟล์ในไดเรกทอรีโดยไม่คำนึงถึงลำดับการเรียงที่สัมพันธ์กับไดเรกทอรี
มันทำงานสำหรับไดเรกทอรีที่ซ่อนอยู่เมื่อcd */ล้มเหลว
มันจะทำงานถ้าชื่อไม่สามารถแทนได้ในสถานที่ปัจจุบันเมื่อlsพิมพ์เพียง??แทนชื่อ


0

ขยายคำตอบของ ace:

cd $(ls -d -1 */ |sed -n '1p')

เพื่อเปิดโฟลเดอร์ที่ 1 ในไดเรกทอรี '1p' สามารถเปลี่ยนเป็น '2p' สำหรับไดเรกทอรีที่สอง

ls -d -1 -la */

เพื่อแสดงเฉพาะไดเรกทอรีจากไดเรกทอรีหลัก

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