Finalización de la línea de comandos desde el historial de comandos


85

Entonces, miré la historia y el Ctrl+ R, pero no son lo que pensé que sabía. ¿Hay alguna forma en que pueda escribir al comienzo de un comando y recorrer las coincidencias en mi historial con algún atajo bash?

# mysq(some shortcut key)

Me da

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

Nota al margen: hay '<kbd> Alt + Tab </kbd>' para tty's sin escritorio.
neverMind9

Respuestas:


91

Al presionar Ctrl+ Rse abrirá la búsqueda del historial inverso. Ahora comience a escribir su comando, esto le dará la primera coincidencia. Al presionar Ctrl+ Rnuevamente (y nuevamente) puede recorrer el historial.

mysq(Ctrl+R)

Daría:

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

Ctrl+ Rotra vez:

mysql -u ben.dauphinee -p

55
Gracias. Además, Esc pondrá el comando seleccionado en su línea de comando sin ejecutarlo, mientras que Enter ejecutará el comando seleccionado.
Ben Dauphinee

3
Encuentro CTRL + E mejor para esto que ESC, porque escapar es difícil de alcanzar pero ya estoy presionando CTRL + R, por lo que E está ahí. Esto también coloca el cursor al final de la línea, lo cual es útil en caso de que quiera cambiar algo (como un nombre de archivo) que considero un caso común.
Sorpigal

Lamentablemente, no funciona en Cygwin
ATorras

2
En mac, al menos, parece mysq(CTRL+R)(CTRL+R)que no pasa por los comandos que comienzan con "mysq". Tienes que hacer en su (CTRL+R)mysq(CTRL+R)lugar
BlueRaja - Danny Pflughoeft

62

Para ampliar lo que dijo Gilles, tengo lo siguiente en mi .inputrcpara vincular la tecla de flecha arriba / abajo history-search-backwardy 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

Simplemente escriba algo (opcional), luego presione la tecla de flecha arriba / abajo para buscar en el historial los comandos que comienzan con lo que escribió.

Para hacer esto en .bashrclugar de .inputrc, puedes usar:

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

3
esos enlaces pertenecen a ~ / .inputrc ... gracias por apoyar mi pereza.
Martin Zeitler

Vale la pena señalar que el '\ e' es crucial, al menos para los debutantes de bash. Simplemente escribir Ctrl-V para obtener la combinación de teclas para su comando no cuenta toda la historia. Por ejemplo, si escribe Ctrl-V Meta-P (es decir, Alt-P), se obtiene ^ [p - para obtener el comportamiento que desea, reemplace "^ [" con '\ e'.
MrMas

De acuerdo con @syslogic: coloque las líneas en .inputrc y suelte el enlace y las comillas simples.
MrMas

copiando esto en .inputrc en osx, obtengo: source ~ / .inputrc -bash: \ e [A :: comando no encontrado -bash: \ e [B :: comando no encontrado -bash: \ eOA :: comando no encontrado -bash: \ eOB :: comando no encontrado
Walrus the Cat

1
Consulte superuser.com/questions/241187/how-do-i-reload-inputrc . No puedes obtener el archivo.
raychi

7

También puede presionar el PAGEUPbotón para completar automáticamente un comando. Básicamente busca el bash_historyarchivo.


Debe descomentar dos líneas /etc/inputrco agregar estas dos líneas a su $HOME/.inputrcarchivo: "\e[5~": history-search-backward "\e[6~": history-search-forward
garlix

5

Puede usar los comandos de línea de lectura history-search-backwardy history-search-forwardnavegar entre las líneas de comandos que comienzan con el prefijo que ya ha escrito. Ninguno de estos comandos está vinculado a las teclas en la configuración predeterminada.

Zsh (zle) tiene comandos similares history-beginning-search-backwardy history-beginning-search-forward, por defecto, no está vinculado a teclas. También hay history-search-backwardy history-search-forward, que utiliza la primera palabra del comando actual como prefijo para buscar independientemente de la posición del cursor.


4

Si desea una buena visión general de comandos muy similares, puede obtener una lista con:

history|grep KEYSTRING

Luego copie y pegue con el botón central de su mouse.

Rgds - Joe

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.