Tout d'abord, il pourrait être plus simple de simplement mettre en correspondance votre Up y Down pour history-search-backward
y history-search-forward
respectivement. 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 ceci activé, si vous commencez à taper le nom de votre commande et ensuite appuyez sur Up 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
entonces Up et seulement les commandes commençant par s
sera trouvé. Utilisez fooba
et seulement ceux qui commencent par fooba
seront affichés.
Pour l'activer, ajoutez les lignes suivantes à votre fichier ~/.inputrc
sur le serveur (en fonction de votre émulateur de terminal, vous pouvez avoir besoin d'un format légèrement différent. Jetez un coup d'oeil à 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 l'application 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 mettez votre PROMPT_COMMAND
(c'est une commande qui est exécutée chaque fois qu'une invite Shell est affichée) :
export PROMPT_COMMAND='setHistFile'
Changez le targetDirs
à la liste des répertoires que vous voulez avoir leur propre fichier d'historique.