В этой статье подробно рассмотрим возможности и функции команды 'history' Linux, что даст нам возможность более эффективного ее использования.
Команда 'history' Linux — это мощный инструмент, который позволяет получать доступ к предыдущим командам терминала и управлять ими. Возможность искать, редактировать и выполнять предыдущие команды может значительно повысить вашу эффективность и производительность при работе в терминале.
Независимо от того, какой опыт работы в Linuх вы имеете, думаю, эта статья предоставит ценную информацию и советы по использованию этой команды.
Отображение истории команд.
При вводе 'history' в командной строке, вы можете увидить число, за которым следуют команды, которые вы недавно использовали.
Однако, для полного аудита вводимых команд не хватает временной метки рядом с командо. Что было бы полезно во многих случаях, чтобы знать не только какую команду, но и когда использовали. Чтобы включить эту функцию, необходимо настроить переменную HISTTIMEFORMAT, как показано ниже.
export HISTTIMEFORMAT="%F %T "
Теперь, если вы повторно запустите команду истории, результат будет выглядеть следующим образом:
Для того, чтобы вернуть отображение к первоначальному виду необходимо удалить переменную следующей командой:
unset HISTTIMEFORMAT
Поиск команды в истории.
Еще одно, часто используемая функция 'history', это поиск команды по ключевому слову. Особенно, после выполнения длинной команды. Вы можете осуществить поиск в истории команд, следующим способом:
- Нажмите Ctrl+R и введите ключевое слово.
- Продолжайте нажимать Ctrl+R, пока не дойдете до нужной команды.
- Нажмите «Enter», когда увидите ее, чтобы выполнить команду.
Например, я выполнил поиск «yum» в следующем примере, который отобразил первое найденное в истории совпадение «yum update», содержащее слово «yum».
Кстати, вы можете отредактировать команду из истории перед ее выполнением. Нажмите клавишу «Esc», когда дойдете до совпадения, внесите необходимые изменения в команду, а затем повторно выполните ее, нажав «Enter».
Повторение последней выполненной команды.
Иногда, случается, что необходимо выполнить предыдущую команду. Ниже приведены четыре различных способа повторения последней выполненной команды.
- Используйте стрелку вверх, чтобы просмотреть предыдущую команду, и нажмите Enter, чтобы выполнить ее.
- Введите '!!' и нажмите Enter из командной строки
- Введите !-1 и нажмите Enter в командной строке.
- Нажатие Ctrl+P отобразит предыдущую команду, затем нажмите «Enter», чтобы выполнить ее.
Выполнение определенной команды из истории.
Иногда нам нужно запустить определенную команду из истории. Например, пусть это будет команда номер 5: 'uname -r'.
Для этого введите «!» за которым следует номер команды. В нашем случае это будет '!5'.
Ограничение количества строк в истории команд.
Количеством строк, хранимых в истории команд, управляют встроенные переменные оболочки HISTSIZE и HISTFILESIZE. Добавьте следующие две строки в свой «~/.bashrc файл», затем выйдите из системы и снова войдите в нее.
HISTSIZE=2000
HISTFILESIZE=2000
Результатом этого будет то, что теперь история настроена на хранение 2000 команд. По умолчанию в большинстве дистрибутивов Linux размер истории ограничен 500 или 1000 записями.
Изменение файла хранения истории.
По умолчанию история хранится в файле ‘/.bash_history’. Для изменения файла, в котором хранится история команд, например, на ‘/.my_commands’, добавьте следующую строку в файл ‘/.bash_profile’, затем выйдите из системы и войдите снова.
HISTFILE=~/.my_commands
Переменная HISTFILE содержит имя и местоположение вашего файла истории Bash.
Удаление повторяющихся записей.
Если мы часто выполняем команду, то строки с использованием этой команды будут повторяться в истории много раз. Например, сама команда ‘history’ появляется несколько раз.
Чтобы удалить все предыдущие повторяющиеся совпадения, установите для переменной ‘HISTCONTROL’ значение ‘erasedups‘.
export HISTCONTROL=erasedups
Если мы повторно запустим команду истории, повторяющиеся совпадения исчезнут
Примечание
Для этой переменной существует еще значение ignoredups. Предположим, что для переменной HISTCONTROL установлено значение ignoreups вместо erasedups. В этом случае команда не будет добавлена в историю, если она ранее была выполнена и записана в историю, но это не удалит все ее предыдущие появления в истории.
Скрытие некоторых команд из истории.
Теперь мы рассмотрим специфическую особенность команды ‘history’. А именно, когда вы запускаете команду, вы можете указать истории игнорировать ее, установив для переменной HISTCONTROL значение ignorespace и поставив пробел перед командой, как показано ниже.
Обратите внимание, что в начале «ping…» есть пробел, который предписывает команде истории не регистрировать ее.
Конечно, используя эту возможность, помните, что целенаправленное сокрытие команд из истории — верный путь к неприятностям при последующем аудите системы. Поэтому, если у вас нет достаточно веской причины для сокрытия команд, мой совет — воздержитесь от этого.
Удаление команд из истории.
Иногда вам может потребоваться стереть всю историю предыдущих команд. Это легко сделать с помощью команды ниже.
history -c
Удалить определенную запись из истории
Команда 'history' также позволяет удалить только определенную запись. Например, предположим, что это строка 4 следующего списка.
Чтобы удалить её, передайте команде истории параметр «-d», а затем номер записи, которую вы хотите удалить.
history -d 4
Далее, если мы проверим историю, то увидим, что команды уже нет в списке выполненных команд.
Игнорирование определенных команд.
Возможно, вы не захотите загромождать свою историю часто используемыми командами, такими как 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