flatpak
imprime a saída como uma tabela:
$ flatpak search firefox
Name Description Application ID Version Branch Remotes
Firefox Fast, Private & Safe Web Browser org.mozilla.firefox 116.0.2 stable flathub
Mullvad B… Free the internet from mass surveillance …ullvad.MullvadBrowser 12.5.2 stable flathub
Mojave-GTK Mojave-Style Theme for GTK Flatpak Applications …tk3theme.Mojave-light 0.1 3.22 flathub
No entanto, se for canalizado para algo, como cat
ou grep
, a saída não será mais formatada como uma tabela e os cabeçalhos da tabela desaparecerão:
$ flatpak search firefox | cat
Firefox Fast, Private & Safe Web Browser org.mozilla.firefox 116.0.2 stable flathub
Mullvad Browser Free the internet from mass surveillance net.mullvad.MullvadBrowser 12.5.2 stableflathub
Mojave-GTK Mojave-Style Theme for GTK Flatpak Applications org.gtk.Gtk3theme.Mojave-light 0.1 3.22 flathub
Como forço o flatpak a formatar a saída como uma tabela, mesmo quando a saída é canalizada para outro processo?
A inspeção do que as chamadas do sistema
flatpak search
fazem mostra que o comando flatpak verifica se a saída padrão é um terminal real e obtém sua largura em caracteres¹ para definir a saída (você pode testar isso: faça uma janela de console menor e execute o mesmoflatpak search
comando novamente: não está contendo exatamente a mesma saída!).Como o redirecionamento para um arquivo não possui um "número de colunas exibíveis", o flatpak não tenta fazer o mesmo layout legal da exibição.
Ei, Flimm, isso soa muito como se você realmente não devesse usar a saída "bonita para humanos" que, por exemplo
flatpak search
, produz, mas chame você mesmo os programas subjacentes. No entanto:flatpak
por padrão, separa as colunas em sua saída com tabuladores ( Tab, ↹,\t
, como quiser) e isso torna mais fácil para você separar as colunas individuais e fazer o layout você mesmo, da maneira que desejar. Por exemplo:rendimentos
¹ Como eu fiz isso:
Um rápido
strace -o /tmp/flatpak.strace flatpak search
, seguido pela leitura de /tmp/flatpak.strace:dando-nos