Команда Linux history

Опубликовано admin - ср, 07/13/2022 - 12:07

Команда Linux history — это история команд. Утилита не просто полезна, а необходима и проста в использовании. Она окажет вам неоценимую помощь.

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 станет серьёзным подспорьем в вашей работе. Успехов!

Поделиться с друзьями