Cáscara

Aprovechar al máximo el historial de Bash de Linux

Aprovechar al máximo el historial de Bash de Linux

Línea de comandos de Linux: la Terminal, como todos los shells, mantiene un historial de los comandos ejecutados en el pasado por un usuario. Este historial es persistente y permanece en la memoria incluso cuando reiniciamos nuestro sistema. Estos comandos almacenados pueden ser recuperados y reutilizados por nosotros de la manera más óptima para usar de manera eficiente la función de guardar historial de la mayoría de los shells.

El bash de Linux viene con un comando muy poderoso llamado "historial". Este comando es un comando bash integrado, que se utiliza para extraer la información del historial sobre los comandos que han ejecutado los usuarios de Linux en todas las sesiones anteriores. En este tutorial, le permitiremos obtener lo mejor de su historial de shell aprendiendo el uso adecuado del comando history. Linux almacena el historial de comandos de un determinado usuario en un archivo ~ /.bash_history por defecto.

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

Ver el historial completo

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:

$ historial

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 de historial para mostrar una cantidad específica de comandos para usted.

Filtrar la salida del historial

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 [palabra clave]

Ejemplo: En este ejemplo, quiero ver solo los comandos de 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 la palabra clave de búsqueda "ping"

Visualización de varios comandos recientes

También puede ver una cantidad específica de comandos, por ejemplo:

O

N Número de comandos recientes

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

$ historial | cola -n

Ejemplo:

En este ejemplo, quiero ver los últimos 3 comandos que ejecuté, con la palabra clave 'ping':

$ historial | grep ping | cola -3

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

N Número de comandos 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 este ejemplo, quiero ver los 3 comandos más antiguos que ejecuté, con la palabra clave 'ping':

$ historial | grep ping | cabeza -3

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

Enumere todos los comandos 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:

Tenga en cuenta que este cambio de formato es temporal y se restaurará al estándar anterior cuando cierre 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 este ejemplo, presioné ctrl + R y luego proporcioné la cadena de búsqueda 'ar'. El historial muestra el comando 'arco'.

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

Utilizando el historial de Bash

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

Ejecución de comandos desde el historial

PS !#

Ejemplo:

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

PS !95

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

PS !!

Ejemplo:

Aquí puedes 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:

PS ![palabra clave]

Ejemplo:

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

PS !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

$ [Comando] !PS

La variable !$ tiene el último argumento del comando anterior almacenado en él.

Ejemplo:

En este ejemplo, 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 !$ [carpeta de destino]

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

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:

$ [comando] !^

Ejemplo:

En el siguiente ejemplo, 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 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:

$ [comando] ![palabra clave]:#

Ejemplo:

$ echo !cp: 2

Este comando tomará los siguientes parámetros:

comando: echo

Palabra clave: cp

#: 2 (segundo argumento del comando)

La siguiente salida muestra el segundo argumento del último comando cp que ejecuté:

Usar 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 ![palabra clave]:*

Ejemplo:

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

$ echo ![cp]: *

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:

$ ^ [texto anterior] ^ [texto nuevo]

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:

Borrar historial

Para borrar el historial de su bash, use el siguiente comando:

$ historial -c

Este comando borrará su historial y eliminará todo el contenido del archivo ~ /.bash_history

En este tutorial hemos aprendido que, si bien imprimir todo el contenido del historial puede no ser tan útil, optimizar la salida a través de los comandos que aprendimos es lo que realmente cambia el juego. Practicar junto con este artículo le permitirá ver los comandos exactos que desea, volver a ejecutar y reutilizar esos comandos, y también usar argumentos de comandos ejecutados anteriormente para optimizar los nuevos.

Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...