Команда History в Linux (Bash History)
Команда History в Linux (Bash History)
History Command in Linux (Bash History)
В этой статье мы поговорим о history команде, которая позволяет просматривать список ранее выполненных команд, осуществлять поиск по списку и манипулировать файлом истории.

Если вы проводите много времени в командной строке, просмотр истории команд, которые вы ранее выполняли, может быть полезной функцией, которая может упростить вашу повседневную работу и повысить производительность.
Использование history
команд и расширений истории
history
является встроенной оболочкой, и ее поведение может немного отличаться от оболочки к оболочке. Мы рассмотрим встроенную версию Bash history
.
В простейшей форме, когда вызывается без каких-либо параметров или аргументов, history
команда отображает весь список истории с номерами строк.
history
...
467 git push
468 tail -f var/logs/error
469 nano +22,5 functions.sh
470 source project-env/bin/activate
471 history
При наборе !n
выполняется n-я команда из списка истории, а !-n
команда n строк назад. В следующем примере мы выполняем команду на линии 467
:
!467
Другой способ выполнить команду - использовать !word
расширение. word
относится к самой последней команде, начинающейся со слова.
Как правило, history
отображает много строк вывода, которые не помещаются на экране. Чтобы просмотреть выходные данные по одной странице за раз, передайте их в пейджерную программу, например, more
или less
команду:
history | less
Чтобы отобразить последние n
строки, передайте число в качестве аргумента команде. Например, чтобы просмотреть только последние пять строк из списка истории, введите:
history -5
Используйте клавиши со стрелками up
и down
для навигации по записям в списке. Когда появится команда, которую вы искали, нажмите, Enter
чтобы выполнить ее.
Введите !!
для выполнения предыдущей команды:
!!
Это особенно полезно, когда вы забыли добавить команду sudo
, и вместо повторного ввода команды вы можете набрать:
sudo !!
!-1
то же самое, что !!
и выполняет последнюю команду из списка истории, от !-2
второй до последней и т. д.
^word1^word2^
Расширение позволяет повторно запустить последнюю команду, заменив «word1» на «word2». Если вы случайно набрали sduo command
вместо sudo command
вас, вы можете повторить команду, используя правильное слово с:
^sduo^sudo^
Используйте grep
команду для фильтрации вывода. Например, чтобы просмотреть все команды, включая «nano», вы должны выполнить:
history | grep nano
302 sudo nano /etc/resolv.conf
356 nano setup.py
413 sudo nano /etc/hosts
469 nano +22,5 functions.sh
Теперь, если вы хотите перезапустить nano setup.py
команду, просто наберите:
!356
Другой способ поиска по истории команд - нажать Ctrl-R
. Приглашение изменится на следующее, и вы сможете начать поиск ранее выполненной команды.
(reverse-i-search)`':
Оболочка отобразит соответствующую строку. Чтобы перейти к следующему согласованному предложению, нажмите еще Ctrl-R
раз.
Обратитесь к руководству Bash для получения дополнительной информации о расширении истории , модификаторах и обозначениях.
Сохранение списка истории
По умолчанию при запуске нового сеанса Bash читает список истории из .bash_history
файла. Список команд, которые выполняются в текущем сеансе, сохраняется в памяти и сохраняется в файл при закрытии сеанса.
Если вы открыли несколько сеансов оболочки, сохраняется только история сеанса, который был закрыт последним.
-a
Опция позволяет сохранить текущий список истории сеанса в .bash_history
файл:
history -a
Вариант записывает полный список истории в файл истории.
-w
history -w
Очистка истории
Команда history
позволяет очистить полный список истории или удалить определенные части.
Чтобы очистить список истории, используйте -c
параметр:
history -c
Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте -d
параметр.
Например, чтобы удалить строки между 365 и 375 (включая эти строки), введите:
history -d 365 375
Если вы указываете только один номер -d
опции, команда удаляет данную строку.
Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.
Приведенные выше команды очищают список истории, который хранится в памяти, но не удаляет записи из .bash_history
файла на диске. Чтобы очистить файл, вам нужно записать в файл список истории:
history -c
history -w
Изменение истории поведения
Поведение истории Bash может быть определено с использованием нескольких различных переменных среды . При изменении поведения истории установите переменные в ~/.bashrc
любом другом файле конфигурации, который загружается при входе пользователя в систему.
По умолчанию Bash хранит 500 строк в списке истории команд. HISTSIZE
Переменная позволяет изменять это значение. Чтобы установить его на 10000, добавьте следующую строку в ваш .bashrc
файл:
HISTSIZE=10000
HISTCONTROL
Переменная принимает разделенный двоеточиями список значений , которые определяют , каким образом команды сохраняются в списке истории:
ignorespace
- команды, начинающиеся с пробела, не сохраняются в списке истории.ignoredups
- дубликаты команд не сохраняются.ignoreboth
- это стенография, включающая в себяignorespace
иignoredups
.
HISTCONTROL=ignoreboth
Когда HISTTIMEFORMAT
переменная установлена, Bash добавляет метку времени выполнения команды в каждой строке.
Например, если вы установите:
HISTTIMEFORMAT="%F %T: "
История будет отображаться в следующем формате:
413 2019-10-27 21:13:07: sudo nano /etc/hosts
Вывод
Команда history
отображает список ранее выполненных команд. Например, вы можете использовать историю, чтобы просмотреть длинную команду, которую вы использовали до того, что вы не можете вспомнить.