history

history                      - паказати історію команд
history 5                    - показати 5 останніх команд
history | grep anystring     - показати команди, що мають підрядок anystring
!!                           - запустити останню команду

Див. більше:

Налаштування ведення історії

Bash ведет историю всех команд, введенных в консоли, но по умолчанию некоторые настройки хранения этой истории заданы не сильно рациональными.

Давайте сделаем ведение и чтение истории более удобным, а так же рассмотрим вопрос очистки истории команд.

Исходные данные: Debian 9

История команд в Linux хранится в файле ~/.bash_history

Размер файла ограничен списком из 500 последних выполненных команд, которые затираются по мере заполнения этого файла. 500 команд — это довольно мало, Вы легко можете потерять полезную команду которую выполнили скажем неделю назад.

Чтобы увеличить размер хранимой истории необходимо в файл ~/.bashrc добавить строки:

export HISTSIZE=5000
export HISTFILESIZE=5000
  • HISTSIZE — количество команд, которые необходимо запоминать в списке истории (по умолчанию — 500);

  • HISTFILESIZE — максимальное количество строк, содержащееся в файле истории ~/.bash_history (по умолчанию — 500);

Теперь у нас будет храниться история последних 5 тыс. команд.

Для применения настроек нужно выполнить:

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 для применения настроек на лету.

UPD: Опція HISTTIMEFORMAT буде додавати після кожної команди часову мітку!

eval "$(ssh-agent -s)"
#1714463897
ssh-add ~/.ssh/username
#1714463905
cd /home/met/web/
#1714463924
git status
#1714464035
git commit -a -m "switch for hotfix"
#1714464046
git push origin feature
#1714464078

Все вышеописанные опции можно добавить в ~/.bashrc:

HISTSIZE=5000
HISTFILESIZE=10000
HISTCONTROL=ignoreboth:erasedups
PROMPT_COMMAND='history -a'
HISTIGNORE='ls*:pwd:history*'
# export HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S: '
source ~/.bashrc

UPD: Краще додати на початку файлу, а не в кінець, бо, наприклад, в LinuxLite пропала красива строка вводу (powerline), де вказувалася активна гілка git (на що я не одразу звернув увагу і ледь не сплутав її зі строкою вводу сервера!)

Очищення історії

Иногда случаются ситуации, когда необходимо очистить историю команд 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

https://blog.programs74.ru/configure-history-in-linux/

Див. також:

Last updated