ใช้ popd โดยไม่ต้องลบค่าสุดท้าย


8

ฉันจะได้รับพฤติกรรมการใช้งานpopdโดยไม่ต้อง popping ไดเรกทอรีสุดท้ายจากกอง? กล่าวอีกนัยหนึ่งฉันต้องการนำทางกลับไปยังไดเรกทอรีสุดท้ายที่ฉันตั้งไว้pushdแต่ฉันต้องการให้อยู่ด้านบนสุดของสแต็กดังนั้นถัดไปpopdจะนำฉันไปยังไดเรกทอรีเดียวกัน (ซึ่งจะยังคงอยู่ด้านบนของ สแต็ค) อีกครั้ง


จะไม่ "cd -" ทำงานหรือไม่ ถ้าฉันเข้าใจลำดับคือ: "pushd d1; pushd d2; pushd d3;" และตอนนี้กลับไปที่ d2 ใช่ไหม?
tpb261

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

เห็นได้ชัดว่า .. แต่อย่างใดฉันพลาดส่วน "ตีกลับ" โดยปริยายของคำถามของคุณ
tpb261

คำตอบ:


2

เกี่ยวกับ: cd "$(dirs -l -p | sed -n '2{p;q}')"


เยี่ยมมากขอบคุณ! นั่นคือบางส่วนที่ทุบตีฟูถ้าฉันเคยเห็นมัน ฉันใช้นามแฝงคำสั่งนั้นเป็นpeekd(ชนิดของ C ++ STL-ish และง่ายต่อการจดจำ) ดังนั้นฉันจึงสามารถพิมพ์peekdเพื่อรับพฤติกรรม alias peekd='cd "$(dirs -l -p | sed -n '\''2{p;q}'\'')"'
Freedom_Ben

3
@Freedom_Ben สิ่งนี้สามารถทำให้ง่ายขึ้นcd "$(dirs +1)"
Gilles 'SO- หยุดความชั่วร้าย'

@Gilles เมื่อฉันพยายามทำสิ่งนี้มันบอกว่า "bash: cd <my directory>: ไม่มีไฟล์หรือไดเรกทอรี" แม้ว่าจะมีอยู่อย่างชัดเจน คุณรู้ไหมว่าทำไม cd แปลความหมาย <my directory> เป็นเส้นทางไม่ถูกต้องหรือไม่? จากข้อความแสดงข้อผิดพลาดดูเหมือนว่าจะทำงานได้ นั่นคือ <ไดเรกทอรีของฉัน> ดูถูกต้องและหากฉันเพียงพิมพ์ "cd <ไดเรกทอรีของฉัน>" มันจะทำงาน
nukeguy

1
@nukeguy <my directory>เริ่มต้นด้วย tilde หรือไม่? ความคิดเห็นของฉันด้านบนไม่มี-lตัวเลือกในการแสดงรายการไดเรกทอรีเต็มแทนที่จะใช้~ตัวย่อ ควรเป็นcd "(dirs -l +1)"
Gilles 'หยุดความชั่วร้าย'

@Gilles ใช่! นั่นคือสิ่งที่ฉันกำลังมองหาขอบคุณ! บางทีคุณควรโพสต์ความคิดเห็นของคุณเป็นโซลูชันแยกต่างหาก - ในความคิดของฉันมันเป็นตัวเลือกทั่วไปและมีประโยชน์มากที่สุดในหัวข้อนี้
nukeguy

10

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

เริ่มต้นใน d1 ดำเนินการ pushd d2 เพิ่ม d1 และ d2 ไปยังสแต็กและทำให้คุณอยู่ใน d2 ดำเนินการ pushd อีกครั้งโดยไม่มีข้อโต้แย้งและคุณกลับมาใน d1 โดยที่ d1 และ d2 กลับด้านบนสแต็ก


6

หากฉันเข้าใจถูกต้องคุณสามารถทำได้pushd .หลังจากpopdนั้นpopไดเรกทอรี ed จะถูกวางอีกครั้งที่ด้านบนสุดของสแต็ก


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