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: