Можно облегчить себе пользование терминалом, нехитрым образом настроив bash и используя некоторые удобные команды.
Все команды дописываются в файл ~/bashrc
.
Размер истории
HISTSIZE=5000
HISTFILESIZE=10000
Первая определяет количество команд, хранимых в памяти, вторая — в файле.
Запись истории
shopt -s histappend
Если опция histappend
выставлена - история команд будет добавлена в файл $HISTFILE
, в противном случае файл будет перезаписан. Опция по умолчанию отключена.
Фильтрация истории
HISTCONTROL="ignoredups"
$HISTCONTROL
управляет сохранением истории. Есть несколько других полезных опций, например
ignorespace
, команды которые начинаются с пробела не будут сохранятьсяerasedups
, все предыдущие команды, которые совпадают с текущей будут удалены из истории.
$HISTIGNORE
позволяет через точку с запятой записать команды, которые не должны попасть в историю.
Посткоманды
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
В bash есть одна малоизвестная переменная с названием $PROMPT_COMMAND
, назначение которой — выполнение какой-то команды перед выводом приглашения, заданного переменной $PS1
. В этой переменной можно задать скрипт, который будет выполняться перед каждым выводом приглашения для новой команды.
Итоговое решение
Такая настройка обеспечивает многотерминальную работу с синхронизацией истории и удалением дубликатов.
HISTSIZE=5000
HISTFILESIZE=40000
shopt -s histappend
HISTCONTROL=ignoredups:erasedups
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
Чтобы применить настройки без выхода из сессии X, достаточно выполнить
source ~/.bashrc
Удобные команды
Ctrl-R
в bash запускает поиск по истории команд.
Команда
cd -
возвращает к последней посещенной директории.
Esc+.
вызывает последний упомянутый объект.
Например, если набрать
cat /etc/apt/sources.list
а затем rm и нажать Esc+.
, то команда будет автоматически завершена:
rm /etc/apt/sources.list