ฉันจะยกเลิกคำสั่ง cd ล่าสุดได้อย่างไร


77

มีวิธีการข้ามกลับไปยังไดเรกทอรีการทำงานก่อนหน้าหลังจากทำcdไปยังไดเรกทอรีอื่นหรือไม่

กรณีการใช้งานของฉันคือฉันสำรวจโครงสร้างไดเรกทอรีสำหรับโครงการ Java และฉันคาดว่าไดเรกทอรีปัจจุบันจะมีไดเรกทอรีย่อยเพียงไดเรกทอรีเดียว ดังนั้นฉันพิมพ์cdแล้วกดTabและEnterค่อนข้างเร็ว อย่างไรก็ตามความTabล้มเหลวตามที่ฉันคาดหวังผิดพลาดหนึ่งไดเรกทอรีย่อยเมื่อในความเป็นจริงมีมากกว่า ดังนั้นตอนนี้ฉันเพิ่งดำเนินการcdและตอนนี้ฉันอยู่ในไดเรกทอรีบ้านของฉันแทนที่จะเป็นโครงการ Java มีวิธี "เลิกทำ" สิ่งนี้cdและข้ามกลับไปยังไดเรกทอรีที่ฉันอยู่หรือไม่

คำตอบ:


130

คุณสามารถใช้cd -เพื่อกลับไปยังตำแหน่งก่อนหน้าไม่ว่าจะอยู่ที่ไหน


10
อืม ... หลังจากหลายปีผ่าน Ubuntu ฉันก็ไม่รู้ ขอบคุณ
andybleaden

19

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

acd_func.sh

มันเยี่ยมมาก cd --เพื่อดูประวัติของคุณและcd -3ย้อนกลับ 3 ระดับ


ว้าว ... ลิงก์ภูมิศาสตร์ ขณะนี้มี URL ที่ฉันไม่ได้เห็นเป็นเวลานาน <insert Obi-wan JPG>
Michael Butler

1
สรุปสาระสำคัญของความคิดเห็นนี้ <jpg Yoda insert>
Donbhupi


5

นอกจากนี้cd ..สามารถนำคุณกลับไปยังไดเรกทอรีหลักของไดเรกทอรีการทำงานและหากจำเป็นคำสั่งสามารถทำซ้ำได้จนกว่าคุณจะไปถึงที่ที่คุณต้องการ ในความเป็นจริงทุกครั้งที่มันปรากฏขึ้นมันจะพาคุณย้อนกลับไปที่แผนผังไดเรกทอรีซึ่งท้ายที่สุดก็จะจบที่/(ไดเรกทอรีราก) หากคุณเพิ่งทำซ้ำคำสั่ง

ในทางตรงกันข้าม , cd -จริงทำให้ไดเรกทอรีก่อนหน้านี้ทำงานไดเรกทอรีการทำงานปัจจุบัน (ซึ่งเป็นที่รู้จักกัน.) pwdและที่สถานที่ตั้งในระบบแฟ้มที่สามารถพบได้กับ

ดังนั้นทั้งสองcd ..และcd - จะมีประโยชน์ในสถานการณ์ที่แตกต่างกันเมื่อไปที่แผนผังไดเรกทอรีแม้ว่าพวกเขาจะแตกต่างกันไปในส่วนที่กล่าวถึงข้างต้น บางทีคำสั่งที่มีประโยชน์ที่สุดหลังจากที่สนุกกับการทดสอบด้วยสองคำสั่งนี้คือcdซึ่งจะนำคุณกลับไปที่โฮมโฟลเดอร์


-1

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

#!/bin/bash
printf "Number of folders to move back: "
read TIMES
BACKCHARS=../
BACK=$(for i in `seq $TIMES`; do printf $BACKCHARS; done)
cd $BACK

1
การรันcdในสคริปต์จะไม่ส่งผลกระทบต่อพาเรนต์เชลล์ คุณต้องใส่ฟังก์ชันเชลล์ลงไปเพื่อให้เป็นประโยชน์
wjandrea

เช่นนี้:up(){ local n="$1"; while ((n--)); do path+='../'; done; cd "$path"; }
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.