Homebrew で明示的にインストールしたパッケージ名だけを一覧にするコマンド
コマンド
brew info --installed --json=v1 \
| jq -r '.[] | select(.installed | any(.installed_on_request)) | .name'
出力例
autoconf
awscli
berkeley-db
carthage
clang-format
解説
brew info --installed --json=v1
はインストール済みのパッケージ情報を出力する。 --json=v1
オプションで出力を JSON 形式にする。
JSON 形式のパッケージ情報の例を以下に示す。 installed_on_request
プロパティはそのパッケージが brew install
コマンドによって明示的にインストールされたら true になる。 false ならそのパッケージが他のパッケージの依存関係として暗黙的にインストールされたことを表す。 このプロパティに対応していなかった昔の Homebrew でインストールした場合は null
になるかもしれない(確かめていない)。
[
{
"name": "zsh",
...
"installed": [
{
"version": "5.7.1",
...
"installed_as_dependency": false,
"installed_on_request": true
}
],
...
}
]
このパッケージ情報を jq
でフィルタリングしてパッケージ名を取り出す。jq 1.6 のマニュアル
jq -r '.[] | select(.installed | any(.installed_on_request)) | .name'
-r
オプションで出力を生の文字列にする。そうしなければ JSON の文字列リテラル(ダブルクォートされた文字列)が出力されてしまう。
'.[] | select(.installed | any(.installed_on_request)) | .name'
で条件を満たすパッケージの名前を出力する。
- 入力はパッケージ情報オブジェクトの配列
-
.[]
: 各パッケージ情報オブジェクトについて -
| select(...)
: 条件に一致したオブジェクトを選ぶ- 条件
.installed | any(.installed_on_requst)
:installed
配列の要素にinstalled_on_request
が真のものがひとつでもあれば真
- 条件
-
| .name
: 各オブジェクトのname
を出力
執筆時点の環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G1012
$ brew --version
Homebrew 2.2.0-14-gb89ec55
Homebrew/homebrew-core (git revision 808d3; last commit 2019-11-28)
Homebrew/homebrew-cask (git revision 5266f2; last commit 2019-11-28)
$ jq --version
jq-1.6
Author And Source
この問題について(Homebrew で明示的にインストールしたパッケージ名だけを一覧にするコマンド), 我々は、より多くの情報をここで見つけました https://qiita.com/uasi/items/27b5fa671833a16e712f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .