Aprovechar al máximo el comando de historial de Bash de Linux

La línea de comandos de Linux, el terminal, almacena el historial de comandos ejecutados en el pasado por un usuario. Este historial es persistente y permanece en la memoria incluso si reiniciamos nuestro sistema. Podemos recuperar y reutilizar estos comandos almacenados para aprovechar al máximo la función de almacenamiento de historial del bash cáscara.

El Linux bash tiene un comando muy poderoso llamado “historial”. Este comando es una función bash comando que se utiliza para extraer información histórica sobre comandos que han sido ejecutados por usuarios de Linux en todas las sesiones anteriores. En este tutorial, le permitiremos aprovechar al máximo su historial de shell aprendiendo el uso adecuado del comando history. Linux almacena el historial de comandos de un usuario en particular en un archivo ~ / .bash_history de forma predeterminada.

Usaremos la aplicación de terminal de Linux para ejecutar los comandos mencionados en este tutorial.

Visualización del historial completo de Bash

Un usuario puede ver el historial completo de sus comandos de shell desde el archivo de historial guardado exclusivamente para ese usuario mediante el siguiente comando simple:

$ historia

El historial se imprimirá en la pantalla en el siguiente formato predeterminado:

En la imagen de arriba, puede ver una lista de todos los comandos con un número asignado a cada uno de ellos. El comando número 1 corresponde al primer comando que ejecutó y el último comando numerado representa el último comando que ejecutó.

Si ha estado ejecutando muchos comandos desde que usó el bash, observará que habrá cientos e incluso miles de esos comandos mostrados aquí. Para acceder a algunos comandos relevantes, puede filtrar los resultados mostrados por la función de historial. También puede personalizar el comando del historial para que le muestre un número específico de comandos.

Filtrado de la salida del historial de Bash

Si desea filtrar la salida de su historial en función de una palabra clave específica que podría haber usado en los comandos anteriores, puede usar el comando de historial de la siguiente manera:

$ historial | grep

Ejemplo: En esto example, Quiero ver solo los comandos ping que he ejecutado en el shell. Por lo tanto, usaré el siguiente comando:

$ historial | grep ping

Puede ver que mi salida ahora muestra solo los comandos, incluida mi palabra clave de búsqueda “ping”

Ver una cantidad de comandos de shell ejecutados recientemente

También puede ver un número específico de comandos, para example:

  • N número de comandos recientes

O

  • N número de comandos más antiguos

N Número de comandos Bash recientes

Puede ver un número específico de comandos ejecutados recientemente a través del siguiente comando:

$ historial | cola -n

Ejemplo:

En esto example, Quiero ver los últimos 3 comandos que ejecuté, con la palabra clave ‘ping’:

$ historial | grep ping | cola -3

Mostrar número de comandos recientes

La salida solo muestra los 3 comandos de ping recientes en lugar de todo el historial

N Número de comandos Bash más antiguos

Puede ver un número específico de los comandos de ejecución más antiguos a través del siguiente comando:

$ historial | cabeza -n

Ejemplo:

En esto example, Quiero ver los 3 comandos más antiguos que ejecuté, con la palabra clave ‘ping’:

$ historial | grep ping | cabeza -3

Mostrar comandos más antiguos

La salida solo muestra los 3 comandos de ping más antiguos en lugar de todo el historial

Enumere todos los comandos Bash con fecha y marca de tiempo

Si desea ver su historial de comandos junto con la fecha y la marca de tiempo, utilice el siguiente comando de exportación:

$ export HISTTIMEFORMAT = ‘% F,% T’

Ahora, cuando desee ver el historial, simplemente ejecute el comando history para ver el resultado en el siguiente formato:

Enumere todos los comandos con fecha y marca de tiempo

Tenga en cuenta que este cambio de formato es temporal y se restaurará al estándar anterior cuando close La sesión.

Navegación de comandos desde el historial

Mientras está en la línea de comandos, puede navegar a través de los comandos ejecutados anteriormente y también recuperar algunos comandos usados ​​recientemente al proporcionar una palabra clave.

Desplazarse por los comandos

Puede utilizar los siguientes controles de teclado para navegar por los comandos del historial

Flecha arriba / Ctrl + PCon estos controles, puede mostrar el comando anterior que utilizó. Puede presionar estos controles varias veces para volver a un comando específico en el historial.
Flecha abajo / Ctrl + NCon estos controles, puede mostrar el siguiente comando que utilizó. Puede presionar estos controles varias veces para avanzar a un comando específico en el historial.
Alt + RSi edita un comando, que ha extraído del historial, en una línea actual, puede usar este control para revertirlo al comando original.

Recuperación de comandos

Puede recuperar, ejecutar o elegir no ejecutar un comando específico del historial, utilizando los siguientes controles:

Ctrl + RCon este control, puede recuperar un comando del historial especificando una cadena de búsqueda.
Ctrl + OCon este control, puede ejecutar el comando que recordó a través de Ctrl + R
Ctrl + GCon este control, puede salir del historial sin ejecutar el comando que llamó a través de Ctrl + R

Ejemplo:

En esto example, Presioné ctrl + R y luego proporcioné la cadena de búsqueda ‘ar’. El historial muestra el comando ‘arco’.

Ejemplo de comando de historial

Cuando ejecuté el comando ‘arch’ presionando ctrl + O, mostró la arquitectura de la CPU de mi sistema:

comando de arco

Utilizando el historial de Bash

La verdadera magia del bash history es mediante el uso de varios comandos y la personalización del comando history para hacer el mejor uso de la función de historial:

Ejecución de comandos desde el historial

  • Como hemos visto antes, el comando history muestra los comandos asociando un número con cada uno. Al usar el siguiente comando, puede ejecutar un comando determinado del historial, según su número:

PS

Ejemplo:

Aquí estoy ejecutando el comando número 95 de mi historial:

$! 95

Ejecución de comandos desde el historial

La salida muestra el resultado de ‘lscpu’ que se enumeró como el comando número 95 en mi bash historia. Este comando muestra las especificaciones de mi CPU y sistema operativo.

  • Puede volver a ejecutar su comando anterior utilizando el siguiente comando:

PS

Ejemplo:

Aquí puede ver que ejecuté el comando ‘arch’. Al ejecutar el comando mencionado anteriormente, puedo volver a ejecutar el comando ‘arch’ para ver la arquitectura de mi CPU de la siguiente manera:

  • Para buscar un comando en el historial y luego ejecutarlo, use el siguiente comando:

PS

Ejemplo:

Usaré el siguiente comando para volver a ejecutar el último comando con la palabra clave ‘dconf’ en él:

$! dconf

Puede volver a confirmar en la siguiente imagen que fue el último comando dconf que ejecuté.

Usar argumentos de comandos anteriores

Linux bash le permite ejecutar un nuevo comando utilizando argumentos del comando anterior. Es especialmente útil cuando desea evitar volver a escribir argumentos largos o complicados. Puede utilizar el siguiente comando para este propósito:

Usando el último argumento del comando anterior

PS [Command] PS

La variable! $ Tiene almacenado el último argumento del comando anterior.

Ejemplo:

En esto example, Crearé un archivo con un nombre largo.

Nano [longnameOfaFile]

Luego lo copiaré en otra ubicación evitando volver a escribir el nombre largo de la siguiente manera:

Cp! $ [destinationfolder]

Usando el último argumento del comando anterior

¡Puede ver que pude copiar un archivo sin volver a escribir el nombre del archivo usando la variable! $

Usando el primer argumento del comando anterior

A veces, solo el primer argumento del comando anterior es útil en el actual.

En ese caso, puede utilizar el siguiente comando:

PS [command] ! ^

Ejemplo:

En el siguiente example, Ejecuté el comando ping especificando el nombre de host y un recuento como argumentos. Ahora quiero usar el nombre de host (primer argumento) en lugar de 2 (el último argumento) en mi nuevo comando. Usaré el siguiente comando para este propósito:

$ ping! ^

Usando el primer argumento del comando anterior

Usando todos los argumentos del comando anterior

También puede utilizar todos los argumentos del comando anterior mediante el siguiente comando:

PS

Usando un argumento de un comando de historial

También puede usar comandos de su historial reutilizando sus argumentos. Utilice el siguiente comando para este propósito:

PS [command] !: #

Ejemplo:

$ echo! cp: 2

Este comando tomará los siguientes parámetros:

comando: echo

Palabra clave: cp

#: 2 (segundo argumento del comando)

El siguiente resultado muestra el segundo argumento del último comando cp que ejecuté:

Usando un argumento de un comando de historial

Usando todos los argumentos de un comando de historial

El siguiente comando almacenará todos los argumentos del comando del historial buscado y los usará en el comando actual:

$ comando!: *

Ejemplo:

En el siguiente comando, imprimiré todos los argumentos del último comando cp usando el comando echo de la siguiente manera:

$ echo![cp]: *

Usando todos los argumentos de un comando de historial

Modificación y ejecución de comandos anteriores

Si escribió mal un comando o desea volver a ejecutar un comando cambiando algún texto en él; la siguiente es la forma de hacerlo:

$ ^[previoustext]^[newtext]

Ejemplo:

Escribí mal el comando ‘grep’ como ‘gep’ y ahora quiero ejecutar el comando corrigiendo el texto:

$ ^ gep ^ grep

Ahora puede ver que mi comando corregido se ejecutará correctamente de la siguiente manera:

Modificación y ejecución de comandos anteriores

Borrar historial

Para borrar la historia de su bash, use el siguiente comando:

$ historial -c

Este comando borra su historial y elimina todo el contenido del archivo ~ / .bash_history.

En este tutorial, aprendimos que, si bien imprimir todo el contenido del historial no es tan útil, optimizar la salida con los comandos que aprendimos es lo que realmente cambia las reglas del juego. Al practicar con este artículo, podrá mostrar exactamente los comandos que desea, volver a ejecutar y reutilizar esos comandos, y también usar argumentos de comandos ejecutados previamente para optimizar nuevos comandos.