กลับไปที่ไดเรกทอรีก่อนหน้าในเชลล์


306

มีวิธีการย้อนกลับไปยังไดเรกทอรีก่อนหน้านี้ที่เราใช้ bash, tcsh โดยไม่ใช้ pushd / popd หรือไม่? ฉันต้องการพิมพ์บางอย่างเช่น "ย้อนกลับ" และกลับไปยังไดเรกทอรีก่อนหน้าที่ฉันอยู่

แก้ไข:

"cd -" ใช้งานได้ แต่เฉพาะกับไดเรกทอรีปัจจุบันและก่อนหน้า อย่างไรก็ตามฉันสามารถกลับไปยังไดเรกทอรีก่อนหน้าก่อนหน้าเช่นวิธีที่คุณสามารถย้อนกลับไปยังเว็บเบราว์เซอร์ได้หรือไม่?

ความนับถือ


1
ตามที่ระบุไว้ด้านล่างคุณสามารถทำได้โดยใช้ "pushd" และ "popd"
blueyed

8
เพียงแค่ข้อความด้านข้าง "cd -" ไปที่ค่าเริ่มต้นของผู้ใช้ direcotry (/ home / ชื่อผู้ใช้)
sdaffa23fdsf

1
คำตอบที่ดีที่สุด imho: unix.stackexchange.com/a/180640/158177ให้ cd -1 ถึง cd -9 ซึ่งฉันคิดว่าเป็นสิ่งที่ OP ขอ
Titou

คำตอบ:


413

cd - (กลับไปยังไดเรกทอรีก่อนหน้า)

หากคุณต้องการที่จะไปยังไดเรกทอรีก่อนหน้าอื่น ๆ นี้เป็นไปไม่ได้นอกกรอบ แต่ให้ตรวจสอบสคริปต์และคำแนะนำนี้:

ประวัติของไดเรกทอรีที่เข้าชมใน BASH

คำสั่ง cd ทำงานได้ตามปกติ คุณลักษณะใหม่คือประวัติของ 10 ไดเร็กทอรีล่าสุดและคำสั่ง cd ถูกขยายเพื่อแสดงและเข้าถึง cd - (หรือกด ctrl + w) เพื่อแสดงประวัติ หน้าชื่อไดเรกทอรีทุกชื่อคุณจะเห็นตัวเลข cd -num พร้อมตัวเลขที่คุณต้องการข้ามไปยังไดเรกทอรีที่เกี่ยวข้องจากประวัติ


20
pushd และ popd ก็มีประโยชน์เช่นกัน
lorenzog

6
@lorenzog: lydonchandra ในคำถามของเขากล่าวว่า "โดยไม่ต้องใช้ pushd / popd"
Snark

@ ogc-nick สำหรับการใช้สิ่งนี้cd --ในลักษณะเมนูคุณควรใช้สคริปต์ที่กล่าวถึง
Ram

1
@ ogc-nick ไม่เป็นไร --เพียงแค่แยกคำสั่งและตัวเลือกจากพารามิเตอร์ (ดูโพสต์นี้ ) เนื่องจากไม่มีข้อโต้แย้งใด ๆ ตามหลัง--คำสั่งสุดท้ายคือคำสั่งcdที่สลับไปยังโฮมไดเร็กตอรี่ของคุณ นั่นอาจเป็นไดเร็กตอรี่ก่อนหน้าที่สอง, แต่มันเป็นเรื่องบังเอิญ
Griddo

ว้าว syntactic น้ำตาลมาก
BugWhisperer

24

cd $OLDPWDนอกจากนี้คุณยังสามารถใช้ตัวแปร สิ่งนี้สามารถใช้ในเชลล์สคริปต์


6
$ OLDPWD เก็บรักษาไดเรกทอรีสุดท้ายที่คุณใช้ซึ่งดีสำหรับสคริปต์ ฉันใช้ $ OLDPWD กับคำสั่ง cp มาก เช่น cp -v $ OLDPWD / ไฟล์
Neil Wightman

1

สำหรับ Windows (รวมถึงกรณีของ Node.js คอมม่าคอนโซลพร้อมท์) ไม่ทำงาน cd - เมื่อต้องการเลื่อนคุณขึ้นหนึ่งไดเรกทอรีทำงาน

cd ..

3
cd .. ย้ายไปยังไดเรกทอรีหลักซึ่งไม่ใช่หัวข้อของคำถาม
ViaSat

1
Windowsนี่คือทุบตีที่นี่ไม่ได้
Timo

0

ผมพบว่าวิธีที่ง่ายที่สุดที่จะทำคือมีนี้แก้ไขอำนาจ .bashrc: https://github.com/wting/autojump คุณจะไปที่โฟลเดอร์ "ทำเครื่องหมาย" ที่คุณนำทางไปให้ชื่อชวเลขที่จำได้ง่าย (คำแนะนำของฉันสิ่งที่กล่าวมาไม่ได้อยู่ในเอกสาร) เช่นPics for Pictures ฯลฯ 'ข้าม' จะนำคุณกลับไปที่โฟลเดอร์ที่คุณ 'ทำเครื่องหมาย' และ 'ทำเครื่องหมาย' รายการโฟลเดอร์ที่คุณเพิ่มลงใน 'สแต็ค' (เช่นเดียวกับpushdและpop d) ด้วยความได้เปรียบที่เพิ่มขึ้นที่เครื่องหมายของคุณยังคงเหมือนเดิมจากเซสชันหนึ่งไปยังอีกอินสแตนซ์ถัดไป

ฉันยังไม่ได้ลองบนฮาร์ดไดรฟ์มากกว่าหนึ่งตัว แต่ผลลัพธ์ควรคล้ายกับที่ใช้วอลุ่มเดียว

ไรท์


-1

หากคุณลงไดเรกทอรีต้นไม้และต้องการย้อนกลับไปcd ..ฉันชอบส่วนตัว คุณสามารถกระโดดไปมาภายในสาขาของต้นไม้ได้อย่างง่ายดายด้วยการcd ..ขึ้นหนึ่งไดเรกทอรีและcd ../..สองและcd ../../..สามเป็นต้นนอกจากนี้คุณยังสามารถขึ้นและลงสาขาที่แตกต่างด้วยคำสั่งเดียวกันเช่นcd ../../exampleหรือcd ../../../example/exampleอื่น ๆ สำหรับสวิตช์แบบง่ายที่จะไป ไปมาระหว่างไดเรกทอรีcd -หรือ$OLDPWDเป็นทางออกที่ดีที่สุดของคุณตามที่คนอื่น ๆ กล่าวถึง


มีสาเหตุใดที่ทำให้ downvote นี้เป็นพิเศษ? มันมีคำตอบที่ถูกต้องแม้ว่าอาจไม่ใช่คำตอบเดียว
Adam Erickson

-2

ฉันคิดว่าcd ..อาจช่วยได้ หากคุณทำls -aในไดเรกทอรีใด ๆ คุณจะเห็นว่ามีสองรายการ: หนึ่งชื่อ "." และอีกชื่อหนึ่งชื่อว่า ".. "; จุดเดียวเป็นการอ้างอิงไปยังไดเรกทอรีที่คุณมีอยู่แล้วในขณะที่จุดคู่นั้นเป็นไดเรกทอรีก่อนหน้าในเส้นทาง


22
..ไม่ใช่ไดเรกทอรีก่อนหน้ามันเป็นเพียงไดเรกทอรีหลัก
Der Hochstapler

4
คำตอบนี้ให้ข้อมูลที่เป็นประโยชน์แม้ว่าจะไม่สามารถตอบคำถามได้อย่างถูกต้อง ดังนั้นจึงไม่มีประเด็นในการลงคะแนนเชิงลบซ้อนมันฉัน upvoted สำหรับความพยายาม
Titou

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