GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo administrar su historial de comandos de Linux

Probablemente sepa cómo usar las teclas de flecha hacia arriba y hacia abajo para desplazarse por su historial de Bash, pero ¿sabía que hay mucho más en el historial de Bash que solo repetir comandos? Hay mucho más en la historia. O, ¿debería ser mucho más para la historia? ? En cualquier caso, el comando de historial es uno de esos comandos oscuros que es poderoso y útil para conocer al menos en un nivel básico. Este artículo eliminará el misterio del historial de Bash para convertirlo en una herramienta de administración de sistemas más amigable.

El fondo

En Bash, su historial de comandos se almacena en un archivo (.bash_history ) en su directorio de inicio. El (.) inicial hace que el archivo se oculte de la vista normal. Para verlo, emita ls -a comando.

$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc

Puede operar en el archivo .bash_history como lo haría con cualquier otro archivo de texto ASCII sin formato.

Las tres variables de entorno relacionadas que debe tener en cuenta son HISTFILE, HISTFILESIZE y HISTSIZE.

  • HISTFILE—/home//.bash_history
  • TAMAÑO DEL ARCHIVO HIST:1000
  • TAMAÑO DE HISTORIA:1000

La variable HISTFILE contiene el nombre y la ubicación de su archivo de historial de Bash. HISTFILESIZE es cuántos comandos se pueden almacenar en .bash_history expediente. HISTSIZE es el número de comandos almacenados en caché. Una vez que llegue a 1000 comandos, los comandos más antiguos se descartarán a medida que se guarden los nuevos.

$ echo $HISTSIZE
1000
$ echo $HISTFILESIZE
1000
$ echo $HISTFILE
/home/khess/.bash_history

Cada usuario, incluido el root, tiene estas variables y tamaños asignados de forma predeterminada. Si desea cambiar estas variables, edite el archivo .bashrc en su directorio de inicio. Por ejemplo, si desea cambiar las variables de tamaño a 500 comandos, edite el .bashrc archivo y utilice las siguientes entradas:

export HISTSIZE=500
export HISTFILESIZE=500

Para usar los nuevos valores sin cerrar la sesión y volver a iniciarla, puede ejecutar .bashrc archivo.

$ . ~/.bashrc

Sus valores ahora están activos para su shell actual y cualquier subshell.

$ echo $HISTSIZE
500
$ echo $HISTFILESIZE
500

Si no desea que su historial mantenga comandos duplicados, puede indicarle a su historial que ignore las entradas duplicadas agregando lo siguiente a su archivo .bashrc:

export HISTCONTROL=ignoredups

El problema

El problema con el historial de Bash es que no está escrito en .bash_history archivo hasta que cierre la sesión. Esto hace que sea imposible usar el comando de historial para crear secuencias de comandos. Por ejemplo, supongamos que está enseñando una clase de Linux y desea verificar si los estudiantes han ejecutado un comando en particular para copiar sus archivos en una unidad externa montada. Si el alumno permanece conectado al sistema, no podrá determinar si se ha realizado la copia porque su secuencia de comandos utiliza su archivo de historial (/home/student/.bash_history) para comprobar si se ha ejecutado el comando.

La solución

Para solucionar esta función, use el escribir opción para el history dominio. Como parte de la instrucción de la clase, haría que los estudiantes ejecuten este comando para guardar su historial incluso si no cierran la sesión.

$ history -w

Esto escribe todo el historial de comandos de la sesión actual en HISTFILE. Y ahora su secuencia de comandos de verificación puede encontrar fácilmente si se ha ejecutado el comando. También debe confiar en que el estudiante ejecutará el comando de historial.

[ Consulte la lección de historia de Seth Kenlon: haga que la historia de Bash sea más útil con estos consejos]

Otro problema

Dado que HISTSIZE y HISTFILESIZE son relativamente grandes (1000 comandos), es posible que el estudiante haya ejecutado el comando antes. Puede agregar la entrada export HISTCONTROL=ignoredups en su .bashrc, pero esto no ayudará si el estudiante ejecutó un comando similar hace dos días porque el archivo solo mostrará un solo comando.

La solución a este problema

Para solucionar este problema, debe borrar el historial del estudiante al iniciar sesión. Edite el archivo .bashrc nuevamente y agregue el siguiente comando.

history -c

Este comando borra su historial en cada inicio de sesión y elimina el problema de seleccionar un comando ejecutado anteriormente. No tiene que preocuparse por elegir un comando de sesiones anteriores porque el sistema cierra la sesión de los usuarios inactivos después de un período de tiempo específico si establece el límite de tiempo de inactividad en /etc/profile . Edite el /etc/profile archivo y agregue la siguiente entrada.

TMOUT=300

La variable TMOUT utiliza una cantidad de segundos de tiempo de inactividad. En este caso, 300 segundos son cinco minutos. Puede establecer este valor en cualquier número de segundos. Este valor entrará en vigor en el próximo inicio de sesión para todos usuarios Para establecer valores de tiempo de espera individuales, use .bashrc pero tenga en cuenta que los usuarios pueden cambiar este archivo a voluntad.

[ Descargar ahora:una guía para administradores de sistemas sobre secuencias de comandos Bash. ] 

Resumir

Bash history es una herramienta útil, pero puede ser frustrante si no está familiarizado con sus opciones y peculiaridades. Hay muchas más opciones disponibles en la historia. Consulte las páginas del manual para obtener más información. Y recuerda que cada comando que ingresas es historia en desarrollo.


Linux
  1. Cómo usar el comando de historial en Linux

  2. Cómo usar el comando Su en Linux

  3. Cómo usar el comando apt para administrar paquetes en Linux

  4. Cómo borrar un comando específico del historial de Bash en Linux

  5. Cómo guardar el historial de comandos de los usuarios seleccionados en Linux

Cómo habilitar la marca de tiempo en el historial de Bash en Linux

Cómo quitar un comando del historial en Linux

Cómo verificar el historial de comandos de Linux por fechas

3 consejos útiles sobre cómo usar el comando de historial en Linux

Cómo usar el comando de pantalla en Linux para administrar terminales

Cómo verificar el tiempo de actividad de su servidor Linux