Si pasa mucho tiempo en la línea de comandos, ver el historial de los comandos que ha ejecutado anteriormente puede ser una característica útil que puede facilitar su trabajo diario y mejorar su productividad.
En este artículo, hablaremos sobre la history
comando, que le permite ver una lista de comandos ejecutados anteriormente, buscar en la lista y manipular el archivo de historial.
Usando el history
Expansiones de comando e historial #
history
es un shell incorporado, y su comportamiento puede diferir ligeramente de un shell a otro. Cubriremos la versión incorporada de Bash de history
.
En su forma más simple, cuando se invoca sin ninguna opción o argumento, el history
El comando muestra la lista completa del historial con números de línea.
history
...
467 git push
468 tail -f var/logs/error
469 nano +22,5 functions.sh
470 source project-env/bin/activate
471 history
Escribiendo !n
ejecuta el comando n-th de la lista de historial y !-n
el comando n líneas atrás. En el siguiente ejemplo estamos ejecutando el comando en la línea 467
:
!467
Otra forma de ejecutar un comando es usar !word
expansión. word
se refiere al comando más reciente que comienza con 'palabra'.
Normalmente, history
muestra muchas líneas de salida que no caben en la pantalla. Para ver la salida una página a la vez, canalícela a un programa buscapersonas como more
o less
comando:
history | less
Para mostrar el último n
líneas, pase el número como argumento al comando. Por ejemplo, para ver solo las últimas cinco líneas de la lista del historial, escribiría:
history -5
Usa el up
y down
teclas de flecha para navegar por las entradas de la lista. Cuando se muestre el comando que buscaste, presiona Enter
para ejecutarlo.
Escribe !!
para ejecutar el comando anterior:
!!
Esto es especialmente útil cuando se olvida de anteponer un comando con sudo
, y en lugar de volver a escribir el comando, puede escribir:
sudo !!
!-1
es lo mismo que !!
y ejecuta el último comando de la lista de historial, !-2
penúltimo, y así sucesivamente.
^word1^word2^
La expansión le permite volver a ejecutar el último comando reemplazando "palabra1" con "palabra2". Si accidentalmente escribiste sduo command
en lugar de sudo command
puedes repetir el comando usando la palabra correcta con:
^sduo^sudo^
Usa el grep
comando para filtrar la salida. Por ejemplo, para ver todos los comandos, incluido "nano", ejecutaría:
history | grep nano
302 sudo nano /etc/resolv.conf
356 nano setup.py
413 sudo nano /etc/hosts
469 nano +22,5 functions.sh
Ahora, si desea volver a ejecutar nano setup.py
comando simplemente escriba:
!356
Otra forma de buscar en el historial de comandos es presionando Ctrl-R
. El mensaje cambiará a lo siguiente y podrá comenzar a buscar un comando ejecutado anteriormente.
(reverse-i-search)`':
El caparazón mostrará una línea coincidente. Para pasar a la siguiente sugerencia coincidente, presione Ctrl-R
de nuevo.
Consulte el manual de Bash para obtener más información sobre la expansión del historial, los modificadores y los designadores.
Guardando la Lista de Historial #
De forma predeterminada, al iniciar una nueva sesión, Bash lee la lista de historial de .bash_history
expediente . La lista de comandos que se ejecutan en la sesión actual se guardan en la memoria y se guardan en el archivo cuando se cierra la sesión.
Si abrió varias sesiones de shell, solo se guarda el historial de la última sesión que se cerró.
El -a
La opción le permite guardar la lista del historial de sesión actual en .bash_history
archivo:
history -a
El -w
La opción escribe la lista de historial completa en el archivo de historial.
history -w
Historial de limpieza #
La history
El comando le permite borrar la lista completa del historial o eliminar ciertas partes.
Para borrar la lista del historial, use -c
opción:
history -c
Para eliminar una línea o líneas específicas entre las posiciones inicial y final de la lista del historial, use -d
opción.
Por ejemplo, para eliminar las líneas entre 365 y 375 (incluidas esas líneas), escribiría:
history -d 365 375
Si proporciona solo un número al -d
opción, el comando elimina la línea dada.
Cuando se usa un número entero negativo, las líneas se cuentan hacia atrás desde el final de la lista del historial.
Los comandos anteriores borran la lista del historial, que se mantiene en la memoria, pero no elimina las entradas del .bash_history
archivo en el disco. Para borrar el archivo, debe escribir la lista de historial en el archivo:
history -c
history -w
Modificación del historial de comportamiento #
El comportamiento del historial de Bash se puede definir utilizando varias variables de entorno diferentes. Al modificar el comportamiento del historial, establezca las variables en ~/.bashrc
o cualquier otro archivo de configuración que se carga cuando el usuario inicia sesión.
Por defecto, Bash mantiene 500 líneas en la lista del historial de comandos. El HISTSIZE
variable le permite cambiar este valor. Para establecerlo en 10000, agregue la siguiente línea a su .bashrc
archivo:
HISTSIZE=10000
El HISTCONTROL
La variable acepta una lista de valores separados por dos puntos que definen cómo se guardan los comandos en la lista del historial:
ignorespace
- los comandos que comienzan con un espacio no se guardan en la lista del historial.ignoredups
- los comandos duplicados no se guardan.ignoreboth
- es una abreviatura, que incluye tantoignorespace
yignoredups
.
HISTCONTROL=ignoreboth
Cuando el HISTTIMEFORMAT
se establece la variable, Bash antepone una marca de tiempo de ejecución para el comando en cada línea.
Por ejemplo, si establece:
HISTTIMEFORMAT="%F %T: "
El historial se mostrará en el siguiente formato:
413 2019-10-27 21:13:07: sudo nano /etc/hosts
Conclusión #
La history
El comando muestra una lista de los comandos ejecutados anteriormente. Por ejemplo, puede usar el historial para ver un comando largo que haya usado antes y que no pueda recordar.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.