Como alias o caminho certo um comando dpkg-query (com pipe)?

1

Estou adicionando esse alias a .bashrc (em uma linha de curso), mas infelizmente isso não funciona:

alias lspkg="dpkg-query -W -f='${db:Status-Abbrev}\t${binary:Package} - ${binary:Summary}\n'
| awk -F'\t' '/^ii/ {print $2}'"

Alguma ideia do porquê? Tentei inverter a barra invertida ou a aspa simples sem melhores resultados.

Referência:

Como enviar pacotes instalados para o apt-cache?

    
por Soleil 22.05.2018 / 20:37

1 resposta

3

Os ${} e $ estão sendo comidos pelo shell devido ao " , portanto, o $ precisa ser escapado.

alias lspkg="dpkg-query -W -f='\${db:Status-Abbrev}\t\${binary:Package} - \${binary:Summary}\n' | awk -F'\t' '/^ii/ {print \}'"

Geralmente, ao depurar comandos do shell, é possível usar echo para verificar as coisas, como em:

$ echo "dpkg-query -W -f='${db:Status-Abbrev}\t${binary:Package} - ${binary:Summary}\n'
| awk -F'\t' '/^ii/ {print $2}'"
dpkg-query -W -f='\t - \n'
| awk -F'\t' '/^ii/ {print }'
$ _

Depois, pode-se ver o que falta na inspeção visual.

    
por dsstorefile1 22.05.2018 / 20:47