bash - stored - logs history linux
¿Cómo puedo ver toda la historia de bash? (5)
Primero déjame mostrarte un ejemplo abajo.
En shell (1) hice el siguiente comando.
$ ping google.com
PING google.com (74.125.235.164) 56(84) bytes of data.
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=2 ttl=54 time=3.42 ms
Y después de eso, abre otro shell (2) y mira la historia.
$ history
.
.
.
8720 exit
8721 clear
8722 history
En este caso, el shell no puede ver el historial ejecutado por el shell (1), pero quiero ver todo el historial de bash en cada shell.
Entonces mi pregunta es ¿cómo puedo ver toda la historia de bash? ¿Alguien sabe como hackear?
¡Muchas gracias por adelantado!
Como muchos han señalado, debe utilizar shopt -s histappend
. Verifique ejecutando shopt
y verificando que histappend esté ''activado''.
Para asegurarse de que cada comando (a través de múltiples shells concurrentes) aparezca en el historial de cada uno de esos shells, agregue esto al final de su archivo .bashrc:
# Skip if not an interactive shell
if [ -z "${PS1}" ]; then return; fi
export PROMPT_COMMAND="history -a; history -c, history -r; ${PROMPT_COMMAND}
-a: agrega las nuevas líneas del historial (líneas del historial ingresadas desde el inicio de la sesión actual de Bash) al archivo del historial.
-c: borra la lista de historial.
-r: lee el archivo de historial actual y agrega su contenido a la lista de historial.
Ejecute source .bashrc
o cree nuevas sesiones y en varias ventanas de terminal ingrese el comentario #Tn
en cada una. Luego, en una terminal, ingrese en la history | tail -N
history | tail -N
para ver las últimas n lineas. Debería ver todos los comentarios ingresados en los diferentes terminales.
Puede ser útil agregar lo siguiente a /etc/profile.d/bashrc.sh para obtener una marca de tiempo en cada línea del historial:
if [ -z "${PS1}" ]; then return; fi
export HISTTIMEFORMAT=''%F %T ''
El resultado se ve así:
[moi@laBoheme ~]$ history | tail -4
3292 2019-01-22 12:41:27 # T1
3293 2019-01-22 12:41:34 # T2
3294 2019-01-22 12:41:42 # T3
3295 2019-01-22 12:41:50 history | tail -4
Debes buscar en la opción de shell histappend
y en el indicador -a
al history
:
histappend
Si se establece, la lista del historial se agrega al archivo nombrado por el valor de la variable
HISTFILE
cuando el shell se cierra, en lugar de sobrescribir el archivo.
history
-a
Agregue las "nuevas" líneas de historial (líneas de historial ingresadas desde el inicio de la sesión de bash actual) al archivo de historial.
Si coloca el history -a
en su PROMPT_COMMAND
, obtendrá un archivo .bash_history
actualizado.
Puede instalar algo como Advanced Shell History, que registrará cada comando en una base de datos sqlite3. Viene con una herramienta para consultar la base de datos desde la línea de comandos. https://github.com/barabo/advanced-shell-history
Con esta configuración, tendrá una vista unificada del historial de comandos en todas las sesiones. También obtiene elementos como el historial de comandos para el directorio de trabajo actual (o subárbol), el código de salida del comando, la duración del comando, etc.
Revelación completa: escribí y mantengo la herramienta.
prueba esto:
Edite su .bashrc y agregue esto a su final:
shopt -s histappend
PROMPT_COMMAND="history -n; history -a"
unset HISTFILESIZE
HISTSIZE=2000
fuente: http://subbass.blogspot.com.br/2009/10/howto-sync-bash-history-between.html
cat ~/.bash_history
También funcionaría, aunque tiendo a usar solo
vim ~/.bash_history
y luego use /
para buscar