ディストリビューションに同梱されているプログラムと手動でインストールしたプログラムをどのように一覧表示しますか?
答え1
ディストリビューションによって異なります。
- 適性ベースのディストリビューション(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
- シグウィン:
cygcheck --check-setup --dump-only *
- スラックソフトウェア:
slapt-get --installed
これらすべてがリストされます。バッグ代わりにプログラムしかし。本当にプログラムを一覧表示するには、$PATH
bashを使用して実行できる実行可能ファイルを一覧表示したいと思いますcompgen
。
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
答え2
質問の2番目の部分に答えてください(追加することはありません)。クリスの答え最初の部分の場合):
一般的にいいえ手動でインストールされたプログラムとそのコンポーネントを一覧表示する方法。パッケージマネージャを使用しないと、この情報はどこにも記録されません。あなたができることは、標準の場所(Chrisが提案したものと同じ)で同様の方法でバイナリを見つけることです。推測するどこ一部図書館一部マンページなど。だから可能なときはいつでも、常にパッケージマネージャのインストーラを使用する必要があります。。
答え3
(これまで)他のすべての答えはパッケージとバイナリをカバーしています。 「デスクトップアプリ」、つまりスタートメニューに表示されるアプリに言及している場合は、次のことを試すことができます。
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
その他のソリューション別の問題。
答え4
プログラムはPATHを介してアクセス可能である必要があるため、パス内のすべてのエントリを一覧表示するだけです。
ls ${PATH//:/ }
約3,000~4,000プログラムの結果を期待します。
可能ないくつかの誤検出を排除する方法を改善することができます。
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
私には違いはありません。