¿Cómo edito el historial del terminal Mac OS X?

12

¿Cómo edito mi historial de bash en Mac OS X? Ingresé una contraseña en esa ventana por error y no quiero eliminar todo mi historial.

Karthick S
fuente

Respuestas:

14

Editar el .bash_historyarchivo es solo cuestión de abrir el archivo con un editor. Hay un par de formas en que puedes lograr esto.

  1. En la Terminal, simplemente escriba vi ~/.bash_history, edite el archivo como desee y guárdelo. Esta opción podría ser complicada, si no estás acostumbrado a vi , por supuesto.
  2. Haga visible el archivo siguiendo estas instrucciones, por ejemplo, ábralo como cualquier otro archivo, modifíquelo y guárdelo.
  3. En la Terminal solo escribe open ~/.bash_history -a /Applications/TextEdit.app. Este comando abrirá el archivo con TextEdit , puede elegir cualquier otro editor de texto, por supuesto. Modifique el archivo y guárdelo.

Para que los cambios se noten, simplemente reinicie el bash.

Thecafremo
fuente
Recibo "permiso denegado". Cuando hago un sudo, no puedo ver todos los comandos ingresados.
Karthick S
1
@KarthickS ¿Estás haciendo eso haciendo exactamente?
Thecafremo 05 de
Si miro el contenido de .bash_history, el contenido es diferente del resultado de un comando de historial. Reconozco ambos, los contenidos del archivo son más antiguos. ¿Qué sucede si hay varias ventanas de comandos abiertas? No parecen compartir el mismo historial de comandos. PD: Verifiqué que estoy usando bash.
Victor Engel
1
Creo que encontré mi respuesta. ECHO $ ​​HISTFILE muestra el que se debe editar.
Victor Engel
10

En tipo de terminal historyy anote el número de línea. Siguiente llamada history -d noted-line-number. Puede verificar que la línea se elimine usando historynuevamente.

Sin nombre_1
fuente
2
Esto no funciona en Yosemite con ZSH.
Paulo Oliveira
La pregunta era sobre bash, no zsh. ¡Lea cuidadosamente!
nombre_1
1
@DmitryDupelov tienes razón, lamento molestarte. De todos modos, es un recordatorio para los futuros lectores (que también pueden perder ese detalle). Gracias por corregir mi comentario.
Paulo Oliveira
2
nano ~/.bash_history

cuando termines ctrl+x y vuelvas a aceptar una respuesta correcta amigo

Matian2040
fuente
0

Creo que la respuesta de Dmitry es ideal si se hace antes de guardar el historial; de forma predeterminada, el guardado se produce en la salida de shell / terminal.

Si ya ha guardado el historial en ~ / .bash_history, prefiero la respuesta de Thecafremo, pero sugeriría agregar un paso para salir de Terminal para asegurarse de que ninguna de las instancias de bash haya cargado el historial y lo vuelva a guardar. Esto es especialmente complicado si tiene múltiples terminales y ha habilitado cualquier tipo de actualización del historial de comando por comando.

Antecedentes:

  • bash guarda el historial dentro de una instancia del shell
  • bash puede escribir este historial en un archivo, lo que generalmente ocurre cuando sale del shell / Terminal
  • bash puede leer un archivo en el historial, lo que generalmente ocurre cuando abre un shell / Terminal
  • es posible cambiar el comportamiento predeterminado para que el historial se propague antes, lo que puede migrar su BAD_TEXT al archivo y a otras ventanas

Independientemente del método que utilice, agregaría un paso: ¡verificar el éxito!

  1. Salir de Terminal.app
  2. Vuelva a abrir Terminal.app
  3. Confirme que el texto ofensivo no está en el historial, preferiblemente de una manera que no cree un historial adicional. Es decir, no lo hagas grep BAD_TEXT .bash_history! Este nuevo comando entraría en la historia. Simplemente abría .bash_history en su editor favorito y buscaba dentro de eso BAD_TEXT.

Esto debería darle la tranquilidad de que ha eliminado BAD_TEXT sin importar qué tipo de configuración loca de bash pueda encontrar.

sabio
fuente