Isso é bem simples: apt
é para o terminal e dá uma saída bonita, enquanto apt-get
e apt-cache
são para scripts e fornecem uma saída estável e analisável. O script equivalente ao seu comando apt show
, portanto, é:
apt-cache show $PACKAGE_NAME >pack_info.txt
Agora, responda às suas perguntas, uma por uma:
A saída deO que exatamente queremos dizer com a interface CLI estável?
apt
não é bem utilizável em scripts. Por exemplo, apt install
(comparado a apt-get install
) exibe uma barra de progresso que é inútil para scripts e pode gerar erros quando a saída é analisada. apt show firefox
mostra uma dica para um registro adicional, que também é totalmente inútil em um script, você quer que simplesmente gere um todos os registros lá - é o que o apt-cache show firefox
faz. Vamos ver o que o man apt
tem a dizer sobre isso:
A linha de comando apt (8) é projetada como uma ferramenta de usuário final e pode mude o comportamento entre versões. Enquanto ele tenta não quebrar a compatibilidade com versões anteriores isso não é garantido se uma mudança parece benéfica para uso interativo.
Todos os recursos do apt (8) estão disponíveis em ferramentas dedicadas do APT, como apt-get (8) e apt-cache (8 ) também. apt (8) apenas altera o valor padrão de algumas opções (veja apt.conf (5) e especificamente o escopo Binário). Então você deve preferir usar esses comandos (potencialmente com algumas opções adicionais ativadas) em seus scripts mantenha a compatibilidade retroativa o máximo possível.
Como usar com segurança e sem erros tais comandos em scripts?
Use apenas apt-get
ou apt-cache
, respectivamente, em vez de apt
. :) Veja esta resposta para uma lista de equivalentes.
Existe uma maneira de redirecionar somente e somente o STDOUT do apt show para um arquivo?
Você já fez isso corretamente: >file
ou 1>file
redireciona stdout, 2>file
redireciona stderr e &>file
redireciona ambos para file
.