Last active
February 2, 2023 04:53
-
-
Save greenpeas/fb37ef49adefb6ed7371368f71da66fe to your computer and use it in GitHub Desktop.
bashrc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Как известно, история команд в 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