Estoy trabajando en Mac OSX, así que supongo que estoy usando bash ...?
A veces entro en algo que no quiero que me recuerden en la historia. ¿Cómo lo elimino?
bash
shell
command-line
command-history
B Seven
fuente
fuente
Respuestas:
Medidas preventivas
Si desea ejecutar un comando sin guardarlo en el historial, agréguelo con un espacio adicional
Para que esto funcione es necesario, ya sea
ignorespace
oignoreboth
enHISTCONTROL
. Por ejemplo, ejecutarPara que esta configuración sea persistente, colóquela en su
.bashrc
.Limpieza post mortem
Si ya ha ejecutado el comando y desea eliminarlo del historial, primero use
para mostrar la lista de comandos en su historial. Encuentre el número al lado del que desea eliminar (por ejemplo, 1234) y ejecute
Además, si la línea que desea eliminar ya se ha escrito en su $ HISTFILE (que generalmente ocurre cuando finaliza una sesión de forma predeterminada), deberá volver a escribir en $ HISTFILE, o la línea volverá a aparecer cuando abra un nuevo sesión:
fuente
history -a
, en ese caso ya está escrito en el archivo de historial, en lugar de salir al salir en configuración normal. Específicamente: mywiki.wooledge.org/BashFAQ/088history -w
. De lo contrario, cuando salga, la línea eliminada seguirá allí.history -w
afterhistory -d {num}
era exactamente lo que necesitaba: ese tidbit crítico debería agregarse a la respuesta, de lo contrario, un usuario podría pensar que una eliminación temporal del shell actual es realmente permanente.history -w
es necesario para las entradas que ya se han escrito en el.bash_history
archivo. Cómo reproducir (p. Ej., En CentOS 7 con configuración de stock): 1. iniciar sesión 2. ingresar el comandoecho foo
3. cerrar sesión 4. iniciar sesión nuevamente 5. eliminar la entrada paraecho foo
6. cerrar sesión 7. iniciar sesión nuevamente: la entrada sigue ahí. Dependiendo de cómo configure su historial de bash, tal vez pueda reproducir este problema de otras maneras, es decir, si provoca la escritura del historial antes de cerrar sesión.Para borrar todo tu historial, usa
Para eliminar una sola línea, use
fuente
Tengo esto en mi
~/.bashrc
, lo que hace que el comando$ forget
elimine el comando anterior del historialfuente
history -d $( history | tail -n 1 | cut -f 1 -d " " )
sería más simple?history | tail -n1
es elhistory
comando en sí mismo, por lo que al eliminar ese número se obtiene la entrada incorrecta. Sin embargo,history -d $( history | awk 'END{print $1-1}' )
combina la selección de línea, la selección de campo y la resta.Siempre puede editar y eliminar entradas de
~/.bash_history
, útil cuando desea eliminar una entrada o más de una entradafuente
Si desea olvidar toda la sesión bash, puede realizar
kill
el proceso bash actual. Como la variable$$
contiene elpid
shell actual, puede hacer:fuente
Debe escribir los cambios después de borrar el historial. Y si no desea tener el comando de borrado de historial en su historial, entonces necesita ejecutar el comando así:
history -c && history -w && logout
Buena suerte.
fuente
fuente