Команда Linux history
— это история команд. Утилита не просто полезна, а необходима и проста в использовании. Она окажет вам неоценимую помощь.
Содержание
Синтаксис
history [опции]
или
history [опции] [файл]
Опции
- -c
- Очистить список истории, удалив все записи
- -d
- Удалить строку истории с заданным идентификатором
- -a
- Добавить строки истории из этого сеанса в файл истории
- -n
- Прочитать все строки истории, которые еще не были прочитаны из файла истории, и добавить их в список истории
- -r
- Прочитать файл истории и добавить содержимое в список истории
- -w
- Записать текущую историю в файл истории
- -p
- Выполнить расширение истории для каждого аргумента и отобразить результат, не сохраняя его в списке истории
- -s
- Добавить аргументы в список истории как одну запись
Переменная окружения FILENAME используется как файл истории.
Переменная окружения HISTTIMEFORMAT позволяет установить формат вывода даты и времени.
Примеры использования команды history
Просмотр всей истории
Запустив утилиту без опций вы сможете просмотреть всю историю команд:
oleg@mobile:~:$ history
...
495 sudo systemctl stop mysql.service
496 sudo systemctl stop php-fpm.service
497 sudo systemctl stop nginx.service
498 nmtui
499 sudo pacman -Syu
500 df
Вывод последних строк
Можно вывести на экран N последних строк:
oleg@mobile:~:$ history 3
498 nmtui
499 sudo pacman -Syu
500 df
Вывод строки по идентификатору
Все команды пронумерованы. Теперь для исполнения команды с заданным номером следует просто записать этот номер после восклицательного знака.
Например, следующая команда позволит обновить дистрибутив:
oleg@mobile:~:$ !499
sudo pacman -Syu
:: Обновление баз данных пакетов...
core is up to date
extra is up to date
community 6,7 MiB 1670 KiB/s 00:04 [###############################################] 100%
multilib is up to date
:: Запускается полное обновление системы...
разрешение зависимостей...
проверка конфликтов...
Пакеты (70) alsa-card-profiles-1:0.3.55-2 alsa-lib-1.2.7.2-1 alsa-ucm-conf-1.2.7.2-1 chromium-103.0.5060.114-1 curl-7.84.0-2
duktape-2.7.0-4 electron-19.0.8-1 electron16-16.2.8-1 firefox-102.0.1-1 firefox-i18n-ru-102.0.1-1 flac-1.3.4-3
fluidsynth-2.2.8-1 git-2.37.1-1 gnome-desktop-1:42.3-1 gnome-desktop-common-1:42.3-1 gnupg-2.2.36-1
gtk-update-icon-cache-1:4.6.6-1 hwdata-0.361-1 imagemagick-7.1.0.43-1 imlib2-1.9.1-1 kmod-30-1
lib32-alsa-lib-1.2.7.2-1 lib32-libidn2-2.3.3-1 lib32-llvm-libs-14.0.6-1 lib32-mesa-22.1.3-1 lib32-openssl-1:1.1.1.q-1
lib32-pango-1:1.50.8-1 libdrm-2.4.112-1 libgphoto2-2.5.30-1 libhandy-1.6.3-1 libisl-0.25-1 libmfx-22.4.4-1
libnl-3.7.0-1 libx11-1.8.1-3 linux-5.18.10.arch1-1 llvm-libs-14.0.6-1 mesa-22.1.3-1 min-1.25.1-1 mkinitcpio-31-3
nodejs-18.5.0-1 openssl-1.1.1.q-1 pango-1:1.50.8-1 perl-http-message-6.37-1 perl-uri-5.11-1 php-8.1.8-1
php-fpm-8.1.8-1 php-gd-8.1.8-1 php-imap-8.1.8-1 pipewire-1:0.3.55-2 poppler-22.07.0-1 poppler-glib-22.07.0-1
python-colorama-0.4.5-1 python-jinja-1:3.1.2-2 python-more-itertools-8.13.0-2 qt5-base-5.15.5+kde+r170-1
qt5-tools-5.15.5+kde+r1-3 tracker3-3.3.2-1 webkit2gtk-2.36.4-2 webkit2gtk-4.1-2.36.4-2 wine-staging-7.12-1
xf86-input-synaptics-1.9.2-1 xorg-fonts-encodings-1.0.6-1 xorg-server-21.1.4-1 xorg-server-common-21.1.4-1
xorg-xev-1.2.5-1 xorg-xmessage-1.0.6-1 xorg-xmodmap-1.0.11-1 xorg-xwud-1.0.6-1 zenity-3.43.0-1 zxing-cpp-1.4.0-1
Будет загружено: 697,37 MiB
Будет установлено: 2428,80 MiB
Изменение размера: 278,03 MiB
:: Приступить к установке? [Y/n]
Этот приём весьма удобен при выполнении достаточно длинных команд. Например таких:
mensh@li1398-20:/var/www/linuxcookbook.ru$
...
1974 sudo -u www-data composer update drupal/core-recommended --with-dependencies
...
Поиск определённой команды
Для поиска конкретной команды можно использовать утилиту grep
:
mensh@li1398-20:/var/www/linuxcookbook.ru$ history | grep ctools
1884 sudo -u www-data composer update drupal/ctools --with-dependencies
1892 sudo -u www-data composer update drupal/ctools --with-dependencies
Удаление ненужной строки
Для удаления ненужной команды следует использовать опцию -d
.
Просматриваем историю команд:
mensh@li1398-20:~$ history
...
1995 sudo su
1996 exit
1997 cd /var/www/linuxcookbook.ru/
1998 history
1999 history | grep ctools
2000 exit
2001 history
Удаляем строку 1997
с командой cd /var/www/linuxcookbook.ru/
:
mensh@li1398-20:~$ history -d 1997
Просматриваем историю и убеждаемся в том, что упомянутая строка удалена:
mensh@li1398-20:~$ history 8
1995 sudo su
1996 exit
1997 history
1998 history | grep ctools
1999 exit
2000 history
2001 history -d 1997
2002 history 8
Очистка истории
Для очистки всей истории команд следует использовать опцию -c
:
oleg@mobile:~:$ $ history -c
Заключение
Прочитав эту короткую статью вы наверняка убедились в том, что команда Linux history
станет серьёзным подспорьем в вашей работе. Успехов!