インストールされているすべてのプログラムを一覧表示するにはどうすればよいですか?


49

ディストリビューションに付属しているプログラムと手動でインストールしたプログラムの両方をリストするにはどうすればよいですか?


8
どのディストリビューション?各ディストリビューションには異なるインストールツールがあります。
マッテオ

うーん、私はRed Hat、Ubuntu、cygwinに興味があります。いくつかのコマンドライン引数を使用してプログラムを一覧表示する配布なしの方法はありますか?
InquilineKea

1
いいえ、ありません。パッケージマネージャーが異なるためです。
クリスダウン

回答:


72

それはディストリビューションに依存します。

  • 適性ベースのディストリビューション(Ubuntu、Debianなど): dpkg -l
  • RPMベースのディストリビューション(Fedora、RHELなど): rpm -qa
  • pkg *ベースのディストリビューション(OpenBSD、FreeBSDなど): pkg_info
  • Portageのベースのディストリビューション(Gentooの、など)equery listまたはeix -I
  • pacmanベースのディストリビューション(Arch Linuxなど): pacman -Q
  • Cygwin: cygcheck --check-setup --dump-only *
  • Slackware: slapt-get --installed

ただし、これらはすべてプログラムではなくパッケージをリストします。本当にプログラムを一覧表示したい場合は、おそらくの実行可能ファイルを一覧表示する必要があります。これは、bashを使用して次のように実行できます。$PATHcompgen

compgen -c

または、お持ちでない場合compgen

#!/bin/bash
IFS=: read -ra dirs_in_path <<< "$PATH"

for dir in "${dirs_in_path[@]}"; do
    for file in "$dir"/*; do
        [[ -x $file && -f $file ]] && printf '%s\n' "${file##*/}"
    done
done

4
RPMベースのシステム(Red Hat、SuSE、CentOSなど):rpm -qa
nos

1
Debian / Ubuntuはdkpg -l | grep ^ii
ロルフ

1
@Rolf、あなたはdpkgの意味
HarkályGergő

1
Hrmph ... BSDはLinuxディストリビューションではありません...
Kusalananda

1
@Kusalananda Huh?この回答では、BSDはLinuxディストリビューションであるとは言っていませんが、ディストリビューションです。それは文字通りBSDの「D」の略です。
クリスダウン

13

質問の2番目の部分に答えます(最初の部分のChrisの答えに実際に追加されるものはありません)

通常手動でインストールされたプログラムとそのコンポーネントをリストする方法はありません。パッケージマネージャーを使用しなかった場合、これはどこにも記録されません。できることは、標準の場所(Chrisが提案したような)でバイナリを見つけ、同様の方法で、いくつかのライブラリやマニュアルページなどがどこから来たのかを推測することだけです。そのため、可能な場合は常に、パッケージマネージャーを使用してプログラムをインストールする必要があります


3

プログラムはPATHを介して到達可能である必要があるため、パス内のすべてをリストします。

ls ${PATH//:/ }

約3k〜4kのプログラムの結果を期待します。

誤検知の可能性のある少数を除外するには、アプローチを改良できます。

for d in ${PATH//:/ } ; do 
    for f in $d/* ; do  
        test -x $f && test -f $f && echo $f
    done
done

私にとっては違いはありませんでした。


2
これにより、さまざまな非プログラム(などのディレクトリのサブディレクトリ$PATH)もリストされる可能性があることに注意してください。
クリスダウン

1
テストを追加しましたが、違いはありませんでした(パス内のディレクトリにあるディレクトリは、それ自体がパス内にないことはどれほど便利ですか?)。しかし、正確性に依存している場合には、役に立つかもしれません。
ユーザー不明

1
驚くばかり!私はLinuxのバージョンを知ることができませんでした(長い話ですが、犯罪者はいませんでした)が、このコードは私の時間を節約しました:)
obenjiro

2

他のすべての回答(これまで)は、パッケージとバイナリに関するものです。「デスクトップアプリケーション」、つまりスタートメニューに表示されるものを意味する場合は、次を試してください。

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -

別の質問でより多くのソリューション。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.