特定のコマンドを提供するパッケージを探す

特定のコマンドを提供するパッケージを探す

パッケージがインストールされてcommand-not-foundいてユーザーがシステムに存在しないコマンドを実行しようとすると、実行可能ファイルを指定したパッケージ名を含むアドバイスが印刷されます。同じことをしますが、実行可能ファイル名を引数として使用するコマンドはありますか?

編集:私は読んだファイルがどの(削除された)Debianパッケージに属しているかを調べる方法は?ただし、これらの提案のいずれも明確な結果を提供するコマンドを提供しませんcommand-not-found

答え1

あなたはそれ自体を使うことができますcommand-not-found

command-not-found --ignore-installed ls

どのパッケージにコマンドが含まれているかをお知らせしますls。 (--ignore-installedインストールされているパッケージを考慮しないでください。特にインストールされている場合は、すぐにコマンドを実行しないでください。)

または、次のものを使用できますapt-file

apt-file search bin/ls

パスに「bin / ls」を含むファイルを含むすべてのパッケージが一覧表示されます。次の項目のみを一致するようにフィルタリングできますls

apt-file search bin/ls | grep bin/ls$

答え2

はい、コマンドは次のとおりですcommand-not-found

$ command-not-found firefox
The program 'firefox' is currently not installed.  To run 'firefox' please ask your administrator to
install the package 'firefox-esr'
firefox: command not found

ここは正確に出力を自動的に生成するためにシェルキャプチャが実行されるのと同じ機能です。

apt-file search firefox一致するものを見つけるためにも使用できます。文書パッケージに。

答え3

apt-fileとそのperl正規表現は、ファイルが$ PATHのどこかにインストールされていることを確認する限り、ほとんどすべての操作を実行できます。

apt-file find --regexp "/$COMMAND$" | grep -E "($(tr : '|' <<< "$PATH"))/$COMMAND$""

関連情報