history
El comando muestra todos los resultados, pero podemos filtrar para obtener un comando particular usando history | grep searchingCommand
. Es realmente útil
Pero el problema es que muestra esos comandos que también se ingresaron con un error tipográfico o que no tuvieron éxito. Entonces identificar el correcto es realmente un dolor. Revisé este enlace: ¿ Historial de comandos selectivo en la terminal? Pero esa no era mi solución.
Entonces, ¿hay alguna forma de eliminar esos comandos del historial que eran incorrectos en el momento ingresado o más tarde?
Respuestas:
Me gustaría agregar otro método para modificar (o eliminar) las entradas del historial, que encontré accidentalmente cuando estaba trabajando con el bash:
Para demostrar esto, comience ejecutando los siguientes tres comandos en bash:
Ahora puede seleccionar estos comandos nuevamente con las teclas de flecha o Ctrl+ py Ctrl+ n.
Digamos que desea modificar los dos primeros comandos. Desplácese por el historial hasta que
echo 1
aparezca y cámbielo aecho 1 - changed
, pero NO PRESIONE ENTER. Si ahora avanza más a través de su historial, esta línea permanece en su estado modificado y puede alejarse y volver a ella. Ahora muévase a la líneaecho 2
y cámbiela aecho 2 - changed
, nuevamente, no presione enter. Para guardar los cambios en estas líneas, seleccione cualquier comando en el historial, excepto estos dos, y presione Ctrl+ c.Por supuesto, en lugar de modificar la entrada del historial, también puede eliminarla, lo que dará como resultado una línea vacía en esa entrada. Para eliminar la línea que se muestra actualmente en el indicador, presione Ctrl+ e(que salta al final de la línea) seguido de Ctrl+ u(que elimina el texto desde el inicio de la línea hasta el cursor).
Consulte también https://unix.stackexchange.com/questions/195668/what-can-cause-an-item-to-be-deleted-from-my-bash-history/195726#195726 para obtener una explicación más detallada de experiencia técnica.
La forma más simple:
Nota :
Esto cambia solo los comandos de sesión actuales. Si queremos cambiar los comandos más antiguos y guardar los cambios, debemos ejecutar el siguiente comando antes de cerrar el terminal:
fuente
ctrl+r
para buscar el comando que desea eliminar / modificar. 2.end
mover el comando y eliminar / modificar el comando. 3.ctrl+n
para ir a la siguiente línea y luego 4.ctrl+c
Utilizar:
para eliminar la entrada del historial en el desplazamiento
OFFSET
incluso antes de que se agregue a su archivo de historial bash Para encontrar el derechoOFFSET
, solo necesita ejecutar elhistory
comando. Es el número desde el inicio de la línea que contiene la entrada del historial que desea eliminar.Y para guardar las modificaciones en el historial use:
Ver más detalles en esta guía .
fuente
history -w
palabras posteriores para guardar los cambios. También OFFSET significa qué número sehistory
muestra. Si la línea que intenta eliminar es 873, úselahistory -d 873
.history -w
despuéshistory -d
para guardar los cambios.Edite el archivo
~/.bash_history
y elimine una vez con errores tipográficosPor ejemplo, inserte este comando:
Edite algo que le guste y luego guarde el archivo y reinicie el terminal. El comando raíz es:
si quieres borrar todo
history -c
deberías hacer el trucofuente :
fuente
.bash_history
?history -c
no funciona Cuando cierro el terminal y lo vuelvo a abrir, los historiales no se eliminan. -1 tu respuesta-c Clear the history list. This may be combined with the other options to replace the history list completely.
fuentehistory -w
despuéshistory -c
para escribir los cambios.Si desea eliminarlo inmediatamente desde el mismo terminal, primero debe agregar lo siguiente a su archivo ~ / .bashrc.
y reinicie su terminal.
Puede agregarlo en cualquier parte del archivo .bashrc. He agregado lo siguiente junto con otras cosas relacionadas con el historial.
Por lo general, durante una sesión bash, los comandos ejecutados no se escriben en .bash_history hasta que la sesión finaliza, por lo tanto,
PROMPT_COMMAND='history -a'
ingresa el comando y luego en .bash_history.Ahora, siempre que cometa un error o error en un comando y desee eliminarlo, ejecute lo siguiente
y tada se eliminaría.
Para hacerlo más simple, puede asignarle un alias a algo más simple y usarlo como
Por lo tanto, la ejecución
rh
eliminará el último comando ejecutado del historial.Lo anterior es un alias temporal que solo dura una sesión. Para que sea permanente o persistente, agregue
a .bashrc
NOTA
No debe haber espacio en ambos lados de
=
Si no quieres alias, entonces también puedes hacer lo siguiente
Haga un nombre commad
rh
y colóquelo en el/bin
directorio:Abra un archivo, diga
rh
y pegue el siguiente código, guarde y cierre:sed -i '$d' ~/.bash_history
Hacer
rh
ejecutable y colocarlo en el/bin
directorio:Ahora use el
rh
comando para eliminar el comando reciente del historial.fuente
PROMPT_COMMAND='history -a'
en el.bashrc
archivo? ¿Y qué hará exactamente? ¡Intentésed -i '$d' ~/.bash_history
que funcionara sin editar.bashrc
! Pero el alias no funciona ... Aceptaré tu respuesta si elaboras mi pregunta y haces que el alias funcione ... :).bash_history
archivo ...: P de ninguna manera ... No es un problema ... Hice mi propio comando y lo coloqué en/bin
directorio. Debido a su comando:sed -i "$d" ~/.bash_history
está funcionando bien. Acepto tu respuesta .. :)para eliminar varias líneas (por ejemplo, de 1974 a 1990, verifique con el
history
comando):tenga en cuenta que el número de línea a eliminar es siempre el mismo, ya que lo elimina constantemente y pasa al siguiente.
fuente
Si está utilizando la opción "set -o vi" en bash (muy útil para buscar con la tecla Escape), puede buscar la línea y eliminar la línea con "dd" de la misma manera que lo hace en "vi".
fuente
j
ok
despuésdd
para que realmente borre el comando del historial. Si escribo otro comando, o simplemente presionoEnter
, bash parece suponer que es solo un comando nuevo y que debería retener el comando anterior en la historia. También es interesante observar que cuando se hace correctamente, borra el comando, pero no lo elimina; el resultado son entradas de historial en blanco. Pero esto es lo suficientemente bueno para eliminar las contraseñas que me obligaron a escribir en la línea de comandos, y es mucho más fácil que otras respuestas, así que muchas gracias por publicar esto.Tuve una situación en la que tuve entradas superfluas en mi historial de bash de un Yubikey, tal vez 50 más o menos, que coinciden con 'ccccc .....'. Idealmente, quería una forma de eliminar entradas que coincidan con un patrón, lo que supongo que podría hacer con sed o algo así, suponiendo que su historial ignore los espacios en blanco.
De todos modos, me volví perezoso y terminé usando vim, buscando 'cccc' y usando 'dd' mientras recorría cada partido. No tomó más de un minuto.
fuente