Есть ли комбинация клавиш для bash для автоматического завершения команды из истории? В ipython и matlab, например, это достигается нажатием стрелки вверх после ввода нескольких символов.
решение1
Прежде всего, нажатие tabв bash еще лучше, так как он автоматически дополняет все исполняемые файлы в вашем PATH независимо от того, находятся ли они в истории. Тем не менее, есть различные способы получить команду из вашей истории:
Используйте его номер. Если вы знаете, что нужная вам команда была 3 команды назад, вы можете просто запустить
!-3
Это повторно выполнит команду, которую вы запустили три команды назад.
Найдите его. Введите Ctrlrи начните вводить любой текст. Первая команда из истории, которая соответствует вашему тексту, будет показана, и нажатие enterвыполнит ее.
Нажмите ▲(стрелка вверх). Это выведет последнюю команду, нажмите ее еще раз, и вы подниметесь вверх по истории команд. Когда найдете нужную, нажмите enter.
Добавьте эти строки в свой файл
~/.inputrc
(создайте файл, если его нет):"\e[A": history-search-backward "\e[B": history-search-forward
Чтобы немедленно загрузить файл, запустите bind -f ~/.inputrc
(источник). Теперь введите первые несколько символов одной из команд, которые вы ранее запускали, и нажмите ▲. Будет показана первая команда из вашей истории, которая начинается с этих символов. Нажмите ▲еще раз, чтобы увидеть остальные, и нажмите , enterкогда найдете нужную.
- Используйте
history
команду. Как объяснил @Isaac, это выведет список всех команд, сохраненных в вашем файле истории.
решение2
Вы можете проверить позицию команды в последовательности истории с помощью команды history
. Затем вы можете выполнить !<number_in_the_sequence>
. Надеюсь, это поможет.
решение3
Вы также можете использовать history
и направить вывод для определенной команды.
Например, если вы cd
целый день копались в файловой системе и вам просто нужно напомнить, с какими каталогами вы работали.
history | grep cd
Затем вы можете либо скопировать/вставить команду, либо !n
(где n — номер строки в файле истории) выполнить ее повторно.