GNU/Linux >> Tutoriales Linux >  >> Linux

Salve el día con éxito con los comandos del historial de Bash

¿Has sentido de alguna manera que ejecutaste comandos que se suponía que no debías? ¿Arruinaron las cosas y te dejaron desconcertado acerca de lo que pasó? Con los comandos de historial de Bash, se ahorra los dolores de cabeza de averiguar qué estropeó qué y ahorra tiempo al volver a ejecutar comandos complejos.

¿No eres un lector? ¡Mira este video tutorial relacionado! ¿No ve el video? Asegúrate de que tu bloqueador de anuncios esté deshabilitado.

En este tutorial, aprenderá algunos de los comandos de historial de Bash más útiles y nunca perderá la pista de las ejecuciones de sus comandos.

¡Sigue leyendo y deja que la historia de Bash salve el día!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente.

  • Una máquina con Linux:este tutorial usa Ubuntu 20.04, pero cualquier distribución de Linux funcionará.
  • Una cuenta de usuario con privilegios de root.

Ver el historial de Bash

La mayoría de las distribuciones de Linux usan Bash como shell predeterminado. Al igual que otros entornos de shell, Bash mantiene un registro de los comandos que ha ejecutado anteriormente. Este registro se guarda y mantiene en un archivo llamado ~/.bash_history incluso si reinicia su sistema.

Pero, ¿cómo ves el historial de Bash? Ejecutando el history comando por sí solo o canalizado con otro comando.

1. Ejecute el history comando a continuación para mostrar el historial de comandos.

history

A continuación, puede ver la lista completa de comandos ejecutados por el usuario root en la sesión de shell actual. De forma predeterminada, los comandos se muestran en la lista del más antiguo al más reciente (de arriba a abajo).

El siguiente resultado muestra solo un pequeño fragmento de todo el archivo histórico. En muchos casos, obtendrá miles de líneas de historial y tendrá dificultades para desplazarse por ellas. Pero siga leyendo y aprenderá a personalizar la salida de la manera que desee en los siguientes pasos.

2. A continuación, ejecute el history comando a continuación para ver el último 10 Comandos registrados en el historial de Bash. Reemplazar 10 con el número de líneas que desea mostrar.

history 10

Como puede ver a continuación, la salida es mucho más manejable.

3. Por último, ejecute el siguiente comando canalizado con el head comando para enumerar solo los primeros diez (más antiguos) comandos ejecutados por el usuario raíz en la sesión actual.

Al igual que en el paso dos, reemplace 10 con la cantidad de líneas que desea mostrar.

history 10 | head

Como se muestra a continuación, ver los comandos más antiguos es útil cuando se verifican los comandos que se ejecutaron al comienzo de una sesión.

Ver el historial de comandos de Bash por fecha y hora

El history El comando es útil pero no muestra la fecha y la hora en que ejecutó los comandos. La información de fecha y hora puede ser beneficiosa para solucionar problemas o encontrar la causa de un problema.

Afortunadamente, puede obtener esta información configurando el formato de fecha y hora del historial de Bash en el HISTTIMEFORMAT variables.

Ejecute el siguiente comando para establecer la fecha (%F ) y hora (%T ) formato del historial de Bash, donde:

  • El %F la opción es para la fecha completa, que se muestra en formato año-mes-día.
  • El %T La opción es para la hora, que se muestra en formato de hora:minuto:segundo (24 horas). Tenga en cuenta que deberá agregar un espacio después del %T opción para separarlo de los comandos.
HISTTIMEFORMAT='%F, %T '

Puede usar cualquier combinación de las opciones de formato. Por ejemplo, si solo desea mostrar la hora en que ejecutó los comandos, use %T . O usa el %F opción Si solo desea mostrar la fecha en su lugar.

Ahora, ejecuta el history Comando solo para ver el historial de Bash.

history

Como puede ver a continuación, la salida ahora incluye la fecha y la hora en que se ejecutaron los comandos.

Buscar en el historial de Bash

Ha visto cómo ver el historial de Bash y controlar la cantidad de comandos para ver. Pero, ¿qué sucede si desea encontrar un comando en particular en su historial de Bash y no recuerda exactamente cuál era? Canalizando otros comandos, como grep , al history el comando hará el truco.

Ejecute el siguiente comando para recopilar (grep ) cada línea de comandos en el historial de Bash que contiene el ls e imprime los últimos cinco (5 ) comandos. El -i opción le dice a grep para ignorar mayúsculas y minúsculas de cada línea de comando.

Asegúrese de reemplazar ls con la palabra o frase que desea buscar.

De forma predeterminada, el comando grep maneja la distinción entre mayúsculas y minúsculas, mostrando la distinción entre mayúsculas y minúsculas en el archivo. Por ejemplo, si busca "ls", verá comandos con "ls", pero no "LS" ni "Ls".

history 5 | grep -i ls

Puede ver a continuación que se muestran los últimos cinco comandos con "ls", independientemente de las mayúsculas y minúsculas.

Ejecución de comandos desde el historial de Bash con designadores de eventos

Ya sabe cómo ver los comandos de su historial de Bash en diferentes salidas. Pero, ¿sabía que también puede ejecutar comandos desde su historial de Bash sin tener que volver a escribir todo?

Esta característica ahorra tiempo cuando ejecuta los mismos comandos varias veces usando designadores de eventos. Los designadores de eventos le permiten hacer referencia a un comando por su posición en la lista del historial y son útiles cuando se vuelven a ejecutar comandos complejos.

Para ejecutar un comando de su historial de Bash, escribirá un signo de exclamación (! ) seguido del número del comando a ejecutar.

1. Vea el historial de Bash con cualquier método que haya aprendido hasta ahora. Pero el tutorial ejecuta el history comando sin opciones o comandos canalizados.

history

Los números en la columna de la izquierda en la salida a continuación son los números del historial de comandos llamados designadores de eventos.

Anote el número del comando que desea volver a ejecutar desde el historial de Bash, en este caso, el comando apt install sudo.

2. A continuación, ejecute el siguiente comando para ejecutar el 11 (!11 ) comando de su historial de Bash

!11

Puede ver a continuación que ejecuta el comando apt install sudo ejecutando el comando !11.

Tal vez le guste ejecutar el comando en seco antes de ejecutarlo realmente. Si es así, agregue la opción :p a cualquiera de sus comandos de destino, como se muestra a continuación. Esta opción es útil si no quiere estropear las cosas si vuelve a ejecutar un comando.

!11:p

Observe a continuación que el comando !11:p imprime el comando de destino del historial de Bash sin ejecutarlo.

3. Ejecute el siguiente comando (!! ) si quizás desea ejecutar el último comando en el historial de Bash. Este comando es útil cuando accidentalmente sale de un comando u olvida ejecutar un con sudo privilegios

!!

Puedes ver debajo el !! El comando ejecuta el último comando en el historial de Bash, el comando history 5.

4. Ahora, ejecute el siguiente comando para volver a ejecutar un comando precedido de sudo, tal vez el touch comando, del historial de Bash. Si olvidó anteponer el sudo en un comando anterior, esta función es útil si está utilizando un usuario que no es root.

sudo !!

5. Por último, ejecute los siguientes comandos para configurar el comando ping como el último comando y vuelva a ejecutar el último comando en el historial de Bash especificando el nombre del comando.

Esta función es útil si recuerda el comienzo del nombre del comando, por lo que no tiene que ver y buscar en el historial de Bash.

# Ping google.com
ping google.com
# Rerun the specified command (ping)
!ping

Puede ver a continuación que el comando !ping encuentra el comando más reciente que comienza con ping y vuelve a ejecutar ese comando.

Reutilización de argumentos del historial de Bash

Volver a ejecutar comandos del historial sin volver a escribir todo es divertido, ¿verdad? Pero, ¿qué sucede si desea ejecutar un nuevo comando mientras usa argumentos de otro comando? En este caso, usando el !$ El designador de eventos es útil para designar el último argumento del comando anterior.

Al igual que los ejemplos anteriores, !$ le permite reutilizar argumentos largos o complicados sin volver a escribirlos. Por ejemplo, crea un archivo nuevo con una ruta y un nombre de archivo largos y desea usar el mismo nombre para otro archivo. Así que no tienes que escribirlo de nuevo. Puede hacerlo escribiendo el siguiente comando.

Ejecute los siguientes comandos para crear un archivo con una ruta larga y un nombre de archivo y abra el archivo en un editor de texto sin volver a escribir la ruta completa del archivo.

# Creates a file called this_is_a_long_file_name
touch /home/ata/Documents/this_is_a_long_file_name
# Expand to the last command's arguments and 
# opens the this_is_a_long_file_name file in a text editor
nano !$

Como puede ver a continuación, usando el !$ El designador de eventos le ahorra mucho tiempo al volver a ejecutar comandos con argumentos largos o complicados.

Conclusión

En este artículo, aprendió a usar los comandos del historial de Bash para ahorrar tiempo y mejorar la productividad. En este punto, ya sabe cómo ver una cierta cantidad de comandos, buscar comandos específicos, volver a ejecutar comandos y reutilizar argumentos de su historial de Bash.

Estas habilidades serán útiles cuando trabaje en la línea de comando. Entonces, ¿por qué no aprender atajos de Bash para desarrollar estas habilidades y aumentar su productividad en un entorno de línea de comandos?


Linux
  1. Ver comandos y tareas con el comando watch de Linux

  2. Haz que el historial de Bash sea más útil con estos consejos

  3. Cómo usar los comandos del historial de Bash

  4. Uso de modificadores de palabras con el historial de Bash en Linux

  5. ¿Es posible rastrear los comandos incorporados a Bash?

Revive la historia de Linux con el escritorio ROX

Qué es Git Bash; Trabajar con comandos de Git Bash

Salve el día con Stellar Phoenix Windows Data Recovery

Cómo cambiar la cantidad de comandos almacenados en Bash History

Usando el historial de bash para obtener un comando anterior, cópielo y luego 'ejecútelo' pero con el comando comentado

'&&' vs. '&' con el comando 'test' en Bash