en linux ubuntu bash terminal. ¿Hay alguna manera de guardar el historial de bash sin escribir exit? He configurado la configuración en "HISTCONTROL = erasedups"
que, en mi opinión, funciona mejor que ignorar los errores.
de todos modos, por alguna razón, no guardará los últimos comandos en el terminal bash a menos que escriba "exit". Estoy acostumbrado a hacer clic en la cruz en la ventana de terminal, así que siempre me molesta que los últimos comandos no se hayan guardado cuando vuelvo a iniciar sesión.
recordatorio: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/#more-130
Respuestas:
Bash History
Cualquier comando nuevo que se haya emitido en el terminal activo se puede agregar al
.bash_history
archivo con el siguiente comando:El único concepto difícil de entender es que cada terminal tiene su propia lista de historial de bash (cargada desde el
.bash_history
archivo cuando abre el terminal)Si desea extraer cualquier nuevo historial que hayan escrito otros terminales durante la vida útil de este terminal activo, puede agregar el contenido del
.bash_history
archivo a la lista del historial de bash activoEsto borrará la lista de historial actual para que no obtengamos una lista repetida y anexemos el archivo de historial a la lista (ahora vacía).
Solución
Puede usar la variable bash
PROMPT_COMMAND
para emitir un comando con cada nueva solicitud (cada vez que presiona enter en el terminal)Esto registrará cada comando en el archivo de historial a medida que se emite.
Resultado
Ahora, cualquier terminal nueva que abra tendrá el historial de otras terminales sin tener que tener
exit
esas otras terminales. Este es mi flujo de trabajo preferido.Más precisión
Digamos (por alguna razón) que tiene dos terminales que está usando simultáneamente y desea que el historial se refleje entre ambos para cada comando nuevo.
El principal inconveniente aquí es que es posible que deba presionar enter para volver a ejecutar PROMPT_COMMAND para obtener el historial más reciente del terminal opuesto.
Puede ver por qué esta opción más precisa es probablemente exagerada, pero funciona para ese caso de uso.
fuente
Para guardar el historial de bash en el archivo:
Exporta el historial a un archivo llamado history.txt. Luego puede verlo con su editor favorito.
Respuesta copiada de http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/
fuente
No es una manera de ahorrar toda la historia de su golpe en un archivo separado , pero si usted está tratando de utilizar el mecanismo de la historia y por alguna razón no esté guardando toda su historia, que es una cuestión diferente.
Para guardar todo su historial en un archivo separado, siempre, pase lo que pase con el terminal
Un script proporcionado aquí hace el truco.
Para decirle al comando de historial "¡Guardar ahora!" al hacer clic en la X en una ventana de terminal virtual
Lo primero que debes entender es, ¿qué mecanismo usa tu emulador de terminal virtual para matar el
bash
proceso cuando sale? - Esto dependerá de qué emulador de terminal exacto esté usando.Hay algunas opciones, y todas ellas involucran señales UNIX .
SIGTERM, SIGINT, SIGQUIT: el comportamiento predeterminado cuando Bash recibe una de estas señales en modo interactivo es ignorarla, por lo que probablemente no sea eso.
SIGHUP: esta señal normalmente hace que Bash finalice correctamente y realice la limpieza, pero no estoy seguro de si esa "limpieza" implica guardar el archivo de historial. Probablemente no.
SIGKILL, SIGSTOP: es imposible para Bash como proceso de espacio de usuario ignorar estas señales. El núcleo puede matar o detener por la fuerza el proceso en cualquier momento usando estas señales. Si su emulador de VT está enviando uno de estos, no podemos atraparlo y hacer algo antes de salir, por lo que no tiene suerte.
Algunas referencias: pregunta de ServerFault 337123
Pregunta Unix 6332
Uso de la historia de forma interactiva en el manual de GNU Bash
fuente