miércoles, 19 de agosto de 2015

Buscando en el Historial

En cualquier momento, podemos ver el contenido del historial así:

[me@linuxbox ~]$ history | less

Por defecto, bash almacena los últimos 500 comandos que has utilizado. Veremos cómo ajustar este valor en un capítulo posterior. Digamos que queremos encontrar los comandos que hemos usado para listar /usr/bin. Una de las formas en que podríamos hacerlo sería así:

[me@linuxbox ~]$ history | grep /usr/bin

Y digamos que entre los resultados tenemos una línea que contiene un comando interesante como este:

88 ls -l /usr/bin > ls-output.txt

El número “88” es el número de línea del comando en el historial. Podríamos usarlo inmediatamente mediante otro tipo de expansión llamada expansión del historial. Para utilizar la línea que hemos descubierto podríamos hacer esto:

[me@linuxbox ~]$ !88

bash expandirá “!88” en el contenido de la octogésimo octava línea del historial. Hay otras formas de expandir el historial que veremos un poco más tarde.

bash cuenta también con la capacidad de buscar en el historial incrementalmente. Esto significa que podemos decirle a bash que busque en el historial mientras vamos introduciendo caracteres, con cada carácter adicional más refinada será nuestra búsqueda. Para empezar una búsqueda incremental pulsamos Ctrl-r seguido del texto que estamos buscando. Cuando lo encuentras, puedes pulsar Enter para ejecutar el comando o pulsar Ctrl-j para copiar la línea del historial a la actual línea de la consola. Para buscar la siguiente coincidencia del texto (en el sentido “hacia arriba” en el historial), pulsamos Ctrl-r de nuevo. Para dejar de buscar, pulsamos Ctrl-g o Ctrl-c. Aquí lo vemos en acción:

[me@linuxbox ~]$

Primero pulsamos Ctrl-r:

(reverse-i-search)`':

El prompt cambia para indicar que estamos realizando una búsqueda incremental inversa. Es “inversa” porque estamos buscando desde “ahora” a algún momento en el pasado. A continuación, empezamos a escribir nuestro texto de búsqueda. En este ejemplo “/usr/bin”:

(reverse-i-search)`/usr/bin': ls -l /usr/bin > ls-output.txt

Inmediatamente, la búsqueda nos devuelve nuestro resultado. Con nuestro resultado podemos ejecutar el comando presionando Enter, o copiarlo a nuestra línea de comandos actual para editarlo presionando Ctrl-j. Vamos a copiarlo. Pulsamos Ctrl-j:

[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt

Nuestro prompt de shell vuelve y nuestra línea de comandos está cargada y ¡lista para la acción!

La siguiente tabla enumera algunas de las combinaciones de teclas usadas para manipular el historial:

Tabla 8-5: Comandos del historial
Tecla Acción
Ctrl-p Se mueve a la anterior entrada del historial. Misma acción que la flecha hacia arriba.
Ctrl-n Se mueve a la siguiente entrada del historial. Misma acción que la flecha hacia abajo.
Alt-< Se mueve al principio (arriba) del historial.
Alt-> Se mueve al final (abajo) del historial, es decir, la actual línea de comandos.
Ctrl-r Búsqueda incremental inversa. Busca incrementalmente desde la actual línea de  comandos hacia arriba en el historial.
Alt-p Búsqueda inversa, no incremental. Con esta combinación de teclas, escribes las palabras a buscar y presionas enter antes de que la búsqueda se realice.
Alt-n Búsqueda hacia adelante, no incremental.
Ctrl-o Ejecuta el elemento actual en el historial y avanza al siguiente. Esto es práctico si estás intentando reejecutar una secuencia de comandos del historial.

No hay comentarios:

Publicar un comentario