Найти тему

Реверсивный поиск в терминале Linux или быстрая навигация по истории введенных команд

Часто при работе в терминале приходится обращаться к истории того, что вводилось раньше. Это полезно, например, для того, чтобы не писать команду с нуля, а посмотреть как ее вводил кто-то до вас. Ну или вы когда-то вводили команду, нигде ее не записали, после забыли и теперь надо найти искомое. В таких случаях помогает работа с командой history, про которую сегодня и пойдет речь.

Команда history и место хранения истории

Начнем знакомство с команды history, которая судя по названию, позволяет выводить в терминал историю того, что вы вводили ранее. Использовать ее очень просто:

history

Использование команды history в терминале Linux Mint
Использование команды history в терминале Linux Mint

«Выхлоп» красивый и состоит из номера и самой команды. При желании можно вывести определенное количество последних команд, указав нужную цифру после history:

history 3

Вывод трех последних команд в терминале Linux Mint
Вывод трех последних команд в терминале Linux Mint

К слову, если вы знаете номер команды, то можно не вводить ее заново, достаточно указать этот номер вместе с символом восклицательного знака в начале:

!4 (повторно выполнится команда под номером 4)

Повторный ввод команды в терминале Linux Mint
Повторный ввод команды в терминале Linux Mint

Выводимые данные берутся не из воздуха. Если в домашней директории пользователя ввести команду ls -a, которая покажет скрытые файлы и папки,то можно увидеть файл, содержащий в названии слово history (например, .bash_history).

Отображение файла, содержащего историю введенных команд в домашней директории пользователя Linux Mint
Отображение файла, содержащего историю введенных команд в домашней директории пользователя Linux Mint

Как понимаете, первая часть имени файла зависит от той оболочки, которая установлена у вас по-умолчанию. Если это ZSH, про которую ранее говорили на канале, то файл будет называться .zsh_history. Используя команду cat можно просмотреть содержимое этого файла.

Вывод содержимого файла .bash_history в терминале Linux Mint
Вывод содержимого файла .bash_history в терминале Linux Mint

«Выхлоп» соответствует тому, что мы видели при использовании команды history. Делаем простой вывод о том, что данные истории берутся из этого файла.

Реверсивный поиск

Переходим к самому интересному. Если в терминале нажать сочетание клавиш Ctrl + R, то запустится специальный поиск по истории. Он ждет пока пользователь начнет вводить символы и будет отображать найденные соответствия, то есть те команды, где данные символы встречаются. Если на вывод поступает не то, что нужно, то можно повторно нажать Ctrl + R, чтобы поиск показал следующий доступный вариант. Чтобы выйти из реверсивного поиска нужно использовать классическое сочетание Ctrl + C.

Пример работы реверсивного поиска по истории введенных команд в терминале Archlinux KDE
Пример работы реверсивного поиска по истории введенных команд в терминале Archlinux KDE

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

Подведем итог

Статья хоть и оказалась небольшой, но как мне кажется, в таком малом объеме уместилась очень нужная и полезная информация. При этом неважно, работаете ли вы постоянно в терминале в качестве системного администратора или являетесь обычным пользователем Linux, который привык использовать консоль: поиск по истории введенных команд полезен каждому.