Prima di tutto, potrebbe essere più semplice mappare semplicemente il tuo Up e Giù pulsanti a history-search-backward
e history-search-forward
rispettivamente. Da 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 questo abilitato, inizia a digitare il nome del tuo comando e poi premi Su , verranno mostrati solo i comandi della tua cronologia che iniziano con ciò che hai digitato. In questo modo, puoi trovare molto rapidamente il comando che ti interessa e non è necessario giocherellare con i file di cronologia specifici della directory. Basta digitare s
, quindi Su e solo i comandi che iniziano con s
sarà trovato. Usa fooba
e solo quelli che iniziano con fooba
sarà mostrato.
Per abilitarlo, aggiungi le seguenti righe al tuo ~/.inputrc
file sul server (a seconda del tuo emulatore di terminale, potresti aver bisogno di un formato leggermente diverso. Dai un'occhiata alla mia risposta qui se questo non funziona):
"\e[A": history-search-backward
"\e[B": history-search-forward
Detto questo, sì, è possibile impostare un file di cronologia per directory. Aggiungi questa funzione al tuo ~/.profile
(non al tuo ~/.bashrc
poiché questo file non viene letto per impostazione predefinita quando si utilizza ssh
per accedere a una macchina 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
}
E poi imposta il tuo PROMPT_COMMAND
variabile (questo è un comando che viene eseguito ogni volta che viene mostrato un prompt della shell) ad esso:
export PROMPT_COMMAND='setHistFile'
Cambia il targetDirs
array all'elenco delle directory in cui si desidera avere il proprio file di cronologia.