กำหนดค่าลูกศรขึ้นเพื่อเรียกดูคำสั่งที่มีอักขระเริ่มต้นเหมือนกันแทนที่จะเป็นคำสั่งก่อนหน้าทั้งหมด


15

ในbashบรรทัดคำสั่งให้ฉันคำสั่งก่อนหน้า ในคำสั่งบรรทัดในnumpyหรือmatlabเมื่อฉันพิมพ์ตัวอักษรไม่กี่ทำให้ผมมีคำสั่งก่อนหน้านี้ที่เริ่มต้นด้วยตัวอักษรเหล่านั้น ฉันจะเปิดใช้งานลักษณะการทำงานนี้ได้bashอย่างไร

ฉันทราบวิธีการค้นหาขั้นสูงเพิ่มเติมผ่านประวัติบรรทัดคำสั่ง แต่บางครั้งวิธีที่ง่ายกว่าก็สะดวกกว่า

คำตอบ:


18

คำสั่ง readline ที่คุณกำลังค้นหาคือhistory-search-*คำสั่ง:

history-search-forward
ค้นหาไปข้างหน้าผ่านประวัติของสตริงอักขระระหว่างจุดเริ่มต้นของบรรทัดปัจจุบันและตำแหน่งเคอร์เซอร์ปัจจุบัน (จุด) นี่คือการค้นหาที่ไม่เพิ่มขึ้น
history-search-backward
ค้นหาย้อนหลังผ่านประวัติของสตริงอักขระระหว่างจุดเริ่มต้นของบรรทัดปัจจุบันและจุด นี่คือการค้นหาที่ไม่เพิ่มขึ้น

ผูกเหล่านี้ในของคุณ.inputrcเช่น:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

จะอนุญาตให้คุณป้อนอักขระตัวแรกของคำสั่งจากนั้นใช้ปุ่มUpและDownเพื่อเลื่อนดูเฉพาะคำสั่งเหล่านั้นในข้อความ.bash_historyที่ขึ้นต้นด้วยสตริงนั้น

ยกตัวอย่างเช่นการป้อนviและUpจะพาคุณไปยังคำสั่งก่อนหน้าแรกเริ่มต้นด้วยเช่นvi vim somefileการป้อนUpจะนำคุณไปยังอินสแตนซ์ก่อนหน้าถัดไปและอื่น ๆ

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการรวม readline ทั้งหมดได้ที่นี่: http://linux.about.com/library/cmd/blcmdl3_readline.htm


10

เพิ่มสิ่งต่อไปนี้ใน. inputrc ของคุณใน ~ /, เพื่อทำสิ่งที่คุณแนะนำ:

"\e[B": history-search-forward
"\e[A": history-search-backward

บางทีคุณอาจต้องการเพิ่มสิ่งต่อไปนี้ใน. bash_profile ของคุณ:

export INPUTRC=~/.inputrc

คุณสามารถอธิบายรายละเอียดว่าทำไมจึงทำการ "ส่งออก"
texnic

2

เติม "!" คำสั่งที่คุณกำลังมองหา หากคุณต้องการแทนที่การทำงานของลูกศรขึ้นและลงการแก้ไขไฟล์ inputrc (เช่นคำตอบอื่น ๆ ที่แนะนำ) เป็นวิธีที่จะไป

หาก "command" เป็นคำสั่งที่คุณค้นหาให้ป้อนสิ่งนี้:

!comm

คุณควรได้รับ "คำสั่ง" เป็นผลลัพธ์

ในทำนองเดียวกันหากคุณต้องการค้นหาคำสั่งที่มีส่วนหนึ่งของคำสั่ง (แต่อาจไม่ได้ขึ้นต้นด้วย) ให้กด ctrl + r แล้วพิมพ์ส่วนหนึ่งของคำสั่ง

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

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ "การเรียนรู้" ไฟล์ประวัติได้ที่นี่: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

นี่เป็นความซ้ำซ้อนที่เป็นไปได้ของ/programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line


คำตอบอื่น ๆ ตอบคำถามของฉันได้อย่างถูกต้องมากขึ้น แต่ขอบคุณสำหรับตัวชี้ไปที่ SO (ดูเพิ่มเติมที่meta.stackexchange.com/q/4708/172266 )
gerrit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.