Прежде всего, может быть проще привязать кнопки « Вверх» и « Вниз» к history-search-backward
и history-search-forward
соответственно. От 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.
Если эта опция включена, если вы начнете вводить имя вашей команды, а затем нажмете « Вверх», будут отображаться только те команды из вашей истории, которые начинаются с того, что вы ввели. Таким образом, вы можете очень быстро найти интересующую вас команду, и вам не нужно возиться с файлами истории, относящимися к каталогу. Просто введите s
, затем Up, и будут найдены только команды, начинающиеся с s
. Используйте fooba
и будут показаны только те, которые начинаются с fooba
.
Чтобы включить это, добавьте следующие строки в файл ~/.inputrc
на сервере (в зависимости от вашего эмулятора терминала, вам может потребоваться немного другой формат. Посмотрите на мой ответ здесь, если этот не работает):
"\e[A": history-search-backward
"\e[B": history-search-forward
Тем не менее, да, можно установить файл истории для каждого каталога. Добавьте эту функцию в ваш ~/.profile
(не в ваш ~/.bashrc
так как этот файл не читается по умолчанию при использовании ssh
для входа на удаленный компьютер):
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
}
Затем установите для нее переменную PROMPT_COMMAND
(это команда, которая выполняется каждый раз, когда отображается приглашение оболочки):
export PROMPT_COMMAND='setHistFile'
Измените массив targetDirs
на список каталогов, для которых вы хотите иметь свой собственный файл истории.