Skip to content

Instantly share code, notes, and snippets.

@greenpeas
Last active February 2, 2023 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save greenpeas/fb37ef49adefb6ed7371368f71da66fe to your computer and use it in GitHub Desktop.
Save greenpeas/fb37ef49adefb6ed7371368f71da66fe to your computer and use it in GitHub Desktop.
bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTCONTROL=ignoreboth:erasedups
export HISTIGNORE='ls:ps:history*:htop:ip*'
PROMPT_COMMAND='history -a'
export HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S: '
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Как известно, история команд в Linux хранится в файле ~/.bash_history
Размер файла ограничен списком из 500 последних выполненных команд, которые затираются по мере заполнения этого файла.
500 команд — это довольно мало, Вы легко можете потерять полезную команду которую выполнили скажем неделю назад.
Чтобы увеличить размер хранимой истории необходимо в файл ~/.bashrc добавить строки:
export HISTSIZE=10000
export HISTFILESIZE=10000
HISTSIZE — количество команд, которые необходимо запоминать в списке истории (по умолчанию — 500);
HISTFILESIZE — максимальное количество строк, содержащееся в файле истории ~/.bash_history (по умолчанию — 500);
Теперь у нас будет храниться история последних 10 тыс. команд.
Для применения настроек нужно выполнить:
source ~/.bashrc
или перезайти в терминал.
Идем дальше, если Вы выполните команду history, то заметите, что выполненные подряд одни и те же команды повторяются в истории. Это жутко неудобно, давайте отключим такое поведение. Для этого в файл ~/.bashrc добавим строку:
export HISTCONTROL=ignoreboth:erasedups
Опция HISTCONTROL контролирует каким образом список команд сохраняется в истории.
ignorespace — не сохранять строки начинающиеся с символа <пробел>
ignoredups — не сохранять строки, совпадающие с последней выполненной командой
ignoreboth — использовать обе опции ‘ignorespace’ и ‘ignoredups’
erasedups — удалять ВСЕ дубликаты команд с истории
Не забываем выполнить source ~/.bashrc для применения настроек на лету.
Следующая полезная настройка отвечает за игнорирование определенных команд при добавлении в историю, это HISTIGNORE.
Давайте не будем сохранять в истории команды ls, ps и history с доп. опциями. Для этого в файл ~/.bashrc добавим строку:
export HISTIGNORE='ls:ps:history*'
Не забываем выполнить source ~/.bashrc для применения настроек на лету.
По умолчанию, Bash записывает историю команд в ~/.bash_history только при завершении сессии. Если Ваша сессия будет отключена некорректно, то как правило история команд в текущем сеансе не сохраниться — это неудобно. Чтобы это исправить нужно добавить в ~/.bashrc следующую строку:
PROMPT_COMMAND='history -a'
Как Вы уже заметили, вывод истории команд не учитывает дату и время выполнения этой команды, а иногда бывает очень нужно понимать, когда же Вы выполнили эту команду. Но все можно поправить, чтобы добавить дату к списку команд нужно изменить формат вывода истории, для этого в ~/.bashrc нужно добавить строку:
export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S: '
Не забываем выполнить source ~/.bashrc для применения настроек на лету.
И в конце, все вышеописанные опции можно добавить в ~/.bashrc с помощью одной команды:
cat <<EOT >> ~/.bashrc
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTCONTROL=ignoreboth:erasedups
PROMPT_COMMAND='history -a'
export HISTIGNORE='ls:ps:history*'
export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S: '
EOT
source ~/.bashrc
Иногда случаются ситуации, когда необходимо очистить историю команд Linux. Например, Вы случайно ввели в консоле команду, содержащую пароль в открытом виде. В этом случае Вам потребуется либо удалить всю историю, либо только определенную ее часть.
Если нужно удалить конкретную строку в истории, то выполните:
history -wd 231
Для удаления всей истории команд выполните:
history -c
Если нужно очистить историю команд только для текущей сессии, то выполните:
history -r
Следует обратить внимание, что если Вы сохраняете историю сразу по факту выполнения команды (настройка PROMPT_COMMAND=’history -a’), а не по выходу из сессии как это предусмотрено по умолчанию, то полную очистку истории указанными выше способами (опции -c и -r) Вы не сделаете, история в файле ~/.bash_history сохраниться. Тогда для полной очистки истории команд нужно очистить файл ~/.bash_history, для этого выполните:
echo>~/.bash_history
и закройте текущую сессию, тогда история будет очищена полностью.
По умолчанию, история команд включена всегда и все введенные команды можно использовать повторно не затрачивая времени на их набор. Но при желании функцию ведения истории можно временно отключить. В Bash история команд в текущей сессии отключается с помощью команды:
set +o history
Для включения ведения истории команд в текущей сессии выполните:
set -o history
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment