Найти в Дзене

Гайд по команде history.

Оглавление

В этой статье подробно рассмотрим возможности и функции команды 'history' Linux, что даст нам возможность более эффективного ее использования.

Команда 'history' Linux — это мощный инструмент, который позволяет получать доступ к предыдущим командам терминала и управлять ими. Возможность искать, редактировать и выполнять предыдущие команды может значительно повысить вашу эффективность и производительность при работе в терминале.

Независимо от того, какой опыт работы в Linuх вы имеете, думаю, эта статья предоставит ценную информацию и советы по использованию этой команды.

Отображение истории команд.

При вводе 'history' в командной строке, вы можете увидить число, за которым следуют команды, которые вы недавно использовали.

-2

Однако, для полного аудита вводимых команд не хватает временной метки рядом с командо. Что было бы полезно во многих случаях, чтобы знать не только какую команду, но и когда использовали. Чтобы включить эту функцию, необходимо настроить переменную HISTTIMEFORMAT, как показано ниже.

export HISTTIMEFORMAT="%F %T "

Теперь, если вы повторно запустите команду истории, результат будет выглядеть следующим образом:

-3

Для того, чтобы вернуть отображение к первоначальному виду необходимо удалить переменную следующей командой:

unset HISTTIMEFORMAT

Поиск команды в истории.

Еще одно, часто используемая функция 'history', это поиск команды по ключевому слову. Особенно, после выполнения длинной команды. Вы можете осуществить поиск в истории команд, следующим способом:

  1. Нажмите Ctrl+R и введите ключевое слово.
  2. Продолжайте нажимать Ctrl+R, пока не дойдете до нужной команды.
  3. Нажмите «Enter», когда увидите ее, чтобы выполнить команду.

Например, я выполнил поиск «yum» в следующем примере, который отобразил первое найденное в истории совпадение «yum update», содержащее слово «yum».

-4

Кстати, вы можете отредактировать команду из истории перед ее выполнением. Нажмите клавишу «Esc», когда дойдете до совпадения, внесите необходимые изменения в команду, а затем повторно выполните ее, нажав «Enter».

Повторение последней выполненной команды.

Иногда, случается, что необходимо выполнить предыдущую команду. Ниже приведены четыре различных способа повторения последней выполненной команды.

  • Используйте стрелку вверх, чтобы просмотреть предыдущую команду, и нажмите Enter, чтобы выполнить ее.
  • Введите '!!' и нажмите Enter из командной строки
  • Введите !-1 и нажмите Enter в командной строке.
  • Нажатие Ctrl+P отобразит предыдущую команду, затем нажмите «Enter», чтобы выполнить ее.

Выполнение определенной команды из истории.

Иногда нам нужно запустить определенную команду из истории. Например, пусть это будет команда номер 5: 'uname -r'.

-5

Для этого введите «!» за которым следует номер команды. В нашем случае это будет '!5'.

-6

Ограничение количества строк в истории команд.

Количеством строк, хранимых в истории команд, управляют встроенные переменные оболочки HISTSIZE и HISTFILESIZE. Добавьте следующие две строки в свой «~/.bashrc файл», затем выйдите из системы и снова войдите в нее.

HISTSIZE=2000
HISTFILESIZE=2000

Результатом этого будет то, что теперь история настроена на хранение 2000 команд. По умолчанию в большинстве дистрибутивов Linux размер истории ограничен 500 или 1000 записями.

Изменение файла хранения истории.

По умолчанию история хранится в файле ‘/.bash_history’. Для изменения файла, в котором хранится история команд, например, на ‘/.my_commands’, добавьте следующую строку в файл ‘/.bash_profile’, затем выйдите из системы и войдите снова.

HISTFILE=~/.my_commands

Переменная HISTFILE содержит имя и местоположение вашего файла истории Bash.

Удаление повторяющихся записей.

Если мы часто выполняем команду, то строки с использованием этой команды будут повторяться в истории много раз. Например, сама команда ‘history’ появляется несколько раз.

-7

Чтобы удалить все предыдущие повторяющиеся совпадения, установите для переменной ‘HISTCONTROL’ значение ‘erasedups‘.

export HISTCONTROL=erasedups

Если мы повторно запустим команду истории, повторяющиеся совпадения исчезнут

-8

Примечание
Для этой переменной существует еще значение ignoredups. Предположим, что для переменной HISTCONTROL установлено значение ignoreups вместо erasedups. В этом случае команда не будет добавлена ​​в историю, если она ранее была выполнена и записана в историю, но это не удалит все ее предыдущие появления в истории.

Скрытие некоторых команд из истории.

Теперь мы рассмотрим специфическую особенность команды ‘history’. А именно, когда вы запускаете команду, вы можете указать истории игнорировать ее, установив для переменной HISTCONTROL значение ignorespace и поставив пробел перед командой, как показано ниже.

Обратите внимание, что в начале «ping…» есть пробел, который предписывает команде истории не регистрировать ее.

-9

Конечно, используя эту возможность, помните, что целенаправленное сокрытие команд из истории — верный путь к неприятностям при последующем аудите системы. Поэтому, если у вас нет достаточно веской причины для сокрытия команд, мой совет — воздержитесь от этого.

Удаление команд из истории.

Иногда вам может потребоваться стереть всю историю предыдущих команд. Это легко сделать с помощью команды ниже.

history -c

Удалить определенную запись из истории

Команда 'history' также позволяет удалить только определенную запись. Например, предположим, что это строка 4 следующего списка.

-10

Чтобы удалить её, передайте команде истории параметр «-d», а затем номер записи, которую вы хотите удалить.

history -d 4

Далее, если мы проверим историю, то увидим, что команды уже нет в списке выполненных команд.

-11

Игнорирование определенных команд.

Возможно, вы не захотите загромождать свою историю часто используемыми командами, такими как cd, pwd и ls. В этом случае переменная ‘HISTIGNORE’ позволяет вам выбрать, какие команды не следует включать в историю.

Используйте символ «:» для разделения, чтобы указать несколько команд, как показано ниже.

export HISTIGNORE="cd:pwd:ls"

Обратите внимание, что добавление ls к HISTIGNORE игнорирует только ls, но не, например, ls -l. Другими словами, вы должны указать именно ту команду, которую хотите удалить из истории.

Отключение ведения истории.

Установите для переменной HISTSIZE значение 0, чтобы полностью отключить историю и запретить оболочке Bash запоминать введенные вами команды.

export HISTSIZE=0

Резюме

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

Это может быть особенно полезно для пользователей, которые часто используют командную строку, поскольку позволяет им легко получать доступ и повторно использовать ранее введенные команды.

P.S. Если вам интересен материал не забывайте ставить палец вверх под статьей. А так же, подписывайтесь на анонсы новых статей в телеграмм и на сайте RoadIT