📝 Настройка истории команд Bash
Bash хранит историю всех введённых команд в файле ~/.bash_history.
Вы можете просмотреть её с помощью команды:
history
Настройка истории осуществляется через переменные окружения в файле ~/.bashrc.
Чтобы применить изменения после редактирования, выполните:
source ~/.bashrc
⚡ 1. Отображение даты и времени выполнения команд
По умолчанию история показывает только номера и команды.
Для удобного отслеживания времени выполнения, добавьте в ~/.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 disnetern.ru
116 Jun 08 16:31:22 history
[!TIP]
%h— месяц,%d— день,%H:%M:%S— часы, минуты и секунды. Можно настроить формат по своему усмотрению, например"%Y-%m-%d %H:%M:%S ".
🛠 2. Увеличение размера истории
Bash по умолчанию хранит ограниченное количество команд (обычно 500).
Для увеличения количества команд в памяти и в файле истории, добавьте в ~/.bashrc:
export HISTSIZE=5000 # Количество команд в памяти
export HISTFILESIZE=5000 # Максимальное количество строк в файле ~/.bash_history
[!TIP] Можно установить любое значение, в зависимости от потребностей.
🧩 3. Добавление новых команд в файл истории
По умолчанию Bash перезаписывает ~/.bash_history при выходе из сессии.
Чтобы команды добавлялись в файл, а не перезаписывали его, включите опцию histappend:
shopt -s histappend
[!IMPORTANT] Это предотвращает потерю истории при одновременных нескольких терминальных сессиях.
⏱ 4. Мгновенное сохранение истории команд
По умолчанию история команд сохраняется только при завершении сессии. Если сессия внезапно оборвется, текущая история может быть потеряна.
Чтобы сохранять команды сразу после их выполнения, используйте переменную $PROMPT_COMMAND:
Если переменная не была задана ранее:
PROMPT_COMMAND='history -a'
Если переменная уже содержит значение:
PROMPT_COMMAND='$PROMPT_COMMAND; history -a'
history -a— добавляет команды текущей сессии в файл~/.bash_historyсразу после выполнения.- Можно комбинировать с другими действиями в
$PROMPT_COMMAND, например автоочисткой или логированием.
🔍 5. Дополнительные советы
- Используйте
history | grep <команда>для поиска конкретной команды в истории. - Для немедленного сохранения всей истории выполните:
history -w
- Для загрузки истории из файла в текущую сессию:
history -r
- Настройка
HISTCONTROL=ignoredups:erasedupsпомогает избежать повторяющихся команд:
export HISTCONTROL=ignoredups:erasedups
[!TIP] Сочетание всех этих настроек делает историю Bash максимально информативной и защищает от её потери при аварийном завершении терминала.