Как автоматически завершить команду из истории команд?

Как автоматически завершить команду из истории команд?

Есть ли комбинация клавиш для bash для автоматического завершения команды из истории? В ipython и matlab, например, это достигается нажатием стрелки вверх после ввода нескольких символов.

решение1

Прежде всего, нажатие tabв bash еще лучше, так как он автоматически дополняет все исполняемые файлы в вашем PATH независимо от того, находятся ли они в истории. Тем не менее, есть различные способы получить команду из вашей истории:

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

     !-3
    

Это повторно выполнит команду, которую вы запустили три команды назад.

  1. Найдите его. Введите Ctrlrи начните вводить любой текст. Первая команда из истории, которая соответствует вашему тексту, будет показана, и нажатие enterвыполнит ее.

  2. Нажмите (стрелка вверх). Это выведет последнюю команду, нажмите ее еще раз, и вы подниметесь вверх по истории команд. Когда найдете нужную, нажмите enter.

  3. Добавьте эти строки в свой файл ~/.inputrc(создайте файл, если его нет):

     "\e[A": history-search-backward
     "\e[B": history-search-forward
    

Чтобы немедленно загрузить файл, запустите bind -f ~/.inputrc(источник). Теперь введите первые несколько символов одной из команд, которые вы ранее запускали, и нажмите . Будет показана первая команда из вашей истории, которая начинается с этих символов. Нажмите еще раз, чтобы увидеть остальные, и нажмите , enterкогда найдете нужную.

  1. Используйте historyкоманду. Как объяснил @Isaac, это выведет список всех команд, сохраненных в вашем файле истории.

решение2

Вы можете проверить позицию команды в последовательности истории с помощью команды history. Затем вы можете выполнить !<number_in_the_sequence>. Надеюсь, это поможет.

решение3

Вы также можете использовать historyи направить вывод для определенной команды.

Например, если вы cdцелый день копались в файловой системе и вам просто нужно напомнить, с какими каталогами вы работали.

history | grep cd

Затем вы можете либо скопировать/вставить команду, либо !n(где n — номер строки в файле истории) выполнить ее повторно.

Связанный контент