Estou no sistema executando uma distribuição baseada no Debian (relativamente recente).
Eu gostaria de gerar uma lista simples de todos os pacotes instalados que correspondem a um determinado padrão. Eu posso fazer isso, executando, digamos,
apt list --installed "linux-image-*" | cut -d/ -f1
mas recebo linhas das quais não me importo, por exemplo:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
Então talvez seja melhor eu não usar apt
. Eu posso executar o dpkg-query assim:
dpkg-query --showformat='${Package}\n' --show "linux-image*"
mas isso não se limita aos pacotes instalados. eu poderia usar
dpkg-query --list "linux-image-*" | grep "ii"
mas então eu precisaria fazer um monte de processamento de texto, e quem pode confiar nesses espaços, certo?
Portanto, qual é o caminho certo para obter a lista de pacotes instalados que correspondem a um padrão?
Nota :
- Pontos de bônus se puder ser uma regexp adequada, em vez de apenas uma bola de bala.
- Ter que analisar o texto parece uma solução abaixo do ideal; se é isso que você sugere, discuta por que não existe uma maneira melhor.
fonte
aptitude search
eapt list
neste caso não.Falando sobre regex:
Você também pode usar
dpkg-query
com a-f
opção (--showformat), que quando chamada sem nenhum nome de pacote, por padrão, apenas os pacotes instalados são listados.fonte
Para "interceptar" o termo pesquisado quando grep ping dpkg output, é necessário incluir o termo de pesquisa da seguinte maneira. " git " é usado como o termo de pesquisa de amostra:
O quilate (^) ii seguido por (2) espaços que precedem o termo pesquisado não garante nada ANTES dele, exceto que a combinação de caracteres pode corresponder.
A
[[:space:]]
limitação do termo pesquisado impede que correspondências parciais ocorram apenas por espaços correspondentes imediatamente após ele.fonte