Установка нескольких формул homebrew одновременно

вы можете установить несколько формул homebrew по brew install package1 package2. Но если у вас есть текстовый файл со всеми пакетами, которые вы хотели бы установить. Как бы вы это сделали?

brew install < packages.txt не работает. Это дает мне ответ: This command requires a formula argument

2 ответов


такой:

brew install $(cat packages.txt)

или даже просто

brew install $(<packages.txt)

здесь альтернативный подход, который обходит необходимость создания файла в качестве промежуточного шага:

синтаксис:

brew install $( brew search my-search-term | grep my-filter-term | tr '\n' ' ' )

и

brew search x | grep y > install_list.txt
brew install $( < install_list.txt )

альтернатива (с помощью awk):

brew search x | awk '/inclusion string/ && !/exclusion string/' | tr '\n' ' ' )

пример:

предположим, я хотел установить все шрифты ботана, которые в настоящее время не находятся на моей машине за один раз.

brew cask search fonts приведу несколько строк в результаты-аналогично выходу по умолчанию из ls:

brpro ➜ ~ brew cask search font
==> Partial Matches
birdfont                       font-hack-nerd-font
dfontsplitter                  font-hack-nerd-font-mono
font-3270 font-halant          font-noto-sans-tibetan
font-3270-nerd-font ✔          font-hammersmith-one
font-3270-nerd-font-mono ✔     font-han-nom-a
font-abeezee font-hanalei      font-noto-sans-vai
(...)

трубопровод вывода на grep -i nerd дает один разделенный строкой список только краны мы хотим.

brpro ➜ ~ brew cask search font | grep -i nerd
font-3270-nerd-font
font-3270-nerd-font-mono
font-anonymouspro-nerd-font
font-anonymouspro-nerd-font-mono
font-arimo-nerd-font
font-arimo-nerd-font-mono
font-aurulentsansmono-nerd-font
(...)

можно использовать tr чтобы преобразовать этот вывод в одну строку, разделенную пробелами:

brpro ➜ ~ brew cask search font | grep nerd | tr '\n' ' '
font-3270-nerd-font font-3270-nerd-font-mono font-anonymouspro-nerd-font font-anonymouspro-nerd-font-mono (...)

теперь нам просто нужно передать результат в brew install:

brew install $( brew cask search font | grep nerd | tr '\n' ' ' )

Дудки! Композиция! Радость!

La voie Unix!