同时安装多个自制程序公式

时间:2014-11-04 14:37:15

标签: unix homebrew io-redirection

您可以按brew install package1 package2安装多个自制程序公式。但是,如果您有一个文本文件,其中包含您要安装的所有软件包。你会怎么做?

brew install < packages.txt无效。它给了我答复:This command requires a formula argument

3 个答案:

答案 0 :(得分:17)

像这样:

brew install $(cat packages.txt)

甚至只是

brew install $(<packages.txt)

答案 1 :(得分:2)

这是一个alternative one-line approach,它绕过了创建文件作为中间步骤的需要:

语法:

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

VS

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 search fonts会在结果中显示多行 - 类似于ls的默认输出:

brpro ➜ ~ brew 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会给出一个仅按行分隔的列表,其中只包含我们想要的 taps

brpro ➜ ~ brew 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 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 search font | grep nerd | tr '\n' ' ' )

管!组成!快乐!

La voie Unix!

答案 2 :(得分:0)

使用了Benjamin R的答案并遇到了问题,因此将其留给其他人使用。

运行

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

先给我

Error: Calling `brew cask search` is disabled! Use `brew search` instead.

然后

Error: No available formula with the name "font-3270-nerd-font"

所以我不得不从搜索中删除cask,但将其添加到安装中

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

它一口气安装了所有内容。

您可能希望省略这些字体的单声道版本,因为它们的图标尺寸较小。

brew cask install $( brew search nerd-font | awk '/nerd-font/ && !/-mono$/' | tr '\n' ' ' )