Часто при работе в терминале приходится обращаться к истории того, что вводилось раньше. Это полезно, например, для того, чтобы не писать команду с нуля, а посмотреть как ее вводил кто-то до вас. Ну или вы когда-то вводили команду, нигде ее не записали, после забыли и теперь надо найти искомое. В таких случаях помогает работа с командой history, про которую сегодня и пойдет речь.
Команда history и место хранения истории
Начнем знакомство с команды history, которая судя по названию, позволяет выводить в терминал историю того, что вы вводили ранее. Использовать ее очень просто:
history
«Выхлоп» красивый и состоит из номера и самой команды. При желании можно вывести определенное количество последних команд, указав нужную цифру после history:
history 3
К слову, если вы знаете номер команды, то можно не вводить ее заново, достаточно указать этот номер вместе с символом восклицательного знака в начале:
!4 (повторно выполнится команда под номером 4)
Выводимые данные берутся не из воздуха. Если в домашней директории пользователя ввести команду ls -a, которая покажет скрытые файлы и папки,то можно увидеть файл, содержащий в названии слово history (например, .bash_history).
Как понимаете, первая часть имени файла зависит от той оболочки, которая установлена у вас по-умолчанию. Если это ZSH, про которую ранее говорили на канале, то файл будет называться .zsh_history. Используя команду cat можно просмотреть содержимое этого файла.
«Выхлоп» соответствует тому, что мы видели при использовании команды history. Делаем простой вывод о том, что данные истории берутся из этого файла.
Реверсивный поиск
Переходим к самому интересному. Если в терминале нажать сочетание клавиш Ctrl + R, то запустится специальный поиск по истории. Он ждет пока пользователь начнет вводить символы и будет отображать найденные соответствия, то есть те команды, где данные символы встречаются. Если на вывод поступает не то, что нужно, то можно повторно нажать Ctrl + R, чтобы поиск показал следующий доступный вариант. Чтобы выйти из реверсивного поиска нужно использовать классическое сочетание Ctrl + C.
При этом, обнаруженные команды можно не просто посмотреть. Они автоматически подставляются в поле для ввода, поэтому используя стрелки на клавиатуре вы можете без проблем использовать найденную реверсивным поиском команду, чтобы ввести ее вновь. Как, например, я использовал алиас upd для того, чтобы установить обновления для дистрибутива.
Подведем итог
Статья хоть и оказалась небольшой, но как мне кажется, в таком малом объеме уместилась очень нужная и полезная информация. При этом неважно, работаете ли вы постоянно в терминале в качестве системного администратора или являетесь обычным пользователем Linux, который привык использовать консоль: поиск по истории введенных команд полезен каждому.