Configure la flecha hacia arriba para examinar los comandos con los mismos caracteres iniciales en lugar de todos los comandos anteriores


15

En la bashlínea de comandos, me da el comando anterior. En las líneas de comando en numpyo matlab, cuando escribo algunos caracteres, me da el comando ingresado previamente que comienza con esos caracteres . ¿Cómo puedo habilitar exactamente este comportamiento bash?

Conozco formas más avanzadas de buscar en el historial de la línea de comandos, pero a veces una forma simple es más conveniente.

Respuestas:


18

Los comandos de readline que está buscando son los history-search-*comandos:

history-search-forward
Busca en el historial la cadena de caracteres entre el comienzo de la línea actual y la posición actual del cursor (el punto). Esta es una búsqueda no incremental.
history-search-backward
Busca hacia atrás a través del historial la cadena de caracteres entre el inicio de la línea actual y el punto. Esta es una búsqueda no incremental.

Vinculando estos en su .inputrc, así:

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

le permitirá ingresar los primeros caracteres de un comando, y luego usar las teclas Upy Downpara moverse a través de los comandos .bash_historyque comienzan con esa cadena.

Por ejemplo, al ingresar viy al Upiría al primer comando anterior que comienza con vi, como vim somefile. Entrar Upte llevaría a la siguiente instancia anterior, y así sucesivamente.

Puede leer más sobre todos los enlaces de readline aquí: http://linux.about.com/library/cmd/blcmdl3_readline.htm


10

Agregue lo siguiente a su .inputrc en ~ /, para hacer lo que sugirió:

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

Quizás también desee agregar lo siguiente a su .bash_profile:

export INPUTRC=~/.inputrc

¿Puedes explicar por qué hacer esta "exportación"?
texnic

2

Anteponer un "!" al comando que estás buscando. Si desea reemplazar la funcionalidad de las flechas hacia arriba y hacia abajo, el camino a seguir es modificar el archivo inputrc (como sugieren las otras respuestas).

Si "comando" es el comando que está buscando, ingrese esto:

!comm

Debería obtener "comando" como salida.

Del mismo modo, si desea encontrar un comando que incluya (pero no comience con) parte del comando, presione ctrl + r y luego escriba parte del comando.

También puede escribir "pestaña" para completar automáticamente el texto ingresado (esto también incluye archivos). Esto es útil si está buscando un comando que no está en su historial (o no tiene un archivo de historial)

Puede leer más sobre "dominar" el archivo de historial aquí: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

Este es un posible duplicado de /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line


Las otras respuestas responden más correctamente mi pregunta, pero gracias por el puntero a SO (ver también meta.stackexchange.com/q/4708/172266 ).
gerrit
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.