Come posso elencare sia i programmi forniti con la mia distribuzione sia quelli che ho installato manualmente?
Come posso elencare sia i programmi forniti con la mia distribuzione sia quelli che ho installato manualmente?
Risposte:
Dipende dalla tua distribuzione.
dpkg -l
rpm -qa
pkg_info
equery list
Oeix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
Tutti questi elencheranno comunque i pacchetti anziché i programmi . Se vuoi davvero elencare i programmi, probabilmente vuoi elencare gli eseguibili nel tuo $PATH
, che può essere fatto in questo modo usando bash compgen
:
compgen -c
Oppure, se non hai 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
rpm -qa
dkpg -l | grep ^ii
.
Rispondere alla seconda parte della domanda (nulla da aggiungere alla risposta di Chris per la prima parte) :
In genere non è possibile elencare i programmi installati manualmente e i relativi componenti. Questo non viene registrato da nessuna parte se non hai utilizzato un gestore di pacchetti. Tutto quello che puoi fare è trovare i binari in posizioni standard (come suggerito da Chris) e in modo simile, indovinare da dove provengono alcune biblioteche o alcune pagine di manuali ecc. Ecco perché, quando possibile, dovresti sempre installare programmi usando il tuo gestore pacchetti .
I programmi dovrebbero essere raggiungibili tramite il PERCORSO, quindi basta elencare tutto nel percorso:
ls ${PATH//:/ }
Aspettatevi un risultato di circa 3k-4k programmi.
Per escludere una probabile minoranza di falsi positivi, è possibile perfezionare l'approccio:
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
Non ha fatto differenza per me.
$PATH
, ecc.).
Tutte le altre risposte (finora) riguardano pacchetti e binari. Se intendi "applicazioni desktop", quelle visualizzate nel menu Start, puoi provare:
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
Altre soluzioni in un'altra domanda .