¿Cómo enumero los programas que vienen con mi distribución y los que instalé manualmente?
¿Cómo enumero los programas que vienen con mi distribución y los que instalé manualmente?
Respuestas:
Eso depende de tu distribución.
dpkg -l
rpm -qa
pkg_info
equery list
oeix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
Sin embargo, todos estos enumerarán los paquetes en lugar de los programas . Si realmente desea enumerar los programas, probablemente desee enumerar los ejecutables en su $PATH
, lo que se puede hacer de esta manera utilizando bash compgen
:
compgen -c
O, si no tienes 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
.
Respondiendo a la segunda parte de la pregunta (realmente no se agrega nada a la respuesta de Chris para la primera parte) :
Generalmente no hay forma de enumerar los programas instalados manualmente y sus componentes. Esto no se registra en ninguna parte si no usó un administrador de paquetes. Todo lo que puede hacer es encontrar los archivos binarios en ubicaciones estándar (como sugirió Chris) y de manera similar, adivinar de dónde provienen algunas bibliotecas o algunas páginas de manual, etc. Es por eso que, siempre que sea posible, siempre debe instalar programas utilizando su administrador de paquetes .
Los programas deben ser accesibles a través de la RUTA, así que solo enumere todo en la ruta:
ls ${PATH//:/ }
Espere un resultado de aproximadamente 3k-4k programas.
Para excluir una minoría probable de falsos positivos, puede refinar el enfoque:
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
No hizo la diferencia para mí.
$PATH
, etc.).
Todas las otras respuestas (hasta ahora) tratan con paquetes y binarios. Si quiere decir "aplicaciones de escritorio", las que aparecen en su menú de inicio, puede intentar:
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
Más soluciones en otra pregunta .