文字列に一致するすべてのパッケージを一覧表示する短い方法

文字列に一致するすべてのパッケージを一覧表示する短い方法

私が主に使用するパッケージのリストを検索するとき

dpkg -l|grep string|cut -d" " -f3|xargs

libdouble-conversion3:amd64 libestr0:amd64 libeval-closure-perl libio-stringy-perl libunistring2:amd64 liburi-perl libusr-1.0-1:amd64 libwind0-heimdal:amd64 libxstring-perl php-mbstring -mbstring php8.2-mbstring

bashでこのリストを取得するより短い方法はありますか?

答え1

dpkg-query-W代わりに使用すると、フォーマットされた出力が許可されます-l

例えば

dpkg-query -f='${binary:Package} ' -W  'pyth*'

空白で始まるすべてのバイナリパッケージは、必要に応じて、対応するpythアーキテクチャを含む空白としてリストされて区切られます。

可能な形式の詳細についてはを参照してくださいman dpkg-query

必ずしも短くする必要はありませんが、それに基づいてエイリアスを定義できるため、REGEXクエリを使用できます。

答え2

ただ学びたいなら一つaptitude考慮できるパッケージを検索できるツール検索構文はい極度に多目的でインストールまたは削除されたパッケージに関連するさまざまな基準に基づいて検索できます。

ここで:

aptitude -q search -F %p '~i ^pyth'

インストールされているパッケージを検索します(~i、部族?installed)そしてその名前は与えられた正規表現(orの^pyth略語)と一致します。~n^pyth?name(^pyth))。

-F %p指定する出力形式、ここに%pパッケージ名があります。

1行にスペースで区切られたリストを印刷したい場合xargs(の略語xargs echo)は適切なツールではありません。代わりに使用してくださいpaste -sd ' ' -。パッケージリストを別のコマンドに渡すことが目的の場合:

dpkg/aptitude... | xargs -rd '\n' cmd --

しかし:

dpkg/aptitude... | xargs -r cmd

パッケージ名には通常、/で始まらず、/がなければ問題になる-スペース、引用符、またはバックスラッシュ文字が含まれていないため、この方法も機能します。xargs-0-d

コマンドがパッケージを削除/削除する場合は、次のこともできます。

aptitude remove '~i ^pyth'

aptitudeまた、l(模倣表示)をタップしてそこに検索仕様を入力して、lTUIで同じ検索を実行することもできます。簡単なリストを見る。これにより、これらのパッケージの詳細をより簡単に確認して操作を実行できます。最初にシステムで実行したときに最初にしたことは、aptitudeデフォルト設定を変更することでした。オプション->優先事項確認してください:

    [X] Advance to the next item after changing the state of a package
    [X] Display flat view instead of default view on startup

これにより、フィルタリングされた一連のパケットにタスクを適用するのが簡単になります。

関連情報