tiene subsistema para instalar instaladas historial guardar guarda fecha donde distribuciones comandos comando bash

subsistema - No guardar la sesión de bash actual en el historial



guardar historial de comandos linux (7)

Aquí está su kit de herramientas de la historia de bash ...

Salir de bash sin escribir nada

kill -9 $$

Esto es hacky y agresivo. Pero es una forma divertida de terminar una sesión de espionaje.

Borrar historial de la memoria

history -c

Esto borra la memoria de toda la historia. Si golpeas la flecha hacia arriba, no obtienes nada. Tu $HISTFILE está intacto. Puedes probar esto con ...

Recargar historial desde disco

history -r

Esto $HISTFILE leer el $HISTFILE y lo agrega al historial en la memoria (si hay alguno). Puede hacer esto después de history -c para recuperar la capacidad de Ctrl + R buscar o la flecha hacia arriba para los comandos anteriores. (Puede hacer esto en lugar de cerrar la sesión y volver a iniciarla).

Nota: Si no borró el historial primero, esto simplemente se agrega al historial actual en la memoria. Esto ocultará la historia, de modo que pulsar la flecha hacia arriba unas cuantas veces le dará comodidad al pensar que lo que quería ocultar se ha ido . En realidad, solo está enterrado y se escribirá en el disco a menos que sea más profundo que su $HISTSIZE o $HISTFILESIZE .

Ejecutar un comando sin incluirlo en la historia.

echo foo bar baz; history -d $(history 1)

Esto usa history -d para eliminar una entrada por número. Ya que solo se usa el primer argumento (y otros se ignoran) podemos usar la salida del history 1 (que es idéntica a history | tail -n 1 ) para obtener el número de la entrada actual.

Debido a que los oneliners de bash son entradas de historial únicas, puede hacer múltiples comandos como:

echo foo; echo bar; echo baz; history -d $(history 1)

Esto también funciona:

echo foo / bar / baz; history -d $(history 1)

Incluso esto funciona:

for x in foo bar baz; do echo $x done; history -d $(history 1)

Elimine su contraseña (un comando, etc.) de su historial

Si todo lo que le preocupa es deshacerse de una sola entrada, puede usar el ejemplo anterior de manera creativa. Utilice el history para encontrar el número de la entrada que desea eliminar. Luego bórralo por número. Por ejemplo...

$ history 1 pwd 2 date 3 sudovisudo 4 hunter2 5 man history 6 help history 7 history $ history -d 4

Espero no tener que decirles esto, pero por si acaso: No grep el historial de su contraseña. Si usted "realmente necesita " buscar el historial, haga el history | LESSHISTFILE=/dev/null less history | LESSHISTFILE=/dev/null less , y explícitamente haga una / búsqueda.

Si está realmente avergonzado y no desea que haya registro de que borre algo de la historia, puede combinar este concepto con el último.

history -d 4; history -d $(history 1)

O también para deshacerse del error original ...

for n in "$(history 1)" 4 3; do history -d $n; done

Tenga en cuenta que tiene que desplazarse por los números de entrada en orden decreciente porque cada llamada a history -d saca la entrada de la lista y los números de todas las entradas subsiguientes disminuyen en 1. Además, tiene que hacer una doble cita de la subshell porque el history 1 regresa no solo el número, sino también el comando y sus argumentos, y cada uno obtendría un ciclo separado en el ciclo for . Pero en este punto, esto se está convirtiendo en una lección de bash y me detendré.

Me doy cuenta de que al abrir .bash_history que contiene solo las entradas de mi sesión anterior, parece que la sesión actual se agrega solo al salir. ¿Hay alguna manera de evitar que la sesión actual se guarde? Incluso chocar contra bash es una opción si uno sabe cómo hacerlo. Descubrí que puedo kill -9 el proceso, pero si hay una mejor manera de hacerlo, me encantaría saberlo.


Eso debería hacer:

HISTFILE=

Desactive el HISTFILE.


Hay otra opción, similar a history -c , pero que no borra nada anterior a la sesión actual.

Es el history -r , que vuelve a cargar el historial desde HISTFILE , como si acabas de HISTFILE sesión.

No sé si esto funciona o está disponible en cualquier versión de bash anterior a 4.3.11, pero creo que sería útil incluirlo en la lista.

Aquí hay un ejemplo que muestra la diferencia entre este comando y el comando -c :

user@host:~$ # I Just logged in user@host:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 4679 2014-08-23 17:15:29 # Previous session 4680 2014-08-23 17:15:33 # Still the previous session 4681 2014-08-23 17:15:37 # note the datetime 4682 2014-08-23 17:15:44 exit 4683 2014-08-23 17:17:25 # I Just logged in 4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session user@host:~$ # This is a secret command, so I need to remove the traces of this session user@host:~$ history -r user@host:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 6242 2014-08-23 17:15:29 # Previous session 6243 2014-08-23 17:15:33 # Still the previous session 6244 2014-08-23 17:15:37 # note the datetime 6245 2014-08-23 17:15:44 exit 6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command user@host:~$ history -c # instead if I issue history -c user@host:~$ history # everything disappears 5248 2014-08-23 17:23:13 history # everything disappears user@host:~$


Lo siguiente funciona para mí.

export HISTFILE=/dev/null

Tenga en cuenta que tiene un espacio delante de ella. La mayoría de las distribuciones modernas no agregarían comandos que se ingresan después de un espacio para golpear el historial. Eso evitará que esa línea también aparezca en tu historial.


Quizás más elegante que estrellar a bash sería usar el comando history -c para borrar el historial de la sesión actual. Entonces, no hay nada que guardar (incluso se borra de la historia).


Sé que es un viejo tema. Sólo quería añadir esto para completar:

Si solo desea que no se guarden comandos específicos, verifique si la variable HISTCONTROL está establecida: HISTCONTROL=ignoreboth o HISTCONTROL=ignorespace

Cada comando que comienza con un espacio inicial no se incluirá en el historial.

Sólo mis 2 centavos.