curl https://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 !#:3
ack — инструмент для поиска текста в файлах, который часто используется разработчиками как более удобная и современная альтернатива `grep`. Он написан на Perl и ориентирован на работу с кодом.
В строке, в конце есть непонятности:
!#:3ㅤ
Опять какая-то магия, а магию мы с тобой любим.
Давай разберемся.
В данном случае
!#:3 — это конструкция, связанная с историей команд в оболочке Bash/Zsh.! = Используется для доступа к истории команд.Например,
!! повторит последнюю команду, а !123 выполнит команду с номером 123 в истории.# = Ссылается на текущую команду, которая в данный момент пишется.Вместо доступа к уже выполненной команде из истории, мы ссылаемся на текст текущей строки.
:3 = Указывает, что нужно взять третий аргумент в текущей строке.Соответственно:
:1 — первый аргумент
:2 — второй аргумент
:3 — третий аргумент
Как это работает?
Сначала выполняется команда curl, которая скачает файл ack-2.28-single-file и сохранит его в
~/bin/ack.После этого, команда chmod изменяет права доступа для файла.
А
!#:3 подставляет третий аргумент текущей команды, то есть ~/bin/ack.И по итогу команда превращается в
chmod 0755 ~/bin/ackcurl http://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
Вот и вся магия. Упорото? Аще!
А зачем это нужно?
- удобно для автоматизации и избежания дублирования ввода
- снижает вероятность ошибок, если накосячил в путях
Короче эта хреновина делает команду более динамичной и минимизирует рукоблудие.
Штука прикольная, как говорится — век живи, век учись.
🔥 Ну и с пятницей друзья! Еще пару недель и каникулы.
tags: #bash
—
🔔 @bashdays➡️ @gitgate