จะไปยังไดเรกทอรีการทำงานก่อนหน้าในเทอร์มินัลได้อย่างไร


213

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

ตัวอย่างเช่น/opt/soft/binฉันcdเข้า/etc/squid3และเข้าและฉันต้องการกลับไปที่ไดเรกทอรีแรก

คำตอบ:


284

คุณสามารถใช้ได้

cd -

หรือคุณสามารถใช้

cd $OLDPWD

3
มีความคิดใดว่าเหตุใดจึงพิมพ์ชื่อไดเรกทอรีไปยังคอนโซลเมื่อใช้ "cd -"
dtmland

4
cd -น่าจะเป็นตั้งแต่เปลือกหอยเก่าไม่แสดงชื่อของไดเรกทอรีปัจจุบันในพรอมต์มันเป็นประโยชน์ที่จะเห็นชื่อของไดเรกทอรีเมื่อคุณพิมพ์ ตัวอย่างเช่นเมื่อคุณพิมพ์cd /usr/localคุณรู้ว่าคุณอยู่/usr/loalแต่เมื่อคุณพิมพ์cd -คุณจำไม่ได้เสมอว่าคุณมาจากไดเรกทอรีใด cd -; pwdดังนั้นจึงช่วยให้คุณประหยัดจากการพิมพ์ แต่นี่คือการเก็งกำไรทั้งหมด
Raphael Ahrens

2
หรือคุณสามารถใช้นามแฝง: ตั้งค่านามแฝงalias -- -='cd -'แล้วใช้-(1 อักขระ) แทนcd -(4 อักขระ) เร็วขึ้น:D
ADTC

2
ฉันจะอยู่โดยปราศจากสิ่งนี้ได้อย่างไร
VSZM

1
@ AndréKuhlmannคุณทำได้cd -สองครั้ง อย่าคุณควรจะอยู่ในcd /; cd /usr; cd -; cd - /usrแต่บางทีฉันอาจจะเข้าใจคำถามของคุณ
Raphael Ahrens

54

คำตอบอื่น ๆ จะเสร็จสมบูรณ์แน่นอนในความหมายคำตอบโดยตรง cd -และcd $OLDPWDเป็นตัวเลือกหลักสำหรับสิ่งนี้อย่างแน่นอน อย่างไรก็ตามฉันมักพบว่าการเข้าสู่เวิร์กโฟลว์ด้วยpushdและpopdทำงานได้ดีขึ้น

เรื่องยาวสั้นถ้าคุณกำลังจะย้ายไปลงในไดเรกทอรีด้วยความตั้งใจที่ดีที่สุดของกลับมาที่คุณเริ่มต้นการใช้งาน/pushdpopd

ตัวอย่างเพิ่มเติม

ความแตกต่างที่สำคัญแสดงได้อย่างง่ายดายโดยตัวอย่าง

$ cd dir1
$ pushd dir2

dir2, dir1จุดนี้คุณมีกองไดเรกทอรีที่ เล่นpushdกับการขัดแย้งใดจะทำให้คุณกลับมาอยู่ในกับสแต็คในขณะนี้ dir1 จะทำเช่นเดียวกัน แต่จะทำให้คุณมีสแต็กไดเรกทอรีว่างเปล่า สิ่งนี้ไม่แตกต่างไปจากที่คุณเคยทำงานกับเวิร์กโฟลว์มากนักdir1, dir2popdcd -

dir1แต่ตอนนี้คุณสามารถเปลี่ยนไดเรกทอรีหลายครั้งและได้รับกลับไป ตัวอย่างเช่น,

$ cd dir1
$ pushd dir2
$ cd dir3

หากคุณทำงานpopddir1จุดนี้คุณจะกลับไป


2
คุณยังสามารถสแต็กไดเรกทอรีได้ดังนั้นให้ใช้ซ้ำ ๆpushdและกลับไปยังโฟลเดอร์ก่อนหน้าในขณะที่popdออก
Bernhard

1
อย่างแน่นอน ฉันเกือบจะยกตัวอย่างขนาดใหญ่ที่รวมการตรวจสอบสแต็คด้วยdirs -vแต่ความจริงสำหรับฉันก็คือบ่อยครั้งที่กรณีง่าย ๆ คือทั้งหมดที่ฉันใช้จริง ๆ (หรือแย่กว่านั้นคือฉันทำผิดพลาดเมื่อพยายามpush +2หรือคล้ายกัน) นอกจากนี้ฉันคิดว่าขั้นตอนที่รักสำหรับการรับคนที่จะลองเวิร์กโฟลว์ :)
Josh Berry

คุณcdจะไปที่ด้านบนสุดของสแต็คโดยไม่ต้อง popping ได้อย่างไร
Jon Deaton

18

คุณควรใช้:

cd ~-

มันไม่เป็นเช่นเดียวกับcd -(จากคำตอบที่ได้รับการยอมรับในปัจจุบัน) โดยไม่ได้รับเสียงสะท้อนที่น่ารำคาญของไดเรกทอรีและง่ายต่อการพิมพ์กว่าหรือcd "$OLDPWD"cd - > /dev/null


2
เปลี่ยนเส้นทาง echo ไปเป็นไฟล์ null! มันเป็นอัจฉริยะ !!
ราม

2
เสียงสะท้อนแสดงไดเรกทอรีใหม่ไม่ใช่ไดเรกทอรีก่อนหน้า และฉันจะพบว่ามีประโยชน์ดังนั้นฉันจึงรู้ว่าตอนนี้ฉันอยู่ที่ไหนโดยเฉพาะถ้าฉันอยู่ในเชลล์ที่แสดงชื่อไดเรกทอรีปัจจุบันเท่านั้น (หรือไม่มีอะไรเลย) บนพรอมต์และฉันก็ไม่อยากเปลี่ยน พรอมต์เพื่อแสดงเส้นทางแบบเต็ม แน่นอนถ้าพรอมต์ของคุณแสดงเส้นทางครบถ้วนแล้วเสียงก้องจะซ้ำซ้อนและน่ารำคาญ ในกรณีนี้ฉันคิดว่าคุณสามารถลองalias -- -='cd "$OLDPWD"'ใช้-(1 อักขระ) แทนcd ~-(5 อักขระ) :)
ADTC

แหล่งที่มาและคำอธิบาย: unix.stackexchange.com/a/330885/38213 สปอยเลอร์ - เป็นตัวถูกดำเนินการและ ~ เป็นสมนามพา ธ ดังนั้นใช้cd ~-/..งานได้ แต่cd -/..ไม่!
เรย์ฟอสส์


3

คุณสามารถ "กำหนดคีย์" สำหรับ 'cd -' โดยแก้ไขไฟล์ '~ / .bashrc' ของคุณและรวมถึงนามแฝงสำหรับคำสั่ง ตัวอย่างเช่นคุณสามารถเพิ่ม 'cdc' เพื่อให้ 'cd -' ซึ่งจะช่วยให้คุณมีวิธีที่สั้นกว่าในการไปยังไดเรกทอรีสุดท้ายโดยการเพิ่ม:

alias cdc='cd -'

วิธีนี้คุณเพียงแค่พิมพ์ 'cdc' และจะทำให้คุณอยู่ในไดเรกทอรีการทำงานล่าสุดของคุณ


5
และทำให้คุณสับสนไม่สิ้นสุดเมื่อคุณใช้ระบบที่ไม่มีนามแฝงอยู่ มันช่วยประหยัดการพิมพ์ตัวละครตัวหนึ่งทุกครั้ง ทำไมถึงต้องรำคาญ
CVn

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

@ Atari911 คำถามที่ยอดเยี่ยม! นี่คือคำตอบ: stackoverflow.com/questions/4200800นี่คือสิ่งที่ฉันทำ (ผูกไว้กับ F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(หรือให้เลื่อนไปที่inputrcไฟล์ตามที่ระบุไว้ในคำตอบ)
ADTC

1

cd ..ไปที่โฟลเดอร์ก่อนหน้าในแผนผังของโฟลเดอร์
cd -ไปที่โฟลเดอร์ที่เคยเป็น คำสั่งนี้ใช้ไม่ได้กับ distros บางรุ่น (Ubuntu 16.04) ใช้งานได้ใน debian 9

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