Руководство по установке ack предлагает установить скрипт ack с помощью этой команды:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3
Я предполагаю, что !#:3
в конце это какая-то обратная ссылка, но что это значит? Есть ли эквивалент в Zsh? Гугл не помог.
bash
command-history
Мэтт Пфефферле
источник
источник
man bash
, тогда ищите РАСШИРЕНИЕ ИСТОРИИОтветы:
Это специальный синтаксис, расширенный с помощью bash. Это также работает для Zsh.
Согласно странице справки bash (раздел РАСШИРЕНИЕ ИСТОРИИ), шаблон расширяется следующим образом:
!#
относится ко всей набранной командной строке, котораяcurl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
:
разделяет между указателем события (в данном случае всей строкой) и указателем слова (выбирает часть)3
который выбирает третье слово / аргумент (отсчет слов начинается с нуля)~/bin/ack
.В последней командной строки (обычно отображается перед казнены) является:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
.Подробности смотрите в руководстве по bash или очень похоже на руководство по zsh.
источник
!#
много, но!!
,!$
,!*
,!sud:p
и многие другие все чрезвычайно полезны , и я использую их все время. Проверьте unix.stackexchange.com/a/67/135943Во-первых
bash
, это подстановка истории (все подстановки истории начинаются с!
). В частности,!#
до сих пор означает все в командной строке, а добавление «: 3» означает третье слово (отсчет начинается с 0).Таким образом, приведенная выше команда переводит
!#:3
в~/bin/ack
.источник