7 Советов — Настройка Истории Команд в Bash

7 Советов, которые помогут Вам управлять историей команд в Bash.

Вы узнаете как добавить дату и время в .bash_history, увеличить размер хранимой истории, не сохранять определенные команды и многое другое …

Каждая вводимая в терминале команда сохраняется в файле ~/.bash_history. Чтобы посмотреть историю команд наберите history.

Настройка истории команд в Bash осуществляется путем добавления переменных окружения в файл ~/.bashrc.

Чтобы изменеия в ~/.bashrc вступили в силу, выполните:

source ~/.bashrc

1. Добавляем Отображение Даты и Времени в Bash History

Иногда очень полезно узнать время, когда какая-либо команда была выполнена.

Установите HISTTIMEFORMAT, чтобы сохранять время выполнения каждой команды.

Для этого добавьте следующую строку в файл ~/.bashrc:

export HISTTIMEFORMAT="%h %d %H:%M:%S "

Теперь, набрав history, Вы получите следующий вывод:

113  Jun 08 16:31:06 sudo ifconfig
114  Jun 08 16:31:10 top
115  Jun 08 16:31:19 ping 8.8.8.8
116  Jun 08 16:31:22 history

2. Увеличиваем Размер Хранимой Истории

Увеличьте HISTSIZE — количество команд, которые необходимо запоминать в списке истории (стандартное значение — 500).

export HISTSIZE=10000

Увеличьте HISTFILESIZE — максимальное количество строк, содержащееся в файле истории (стандартное значение — 500).

export HISTFILESIZE=10000

3. Добавляем Команды Bash в Файл с Историей

Bash перезаписывает файл .bash_history?

Чтобы добавлять новые команды в файл с историей, а не переписывать его каждый раз, добавьте следующую строку в ~/.bashrc:

shopt -s histappend

4. Мгновенно Сохранять Историю Команд

По умолчанию, Bash записывает историю команд в .bash_history, при завершении сессии.

Если сессия внезапно оборвется Вы потеряете текущую историю команд.

Используйте переменную $PROMPT_COMMAND, чтобы сохранять команды сразу после выполнения:

Добавьте следующую строку в файл ~/.bashrc, если переменная $PROMPT_COMMAND не была задана ранее:

PROMPT_COMMAND='history -a'

Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана:

PROMPT_COMMAND='$PROMPT_COMMAND; history -a'

5. Контролируйте Bash History

HISTCONTROL — представляет из себя список опций, разделенных двоеточиями.

Они контролируют каким образом список команд сохраняется в истории.

Опция Описание
ignorespace не сохранять строки начинающиеся с символа <пробел>
ignoredups не сохранять строки, совпадающие с последней выполненной командой
ignoreboth использовать обе опции ‘ignorespace’ и ‘ignoredups’
erasedups удалять ВСЕ дубликаты команд с истории

Пример:

export HISTCONTROL=ignorespace:erasedups

6. Игнорировать Определенные Команды

HISTIGNORE — список шаблонов через двоеточие, используемых для принятия решения о сохранении строк с командами в списке истории.

Не сохранять команды ls, ps и history:

export HISTIGNORE="ls:ps:history"

Не сохранять команды начинающиеся с s:

export HISTIGNORE="s*"

7. Одна Команда — Одна Запись в Истории

Сохранять все строки многострочной команды в одной записи списка истории:

shopt -s cmdhist

Изменить Имя Файла с Историй Команд

Используйте HISTFILE для изменения имени файла, в котором сохраняется история команд. Стандартное значение ~/.bash_history.

export HISTFILE=~/.custom_file

9 Replies to “7 Советов — Настройка Истории Команд в Bash”

  1. Спасибо за познавательную статейку.
    Давно, когда-то, про настройку bash-а читал и применял, но после того раза позабыл про это…. а сейас часто в историю заглядывать приходится и вспомнил про такую возможность.
    И настроил по Вашей статье.
    Больше спасибо.
    P.S.
    А про Yii2 не пишите? Желательно для чайников или «для тех, кто в танке»? (:

    1. Рад, что статья была вам полезна. С Yii2 не знаком.

  2. О, ништяк, спасибо!

  3. Really helpful. Just one comment. I’m habituated with using multiple terminal windows. If I immediately update the history file, other terminal «UP arrow key» will not show me the real up in that context but global up (done by some other terminal window). Any suggestion how to fix that ?

    1. try to use «history -n»:
      PROMPT_COMMAND=’$PROMPT_COMMAND; history -a; history -n’

  4. does this apply to zsh as well?

  5. Very helpful, thank you.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.