Повторите последнюю команду, соответствующую "два слова" 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
такой же как !!