ความสมบูรณ์ของบรรทัดคำสั่งจากประวัติคำสั่ง


84

ดังนั้นฉันจึงดูประวัติและที่Ctrl+ Rแต่พวกเขาไม่ใช่สิ่งที่ฉันคิดว่าฉันรู้ มีวิธีที่ฉันสามารถพิมพ์ในตอนต้นของคำสั่งและรอบการแข่งขันในประวัติศาสตร์ของฉันด้วยทางลัดทุบตี?

# mysq(some shortcut key)

ให้ฉัน:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

หมายเหตุด้านข้าง: มี '<kbd> Alt + Tab </kbd>' สำหรับ tty โดยไม่มีเดสก์ท็อป
neverMind9

คำตอบ:


90

กดCtrl+ Rจะเปิดการค้นหาประวัติย้อนกลับ ตอนนี้เริ่มพิมพ์คำสั่งของคุณสิ่งนี้จะให้คู่แรก ด้วยการกดCtrl+ Rอีกครั้ง (และอีกครั้ง) คุณสามารถวนดูประวัติ

mysq(Ctrl+R)

จะให้:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rอีกครั้ง:

mysql -u ben.dauphinee -p

5
ขอบคุณ นอกจากนี้ Esc จะวางคำสั่งที่เลือกไว้บนบรรทัดคำสั่งของคุณโดยไม่ต้องดำเนินการในขณะที่ Enter จะเรียกใช้คำสั่งที่เลือก
Ben Dauphinee

3
ฉันคิดว่า CTRL + E นั้นดีกว่า ESC มากกว่านี้เพราะการหลบหนีนั้นไม่สะดวกเท่าที่ควร แต่ฉันกด CTRL + R อยู่แล้วดังนั้น E อยู่ตรงนั้น นอกจากนี้ยังวางตำแหน่งเคอร์เซอร์ที่ท้ายบรรทัดซึ่งมีประโยชน์ในกรณีที่ฉันต้องการเปลี่ยนบางสิ่ง (เช่นชื่อไฟล์) ซึ่งฉันพบว่าเป็นกรณีทั่วไป
Sorpigal

น่าเศร้าที่มันใช้งานไม่ได้กับ Cygwin
ATorras

2
อย่างน้อยใน mac ดูเหมือนว่าmysq(CTRL+R)(CTRL+R)จะไม่วนคำสั่งที่ขึ้นต้นด้วย "mysq" คุณต้องทำ(CTRL+R)mysq(CTRL+R)แทน
BlueRaja - Danny Pflughoeft

62

เพื่อขยายสิ่งที่ Gilles พูดฉันมีดังต่อไปนี้ใน.inputrcการผูกปุ่มลูกศรขึ้น / ลงเพื่อhistory-search-backwardและhistory-search-forward:

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

เพียงพิมพ์บางอย่าง (เป็นทางเลือก) จากนั้นกดปุ่มลูกศรขึ้น / ลงเพื่อค้นหาคำสั่งประวัติที่เริ่มต้นด้วยสิ่งที่คุณพิมพ์

การทำเช่นนี้ใน.bashrcมากกว่า.inputrcคุณสามารถใช้:

bind '"\e[A": history-search-backward'

3
การผูกเหล่านั้นอยู่ใน ~ / .inputrc ... ขอบคุณที่สนับสนุนความขี้เกียจของฉัน
Martin Zeitler

เป็นที่น่าสังเกตว่า '\ e' นั้นมีความสำคัญอย่างน้อยสำหรับผู้เริ่มต้นรุ่นใหม่ เพียงพิมพ์ Ctrl-V เพื่อให้การกดแป้นสำหรับคำสั่งของคุณไม่ได้บอกเรื่องราวทั้งหมด ตัวอย่างเช่นการพิมพ์ Ctrl-V Meta-P (เช่น) Alt-P) ส่งคืน ^ [p - เพื่อให้ได้พฤติกรรมที่คุณต้องการแทนที่ "^ [" ด้วย '\ e'
MrMas

เห็นด้วยกับ @syslogic - ใส่บรรทัดใน. inputput และวางการเชื่อมโยงและเครื่องหมายคำพูดเดี่ยว
MrMas

คัดลอกวางลงใน. inputrc บน osx ฉันได้รับ: source ~ / .inputrc -bash: \ e [คำสั่ง A :: ไม่พบคำสั่ง -bash: \ e [B :: คำสั่งไม่พบคำสั่ง -bash: \ eOA :: ไม่พบ -bash: \ eOB :: ไม่พบคำสั่ง
Walrus the Cat

1
ดูsuperuser.com/questions/241187/how-do-i-reload-inputrc คุณไม่สามารถหาแหล่งไฟล์ได้
raychi

7

คุณสามารถกดPAGEUPปุ่มเพื่อป้อนคำสั่งอัตโนมัติ มันเป็นพื้นค้นหาbash_historyไฟล์


คุณต้องยกเลิกการ/etc/inputrcใส่$HOME/.inputrc"\e[5~": history-search-backward "\e[6~": history-search-forward
เครื่องหมาย

5

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

Zsh (zle) มีคำสั่งที่คล้ายกันhistory-beginning-search-backwardและhistory-beginning-search-forwardไม่ผูกไว้กับปุ่มตามค่าเริ่มต้น นอกจากนี้ยังมีhistory-search-backwardและhistory-search-forwardซึ่งใช้คำแรกของคำสั่งปัจจุบันเป็นคำนำหน้าในการค้นหาโดยไม่คำนึงถึงตำแหน่งเคอร์เซอร์


4

หากคุณต้องการภาพรวมที่ดีของคำสั่งที่คล้ายกันมากคุณสามารถรับรายการด้วย:

history|grep KEYSTRING

จากนั้นคัดลอกและวางด้วยปุ่มกลางของเมาส์

Rgds - โจ

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