LINUX

Cómo borrar el historial de la línea de comandos de Linux

Es posible que desee borrar el archivo de historial y la pantalla por razones de seguridad. Algunas distribuciones de Linux pueden borrar la pantalla cuando cierra la sesión, pero otras no. Muchos programas leen la entrada como una sola línea a la vez.

La biblioteca de historia de GNU puede realizar un seguimiento de esas líneas, asociar datos arbitrarios con cada línea y utilizar información de líneas anteriores para componer otras nuevas. Bash y otros shells pueden usar esta biblioteca de historial. El archivo predeterminado es ~ / .history o ~ / .bash_history.

Característica de la historia de Bash

La función de historial de bash depende de una variable llamada HISTFILE, normalmente establecido en el usuario actual .bash_history archivo (ubicado en el directorio de inicio del usuario). Cuando se repite, devuelve la ruta completa y el nombre del archivo de historial del usuario, así:

$ echo $HISTFILE
/home/franhesco/.bash_history

1) Eliminar el comando de historial de Linux

El historial se puede restablecer con algún comando, pero después de la operación, si cierra la sesión e inicia sesión en su shell, verá el mismo historial

una. Eliminar los comandos anteriores

Puedes usar history -c comando para borrar el comando del historial anterior en el shell actual. Eso es suficiente (pero exagerado) si acaba de escribir su contraseña y no ha salido de ese shell ni ha guardado su historial explícitamente.

El siguiente ejemplo muestra nuestro historial actual

$ history 
 1 history 
 2 vim .bash_history 
 3 exit
 4 history

Ahora usemos el comando.

$ history -c
$ exit

Cuando sale de bash, el historial se guarda en el archivo de historial. El historial creado durante la sesión actual se adjunta al archivo, las entradas que ya están presentes no se ven afectadas. Revisemos la nueva historia

$ history 
 1 history 
 2 vim .bash_history 
 3 exit
 4 exit
 5 history

Agreguemos algún comando a nuestra historia.

$ history 
 1 history 
 2 vim .bash_history 
 3 exit
 4 exit
 5 history 
 6 ls -l
 7 mkdir aa
 8 ls -li
 9 history

Para sobrescribir el archivo de historial con el historial del shell actual, ejecute history -w después history -c mando

$ history -c
$ history -w
$ exit

Después de iniciar sesión nuevamente, revisemos nuestro historial

$ history 
 1 history -w
 2 exit
 3 history

Puedes ver que nuestra historia comienza en history -w comando de entrada.

B. Eliminar un solo comando

Puede eliminar las entradas del historial que no desee con el -d opción. Esto eliminará la entrada del historial en el desplazamiento de posición. Pero cuando cierra la terminal y la abre de nuevo, los historiales no se eliminan. Entonces finalmente usamos history -w para guardar los cambios.

# history -d offset

Por ejemplo:

# history
 1 cd
 2 history
 3 ls -alhF
 4 history
 5 wget username:password@private.ftp.com/secret/file.tar.gz
 6 mkdir

Ahora, si desea eliminar la sexta entrada que es el comando mkdir, simplemente use:

# history -d 5
# history -w

Ver el resultado

# history
 1 cd
 2 history
 3 ls -alhF
 4 history
 5 wget username:password@private.ftp.com/secret/file.tar.gz
 6 history
 7 history -d 6

Puede ver que no teníamos la entrada de comando mkdir arriba.

2) Borrar bash completamente

Para borrar completamente el historial de bash en el servidor, una solución alternativa es vincular ~/.bash_history a /dev/null

$ ln -sf /dev/null ~/.bash_history

Sin embargo, un efecto secundario molesto es que las entradas del historial están vinculadas a la memoria y volverán al archivo cuando cierre la sesión. Para solucionar esto, puede usar el siguiente comando:

ln -sf /dev/null ~/.bash_history && history -c && exit

3) Desactivar el historial de bash

Puede detener el registro del historial de una de las dos formas siguientes: desactívelo para todos los usuarios o desactive el historial de registro para un solo usuario.

una. Desactivar para todos los usuarios

Puede desactivar el historial de bash para todos los usuarios que agregan unset HISTFILE en linea /etc/profile expediente. Esta línea desactiva el archivo histórico de cada usuario en el sistema.

# echo "unset HISTFILE" >> /etc/profile

Debe tener permiso para aplicar el comando anterior

B. Desactivar para un usuario específico

Con el comando anterior, es posible desactivar el historial de bash de un usuario específico. Solo necesita indicar su archivo bash_profile.

# echo "unset HISTFILE" >> /home/papso/.bash_profile

Cada vez que el usuario inicie sesión, su historial se restablecerá como se muestra a continuación. Todo su comando de historial se guardará hasta que el usuario cierre la sesión

$ history 
 1 history

C. Editar .bashrc

Puede eliminar el comando de historial editando dos valores de los parámetros del comando de historial.

  • HISTSIZE, que es la cantidad de líneas o comandos que se almacenan en la memoria en una lista de historial mientras su sesión de bash está en curso
  • HISTFILESIZE, que guarda la cantidad de líneas utilizadas para la pila de historial cuando se escribe en el archivo de historial.

Para hacerlo, edite su .bashrc y añadir

HISTFILESIZE=0
HISTSIZE=0

Ahora puede eliminar con éxito el historial de bash e incluso dejar de iniciar sesión en el historial de bash utilizando cualquiera de los comandos mencionados anteriormente.

4) Eliminar algunas líneas de entradas

Puedes usar history -d offset incorporado para eliminar una línea específica del historial del shell actual. No es realmente práctico si desea eliminar un rango de líneas, ya que solo toma un desplazamiento como argumento, pero puede envolverlo con un bucle.

Solo esta línea en el símbolo del sistema ayudará.

for i in {1..N}; do history -d START_NUM; done

Dónde START_NUM es la posición inicial de entrada en la historia norte es el número de entradas que quizás desee eliminar.

Revisemos las últimas 15 entradas de nuestro comando de historial.

# history 15
 986 stat synchro 
 987 ln synchro sync2
 988 stat synchro 
 989 debugfs /dev/vda
 990 exit
 991 echo $HISTFILE
 992 cat .bash_history 
 993 ls -l .bash_history 
 994 passwd patrick
 995 echo "unset HISTFILE" >> /home/papso/.bash_profile
 996 history 
 997 for i in {1..10}; do history -d 867; done
 998 history 
 999 history 30
 1000 history 15

Ahora eliminemos 13 entradas comenzando en la línea 986

for i in {1..13}; do history -d 986; done

Ahora revisemos el resultado

# history 15
 975 ls -il /home/bobbin/sync.sh filesync 
 976 ls -l /home/bobbin/sync.sh filesync 
 977 ln /home/bobbin/sync.sh synchro
 978 ls -il /home/bobbin/sync.sh synchro 
 979 cp script script2
 980 ls -il script script2
 981 stat script
 982 stat script2
 983 man find
 984 find / -inum 517333
 985 stat filesync 
 986 history 30
 987 history 15
 988 for i in {1..13}; do history -d 986; done
 989 history 15

Puede ver que no tenemos el mismo resultado.

Cuando un usuario inicia sesión con un inicio de sesión o un shell interactivo / sin inicio de sesión, el usuario .bash_history se abre el archivo. Ahora puede operar en este archivo con algunos comandos útiles. El historial es útil para recuperar los comandos utilizados anteriormente, pero puede que necesite eliminar algunas entradas de estos comandos utilizados. los ~/.bash_history file no registra lo que escribe en respuesta a los mensajes de otros programas, solo lo que escribe en el propio indicador de bash.

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar