Utilizo principalmente Terminator, y generalmente se abre con 3 ventanas de terminal divididas. También uso el terminal Gnome por varias razones.
Me pregunto cómo se maneja el historial de bash en este caso, ya que a veces extraño los comandos emitidos anteriormente cuando ejecutohistory
Por ejemplo, mi mensaje muestra la línea de historial de bash actual ( \!
) y si inicio Terminator con 3 ventanas de terminal divididas, obtengo la misma línea de historial (digamos 100) en todas las terminales. ¿Qué historia se guardará?
También al iniciar Gnome Terminal después de usar Terminator, obtengo la línea 100 al inicio, independientemente de todos los comandos emitidos anteriormente en Terminator
command-line
bash
history
zetah
fuente
fuente
Respuestas:
La sesión de bash que se guarda es la del terminal que se cierra la última vez. Si desea guardar los comandos para cada sesión, puede usar el truco explicado aquí .
De todos modos, deberá tener en cuenta que los comandos de diferentes sesiones se mezclarán en su archivo de historial, por lo que no será tan fácil leerlo más tarde.
Ver también:
fuente
export PROMPT_COMMAND='history -a; history -r'
y obtuve algunos números de línea de historial extraños en la terminal; después de emitir algunos saltos de número de línea de historial de comandos en 2000 en lugar de 1, lo cual es extraño pero se comporta como se dijo: todo el historial de terminales se guarda.export
no es necesario.Después de varias lecturas de
man bash
, uso archivos de historial separados para cada shell. Hice un ymkdir -m 0700 ~/.history
luego agreguéa mi
~/.bashrc
. De vez en cuando, recuerdodu -sk .history
limpiarlo. Es bueno tener cada comando que he escrito preservado para mí.Acabo de usar lo anterior para ver lo que había estado haciendo últimamente:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
o
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(para incluir el primer argumento, por ejemplo,
sudo mount
en la cadena de clasificación).fuente
HISTFILESIZE
dos veces?man bash
.Ctrl+r
trabajo vuelva a funcionar?egrep 'whatever' .history/*
(ocat .history/* | egrep 'whatever'
), y uso Ctrl-r para buscar el historial de una sesión individual. Leaman bash-builtins
sobre el comando de historia. Misort .history/* | uniq -c | sort -n | wc -l
muestra 16033 comandos únicos,cut '-d ' -f1 .history/* | sort | uniq -c | sort -n
muestra 2004 comandos únicos, principalmente errores tipográficos. Cargar todo eso en la "lista de historial" de bash no ayudaría.Para mostrar
history
desde todas las terminales:Añadir
export PROMPT_COMMAND='history -a; history -r'
a su archivo .bashrc.Fuente: http://northernmost.org/blog/flush-bash_history-after-each-command
fuente
history --merge
. He estado usando esto durante un año más o menos y resuelve el problema. Cuando quiero el historial más reciente de otras sesiones, solo ejecuto ese comando y está disponible para mí al instante.Vea también " mantener el historial persistente en bash " para otra alternativa. Prepara su mensaje para enviar todos los comandos escritos en cualquier terminal en un archivo de "historial persistente" (junto con lo que generalmente se hace para el regular
.history
).fuente
echo $$ $date_part "$command_part" >> ~/.persistent_history
Esto antepone las entradas con los PID de su proceso bash, para que podamos desenredar múltiples historias.