Повторите последнюю команду, соответствующую "два слова" zsh

Я хочу повторить последнюю команду, которая соответствует foo bar, С помощью !! не работает (это не последняя команда, которую я использовал), и не работает !fooпотому что моя история выглядит примерно так

foo bar dee zep
foo boo lee kee
foo bee

Если я попытаюсь напечатать !foo bar, zsh автозаполнение до foo bee (что так же, как !! во всяком случае) как я попал в космос. Как бы я это сделал?

2 ответа

Решение
!?foo bar

Смотрите http://zsh.sourceforge.net/Doc/Release/Expansion.html

Редактировать: Нет, вы не должны избегать пробелов. Если вам нужно добавить что-то, что не является частью расширения истории, отделите его от другого ?Например:

echo hello
echo foo
!?echo hello? world # runs "echo hello world"

Better answer:

!{?foo bar?}

Я нахожу фигурные скобки полезными в задержке расширения истории с помощью magic-space, хотя они задокументированы как:

Изолировать ссылку на историю от соседних символов (при необходимости).

на странице:

http://zsh.sourceforge.net/Doc/Release/Expansion.html

Примечание: в некоторых случаях может быть намного быстрее использовать синтаксис n- го предыдущего элемента истории, например:

!-2

для 2-й команды назад, !-1 такой же как !!

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