ディストリビューションに付属しているプログラムと手動でインストールしたプログラムの両方を一覧表示するにはどうすればよいですか?
それはあなたのディストリビューションに依存します。
dpkg -l
rpm -qa
pkg_info
equery list
または eix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
これらはすべて、programsではなくpackagesをリストします。本当にプログラムを一覧表示する場合は、おそらく$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番目の部分に答える(実際には何も追加されません Chrisの回答 最初の部分):
通常、手動でインストールされたプログラムとそのコンポーネントを一覧表示する方法はnoです。これは、パッケージマネージャーを使用しなかった場合、どこにも記録されません。あなたができることは、標準的な場所でバイナリを見つけることです(Chrisが提案したように)、同様の方法で、guesswheresome ライブラリまたは一部のマニュアルページなどが由来しています。そのため、可能な場合はいつでもパッケージマネージャーを使用してプログラムをインストールする必要があります。
プログラムは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
それは私には違いをもたらしませんでした。
他のすべての回答(これまでのところ)は、パッケージとバイナリを扱います。スタートメニューに表示される「デスクトップアプリケーション」の場合は、次のことを試してください。
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
別の質問 のその他の解決策。