1

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

foo bar dee zep
foo boo lee kee
foo bee

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

2 ответа2

2
!?foo bar

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

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

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

Лучший ответ:

!{?foo bar?}

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

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

на странице:

http://zsh.sourceforge.net/Doc/Release/Expansion.html#History-Expansion

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

!-2

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

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