Прокрутите историю оболочки на основе команды или заглушки / ствола?

Пожалуйста, прости мое невежество.... У меня есть история команд в Bash на OS X и Linux. Иногда я хочу вернуться к элементу на основе команды. Например, предположим, что я ранее ввел:

make distclean && make dist && cp *.diff *.tar.gz ../

Тогда, предположим, у меня в истории следуют десятки или сотни команд.

Как я могу печатать make а затем используйте, скажем, стрелку вверх () или управление и стрелка вверх (CTRL) вернуться к этой команде в истории?

"Заглушка" или "ствол" означает, что я только набираю "ма", а не "делаю".

Я работаю в Bash как на Linux, так и на OS X, поэтому меня будут интересовать обе операционные системы.

3 ответа

В качестве альтернативы Ctrl-R, вы можете использовать команду истории и передать его grep для конкретной команды.

$ history | grep vi 
    7  vi /etc/shells
    8  sudo vi /etc/shells

Оттуда вы можете увидеть номер истории и снова запустить эту команду, используя !number,

$ !8
sudo vi /etc/shells
Password:

И я верю, что до тех пор, пока вы не заполните или не очистите историю команд, это число должно оставаться неизменным.

Вот несколько полезных трюков, которые помогут вам повторить команду на основе предыдущих команд (кроме использования Ctrl+R):

  • использование !name повторить последнюю команду, начиная с имени, например:

    !make
    
  • повторить команду (например, с sudo), используйте:

    sudo !!
    
  • чтобы повторить аргумент, используйте !$:

    ls /usr/local/bin
    cd  !$
    
  • чтобы редактировать файл из последнего аргумента, используйте !^:

     cp /etc/hosts hosts.bak
     vim !^
    

Подробнее на: Как использовать Bash History для повышения производительности командной строки

Также смотрите: Какие ваши любимые функции или приемы командной строки? в Unix SE


Как примечание, если вы делаете опечатки слишком часто, это приложение для этого:

E сть readline (не bash) функция, которая делает именно это. Добавлять:

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

на ваш .inputrc файл.
В отличие от Ctrl-r он совпадает только с префиксом. См . Наиболее важный совет командной строки - добавочный поиск в истории с помощью.inputrc для более подробной информации.

Другие вопросы по тегам