En primer lugar, podría ser más sencillo mapear su Arriba y Abajo botones a history-search-backward
y history-search-forward
respectivamente. Desde man bash
:
history-search-forward
Search forward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.
history-search-backward
Search backward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.
Con esto habilitado, comience a escribir el nombre de su comando y luego presione Arriba , solo se mostrarán los comandos de su historial que comiencen con lo que haya escrito. De esa manera, puede encontrar muy rápidamente el comando que le interesa y no necesita jugar con archivos de historial específicos del directorio. Solo escribe s
, luego Arriba y solo comandos que comienzan con s
será encontrado. Utilice fooba
y solo los que comienzan con fooba
se mostrará.
Para habilitar esto, agregue las siguientes líneas a su ~/.inputrc
archivo en el servidor (dependiendo de su emulador de terminal, es posible que necesite un formato ligeramente diferente. Eche un vistazo a mi respuesta aquí si esta no funciona):
"\e[A": history-search-backward
"\e[B": history-search-forward
Dicho esto, sí, es posible establecer un archivo de historial por directorio. Agregue esta función a su ~/.profile
(no a tu ~/.bashrc
ya que este archivo no se lee por defecto cuando se usa ssh
para iniciar sesión en una máquina remota):
setHistFile(){
targetDirs=("/home/terdon/foo" "/home/terdon/bar")
for dir in "${targetDirs[@]}"; do
if [[ "$dir" = "$PWD" ]]; then
## Set the history file name
export HISTFILE="./.bash_history"
## clear current history
history -c
## read history from the $HISTFILE
history -r
## Exit the function
return
fi
done
## This will be run if the PWD is not in
## the targetDirs array
export HISTFILE="$HOME/.bash_history"
## Read the history (in case we are leaving
## one of the targetDirs)
history -r
}
Y luego configura tu PROMPT_COMMAND
variable (este es un comando que se ejecuta cada vez que se muestra un indicador de shell) a él:
export PROMPT_COMMAND='setHistFile'
Cambia el targetDirs
array a la lista de directorios que desea que tengan su propio archivo de historial.