Tout d'abord, il pourrait être plus simple de simplement mapper votre Up et Bas boutons à history-search-backward
et history-search-forward
respectivement. À partir de 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.
Avec cette option activée, si vous commencez à taper le nom de votre commande, puis appuyez sur Haut , seules les commandes de votre historique commençant par ce que vous avez tapé seront affichées. De cette façon, vous pouvez trouver très rapidement la commande qui vous intéresse et vous n'avez pas besoin de manipuler des fichiers d'historique spécifiques à un répertoire. Tapez simplement s
, puis Haut et uniquement les commandes commençant par s
sera trouvé. Utilisez fooba
et uniquement ceux commençant par fooba
sera affiché.
Pour activer cela, ajoutez les lignes suivantes à votre ~/.inputrc
fichier sur le serveur (selon votre émulateur de terminal, vous pourriez avoir besoin d'un format légèrement différent. Jetez un œil à ma réponse ici si celle-ci ne fonctionne pas):
"\e[A": history-search-backward
"\e[B": history-search-forward
Cela dit, oui il est possible de définir un fichier d'historique par répertoire. Ajoutez cette fonction à votre ~/.profile
(pas à votre ~/.bashrc
puisque ce fichier n'est pas lu par défaut lors de l'utilisation de ssh
pour se connecter à une machine distante) :
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
}
Et puis définissez votre PROMPT_COMMAND
variable (il s'agit d'une commande exécutée à chaque fois qu'une invite du shell s'affiche) :
export PROMPT_COMMAND='setHistFile'
Changez le targetDirs
tableau à la liste des répertoires que vous souhaitez avoir leur propre fichier d'historique.