私は(非常に新しい)Debianベースのディストリビューションを実行しています。
特定のパターンに一致するインストール済みのすべてのパッケージの簡単なリストを生成したいと思います。次のように実行してこれを実行できます。
apt list --installed "linux-image-*" | cut -d/ -f1
しかし、次のように気にしない行が表示されます。
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
したがって、使用しないことをお勧めしますapt
。次のようにdpkg-queryを実行できます。
dpkg-query --showformat='${Package}\n' --show "linux-image*"
ただし、これはインストールされたパッケージに限定されません。私は利用できる
dpkg-query --list "linux-image-*" | grep "ii"
しかし、テキスト処理をたくさんする必要がありますが、このスペースを誰が信じることができますか?
したがって、結論は次のようになります。正しいパターンに一致するインストール済みパッケージのリストを取得するには?
ノート:
- シェルグローブだけでなく、適切な正規表現になることができればボーナスポイントです。
- テキストを解析するのは理想的な解決策ではないようです。それがあなたが提案するものなら、なぜ良い方法がないのかを説明してください。
ベストアンサー1
$ apt list --installed "linux-image-*" 2>/dev/null |awk -F'/' 'NR>1{print $1}'
linux-image-3.16.0-4-amd64
linux-image-4.11.0-1-amd64
linux-image-4.12.0-1-amd64
linux-image-4.13.0-1-amd64
linux-image-4.8.0-2-amd64
linux-image-4.9.0-1-amd64
linux-image-4.9.0-2-amd64
linux-image-4.9.0-3-amd64
正規表現について話す:
$ apt list --installed "linux-image-*" 2>/dev/null |awk -F'/' 'NR>1 && $0~/4.1/{print $1}'
linux-image-4.11.0-1-amd64
linux-image-4.12.0-1-amd64
linux-image-4.13.0-1-amd64
パッケージ名なしで呼び出すと、デフォルトでインストールされているパッケージのみを一覧表示するdpkg-query
(--showformat)オプションを使用できます。-f
$ dpkg-query -f '${Package}\n' -W |grep 'linux-image' #-W == --show