Como faço para listar todos os programas instalados?

41

Como faço para listar os dois programas que vieram com a minha distribuição e os que eu instalei manualmente?

    
por InquilineKea 18.09.2011 / 21:30

4 respostas

61

Isso depende da sua distribuição.

  • Distribuições baseadas em aptitude (Ubuntu, Debian, etc): dpkg -l
  • Distribuições baseadas em RPM (Fedora, RHEL, etc): rpm -qa
  • Distribuições baseadas em
  • pkg * (OpenBSD, FreeBSD, etc): pkg_info
  • Distribuições baseadas no Portage (Gentoo, etc): equery list ou eix -I
  • distribuições baseadas em pacman (Arch Linux, etc): pacman -Q
  • Cygwin: cygcheck --check-setup --dump-only *
  • Slackware: slapt-get --installed

Todos eles listarão os pacotes em vez dos programas . Se você realmente deseja listar os programas, provavelmente desejará listar os executáveis no seu $PATH , o que pode ser feito assim usando o compgen :

do bash
compgen -c

Ou, se você não tiver 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
    
por 18.09.2011 / 22:26
12

Respondendo a segunda parte da questão (nada realmente a ser adicionado a Chris 'answer para a primeira parte) :

Geralmente não há nenhuma maneira de listar programas instalados manualmente e seus componentes. Isso não é registrado em lugar algum se você não usou um gerenciador de pacotes. Tudo o que você pode fazer é encontrar os binários em locais padrão (como Chris sugeriu) e de maneira semelhante, adivinhar onde algumas bibliotecas ou alguns manual páginas etc. vieram de. É por isso que, sempre que possível, você deve sempre instalar programas usando o gerenciador de pacotes .

    
por 19.09.2011 / 23:18
3

Os programas devem ser acessados por meio do PATH, portanto, liste tudo no caminho:

ls ${PATH//:/ }

Espere um resultado de cerca de 3k-4k programas.

Para excluir uma provável minoria de falsos positivos, você pode refinar a abordagem:

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

Não fez diferença para mim.

    
por 25.03.2012 / 00:43
2

Todas as outras respostas (até agora) lidam com pacotes e binários. Se você quer dizer "aplicativos de desktop", aqueles que aparecem no menu Iniciar, você pode tentar:

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

Mais soluções em outra pergunta .

    
por 06.02.2018 / 00:51