LoginSignup
4
1

More than 3 years have passed since last update.

Homebrew で明示的にインストールしたパッケージ名だけを一覧にするコマンド

Last updated at Posted at 2019-11-28

コマンド

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
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1