He buscado, pero no he encontrado nada al respecto. Estoy buscando una funcionalidad en bash, usando un terminal.
Hace mucho tiempo, tenía un usuario en un sistema Debian, y un amigo me configuró con una conveniente función de búsqueda de historial (creo que usé tcsh entonces), donde escribiría el comienzo de un comando anterior, presionar la flecha hacia arriba, y haría una búsqueda, basada en la cadena parcial.
Por ejemplo, si mi historia es:
./script.pl
./script.pl arg1
cat output
cat output | grep yada
Y escribo .
, y pulse la flecha hacia arriba, me gustaría mostrar: ./script.pl arg1
. Presiónelo nuevamente y se mostrará ./script.pl
, etc.
Muy parecido a realizar una grep
.bash_history. ¿Hay alguna manera de obtener esta funcionalidad?
Respuestas:
Pon las siguientes líneas en tu
~/.inputrc
:Las líneas que comienzan con
#
son comentarios. No puedo recordar lo que está hacia atrás y hacia adelante. Experimenta con eso. Tal vez tienes que cambiar hacia atrás y hacia adelante.Un poco de información de fondo:
Bash está usando readline para manejar la solicitud.
~/.inputrc
es el archivo de configuración para readline. Tenga en cuenta que esto también tendrá efecto en otro software que use la biblioteca readline, por ejemplo IPython .Lea el manual de bash para obtener más información sobre readline. Allí también puede encontrar más comandos de línea de lectura relacionados con el historial .
Para obtener los códigos de escape para las teclas de flecha, puede hacer lo siguiente:
cat
en una terminal (simplementecat
, sin más argumentos).^[[A
flecha hacia arriba y flecha^[[B
hacia abajo.^[
con\e
.fuente
$include /etc/inputrc
, agregue , preferiblemente en la primera línea.Cree un archivo llamado setup_readline.sh con el modo 644 en /etc/profile.d/ con el siguiente contenido, inicie sesión y verifique sus claves preferidas:
Creo que es la mejor manera de hacer esto. Principalmente si utiliza sistemas de gestión de configuración como chef, títeres, etc.
¡Y la configuración del sistema sigue intacta!
fuente
screen
. Lo extraño es que otros atajos .inputrc funcionan, pero no estos. Entonces uso ambas soluciones ahora.Ctrl + R le dará este tipo de funcionalidad. Comience a escribir un comando parcial y aparecerá uno antiguo que puede navegar con las flechas hacia arriba y hacia abajo. Más información: http://www.nuxified.org/blog/ctrl_r_in_the_bash_shell
fuente
Ctrl+r
Para completar la respuesta de lesmana con respecto a "~ / .inputrc" que debo crear en mi Trusty 14.04, verifique / agregue "~ / .bashrc" (la primera línea ya existe en mi "~ / .bashrc"):
Ya está explicado en francés en https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique .
fuente
Tal vez desee probar https://github.com/dvorka/hstr que proporciona un filtrado simple y de varias líneas del historial de Bash que se basa en una métrica (cuándo, con qué frecuencia y la longitud de los comandos son importantes): puede usar teclas de flecha para navegar fácilmente por el historial:
Puede ser fácilmente vinculado a Ctrl-ry / oCtrl-s
fuente
La siguiente solución combina y extiende algunos de los enfoques mencionados anteriormente: agregue las siguientes líneas a su
~/.bash_aliases
archivo (no es necesario~/.inputrc
) para lograr el siguiente comportamiento:Vuelva a iniciar sesión en el shell (o ejecute
source ./bash_aliases
) para aplicar los cambios.fuente