Zunächst einmal könnte es einfacher sein, einfach Ihr Up zuzuordnen und Nach unten Tasten zu history-search-backward
und history-search-forward
beziehungsweise. Ab 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.
Wenn dies aktiviert ist, beginnen Sie mit der Eingabe des Namens Ihres Befehls und drücken Sie dann Nach oben , werden nur die Befehle aus Ihrem Verlauf angezeigt, die mit dem beginnen, was Sie eingegeben haben. Auf diese Weise können Sie den gewünschten Befehl sehr schnell finden und müssen nicht mit verzeichnisspezifischen Verlaufsdateien herumhantieren. Geben Sie einfach s
ein , dann Nach oben und nur Befehle, die mit s
beginnen wird gefunden werden. Verwenden Sie fooba
und nur die, die mit fooba
beginnen wird gezeigt.
Um dies zu aktivieren, fügen Sie Ihrem ~/.inputrc
die folgenden Zeilen hinzu Datei auf dem Server (abhängig von Ihrem Terminal-Emulator benötigen Sie möglicherweise ein etwas anderes Format. Sehen Sie sich meine Antwort hier an, wenn diese nicht funktioniert):
"\e[A": history-search-backward
"\e[B": history-search-forward
Das heißt, ja, es ist möglich, eine Verlaufsdatei pro Verzeichnis festzulegen. Fügen Sie diese Funktion Ihrem ~/.profile
hinzu (nicht zu Ihrem ~/.bashrc
da diese Datei standardmäßig nicht gelesen wird, wenn ssh
verwendet wird um sich bei einem entfernten Rechner anzumelden):
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
}
Und stellen Sie dann Ihre PROMPT_COMMAND
ein Variable (dies ist ein Befehl, der jedes Mal ausgeführt wird, wenn ein Shell-Prompt angezeigt wird) dazu:
export PROMPT_COMMAND='setHistFile'
Ändern Sie den targetDirs
Array in die Liste der Verzeichnisse, für die Sie eine eigene Verlaufsdatei haben möchten.