私は(かなり最近の)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"
しかし、私はたくさんのテキスト処理を行う必要があります、そして誰がそれらのスペースを信頼できるのでしょう?
つまり、パターンに一致するインストール済みパッケージのリストを取得するright方法は何ですか?
注:
aptitude
は、パッケージ管理ツールで認識されている、インストールされているかどうかに関係なく、正規表現を使用して、無関係な出力なしですべてのパッケージを検索することをサポートし、出力のフォーマット方法を通知できます。
aptitude search "linux-image-.*"
インストールされているパッケージのみを一覧表示するには:
aptitude search "linux-image-.* ~i"
正規表現に一致するインストール済みパッケージnamesのみを一覧表示するには:
aptitude search "linux-image-.* ~i" -F "%p"
ドキュメントでは 使用可能な検索パターン および 出力フォーマット指定子 について詳しく説明しています。このサイトには、たとえば apexpで正規表現を使用する方法はありますか? 、 aptitudeパート2で正規表現 、および Linux- apt のみを使用してセキュリティ更新を表示またはアップグレードします。
Debianベースのシステムにインストールされているパッケージのリストを取得する良い方法の1つは次のとおりです。
dpkg -l | grep ^ii | awk '{print $2}'
dpkg -l
の出力行は、正常であると信頼できます。パターン^ii
はインストールされたパッケージの行と一致し、単純なAwkは2番目の列であるパッケージ名(apt-get install
コマンドで使用されるのと同じ名前)を抽出します。パッケージ名に空白を含めることはできないため、これも安全な操作です。
$ 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
を-f
(--showformat)オプションとともに使用することもできます。これは、パッケージ名なしで呼び出された場合、デフォルトではインストール済みのパッケージのみがリストされます。
$ dpkg-query -f '${Package}\n' -W |grep 'linux-image' #-W == --show
grep ping dpkgの場合に検索語を「トラップ」するために=出力。次のように検索語を囲む必要があります。 "git"は、標本検索語として使用されます。
dpkg -l |grep "^ii git[[:space:]]"
carat(^)iiの後に(2)スペース検索語を先頭に追加しても、何も保証されません[〜#〜] before [〜#〜]それは、文字の組み合わせが一致できることを除いて、.
[[:space:]]
検索された用語に隣接すると、スペースの一致のみがすぐに行われるため、部分一致は発生しません[〜#〜] after [〜#〜] it。