Учимся работать с историей bash
Чем больше работаешь в командной строке, тем чаще возникает необходимость повторять введенные ранее команды.
Самый простой, но иногда неоптимальный способ — нажимать клавиши «вверх» и «вниз». При каждом нажатии стрелки «вверх» в поле ввода начнет появляться предыдущая выполненная команда, если нажать «вниз» — следующая.
История команд bash хранится в специальном файле
.bash_history, который лежит в домашней директории пользователя. Каждый раз, когда пользователь вводит команду, она попадает именно в этот файл. Запись происходит при завершении сеанса.
За то, какое количество команд хранится в истории, отвечает переменная окружения
HISTFILESIZE. Если она выставлена, то берется указанное в ней число, иначе история не обрезается и файл
.bash_history растет бесконечно:
$ cat ~/.bash_history
history | grep qdbu
qdbus org.kde.KWin /Compositor suspend
Посмотреть историю можно и более простым способом - выполнить команду
history. Эта команда выведет содержимое
.bash_history, добавив слева номер:
$ history
6 exit
7 docker ps
Если набрать "
history 5", то отобразятся только пять последних введенных команд:
$ history 5
1498 sudo reboot
1499 cat ~/.bash_history
...
При необходимости историю всегда можно погрепать:
$ history | grep export
174 export HOME=/tmp
183 history | grep export
Еще один способ - использовать комбинацию
Ctrl+R прямо в оболочке. После нажатия клавиш начинается поиск:
$ (reverse-i-search)`qdb': qdbus org.kde.KWin /Compositor suspend
Настройка истории Linux
По умолчанию, команда
history дополняет
.bash_history только порядковым номером, но вы можете выводить еще и дату выполнения команды. Для этого нужно экспортировать переменную
HISTORYFORMAT вместе нужным форматом:
$ export HISTTIMEFORMAT='%F %T '
$ history
1503 2024-10-28 11:17:56 cat ~/.history
Также можно отключить вывод одинаковых команд:
$ export HISTCONTROL=ignoredups
Вы можете указать какие команды не стоит отображать, например, не будем выводить ls -l, pwd и date:
$ export HISTIGNORE='ls -l:pwd:date:'
Linux++ | IT-Образование