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

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

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

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

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

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

3 ответа3

2

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

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

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

$ !8
sudo vi /etc/shells
Password:

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

2

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

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

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

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

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

     cp /etc/hosts hosts.bak
     vim !^
    

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

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


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

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .