¿Cómo puedo ver el historial de Bash de más de una sesión de terminal en Ubuntu? [duplicar]

11

Posible duplicado:
¿Se pueden unificar los archivos de historial en bash?

Utilizo Ubuntu Server 9.10 y me gustaría poder ver mi historial de bash para más de una sesión de terminal. Es decir, mis últimos 200 comandos más o menos, incluso si he cerrado la sesión en el medio.

Cuando uso el historysolo veo todos los comandos de mi sesión de terminal real. ¿Cómo puedo ver más historial de comandos de Bash? ¿Hay alguna configuración específica para bash que deba cambiar de los valores predeterminados en Ubuntu?

No tengo un ~/.bash_historyarchivo Pero tengo un ~/.bashrccon HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsyHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

ACTUALIZACIÓN: ahora estoy probando Ubuntu Server 10.10 en VirtualBox. Si solo apago VirtualBox sin el comando de apagado, la próxima vez que arranque, los comandos de la última sesión no se guardarán en el archivo de historial.

Los comandos solo se guardan si apago la máquina con el comando de apagado. Por ejemplo, apagado -P 0.

Esta debe ser la razón de mi problema. Así que tengo que descubrir cómo guardar el historial de comandos con más frecuencia. Por ejemplo, después de cada comando.

Jonas
fuente
¿Qué obtienes si lo haces echo $HISTSIZEy echo $HISTFILESIZE? Mi (Ubuntu) ~/.bashrctiene las mismas HISTCONTROLlíneas que la suya, que tiene muerte cerebral ya que el segundo anula al primero y se supone que los valores están separados por dos puntos, no separados por comas. Si lo hace, set -o¿muestra una línea que dice "historial en"?
Pausado hasta nuevo aviso.
Me pongo 500con echoambas variables yhistory on
Jonas
la segunda declaración HISTCONTROL es la que está obteniendo, no la primera. aunque ignoreboth es una abreviatura bash para ignoredups + ignorespace, por lo que probablemente ese no sea el problema.
quack quijote
1
este es un duplicado: superuser.com/questions/37576/…
warren
1
@warren: bonito hallazgo. Estoy de acuerdo, parece exactamente lo que Sanoj está pidiendo.
quack quijote

Respuestas:

6

Puedes usar

history -a

para agregar inmediatamente el historial en memoria al archivo de historial. Una sesión de terminal no puede ver la de otra a menos que esto se haga o se salga de la otra.

Puedes usar

history 200 | less

para ver esa cantidad de entradas.

Además de HISTSIZEver la entrada en la página del manual de Bash concerniente HISTFILESIZE.

Pausado hasta nuevo aviso.
fuente
history -a´ doesn't do anything for me, and not historia 200 | less` tampoco, pero he actualizado mi pregunta con más información. Gracias de cualquier manera.
Jonas
Creo que he encontrado una razón ahora. El historial no se guarda a menos que haga un apagado limpio. Vea mi nueva pregunta: unix.stackexchange.com/questions/3330/…
Jonas
6

Una vez que cierra la sesión, el historial se agrega al archivo ~/.bash_history. Echa un vistazo allí.

Por defecto recordará sus últimos 500 comandos. Si desea guardar más, configure la variable HISTSIZEen ~/.bashrc.

También agrego ignoredupsa HISTCONTROL(con HISTCONTROL=$HISTCONTROL:ignoredup). Esto hace que los comandos duplicados consecutivos se guarden solo una vez.

Eche un vistazo a man 1 bashqué más puede sintonizar sobre la historia.

Benjamin Bannier
fuente
Gracias por su respuesta. Pero no tengo un ~/bash_historyarchivo, y no HISTSIZEen ~/.bashrcpero tengo HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsy HISTCONTROL=ignorebothes Ubuntu Server, si eso importa.
Jonas
1
@Snoj Observe el .en ~/.bash_history. Y para HISTSIZEello solo usará el valor predeterminado de 500 entradas.
Benjamin Bannier
Sí, pero no tengo ningún ~/.bash_historyarchivo en mi sistema. Solía ls -acomprobarlo.
Jonas
@Sanoj Entonces, tal vez no sea el predeterminado. El nombre del archivo se almacena en la $HISTFILEvariable, por lo que echo $HISTFILEle indicará dónde buscar.
Benjamin Bannier
echo $HISTFILEme da /home/sanoj/.bash_history- extraño ¿Quizás no está activado por razones de seguridad?
Jonas
1

El historial de bash generalmente se carga cuando el shell comienza a ejecutarse, y se guarda cuando se sale normalmente. Puede usar history -ay history -nanular esto, pero no automáticamente a menos que abuse $PROMPT_COMMANDo algo similar.

Ignacio Vazquez-Abrams
fuente
0

Sanoj, esto realmente debería "funcionar"; No creo que se suponga que deba hacer nada especial para habilitar esto. Parece que algo está interfiriendo con el curso normal de los eventos.

Buscaría en / etc / profile, / etc / bashrc (o quizás /etc/bash.bashrc según algunas fuentes), ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, para ver si hay algo que pueda estar afectando el historial (tal vez grep -i histen cada uno de los archivos anteriores).

... En particular, me pregunto si tiene algo en ~ / .bash_logout que elimine el archivo.

Alternativamente, ¿es posible que algo anule la $HOMEvariable?

Zac Thompson
fuente