Listagem de aplicativos snap

Bom, se precisarmos listar os aplicativos flatpak instalados numa distro, basta apenas digitar no terminal o comando
flatpak list
e logo aparece uma lista mostrando todos os aplicativos instalados no sistema e mais algumas informações tipo assim:

Name Application ID Version Branch Installation
Ciano com.github.robertsanseries.ciano 0.2.4 stable system
Video Downloader com.github.unrud.VideoDownloader 0.8.6 stable system
GreenWithEnvy com.leinardi.gwe 0.15.4 stable system
OBS Studio com.obsproject.Studio 27.0.1 stable system
Transmission com.transmissionbt.Transmission 3.00 stable system
youtubedl-gui io.github.JaGoLi.ytdl_gui 3.0 stable system
Color Picker nl.hjdskes.gcolor3 2.4.0 stable system
Audacity org.audacityteam.Audacity 3.0.4 stable system
Codecs org.audacityteam.Audacity.Codecs stable system
Chromium Web Browser org.chromium.Chromium 92.0.4515.159 stable system
Codecs org.chromium.Chromium.Codecs stable system
YOGA Image Optimizer org.flozz.yoga-image-optimizer 1.0.0 stable system
TAP-plugins …freedesktop.LinuxAudio.Plugins.TAP 1.0.1 20.08 system
SWH …freedesktop.LinuxAudio.Plugins.swh 0.4.17 20.08 system
Freedesktop Platform org.freedesktop.Platform 20.08.14 20.08 system
Mesa org.freedesktop.Platform.GL.default 21.1.4 20.08 system
Intel …g.freedesktop.Platform.VAAPI.Intel 20.08 system
ffmpeg-full …g.freedesktop.Platform.ffmpeg-full 20.08 system
openh264 org.freedesktop.Platform.openh264 2.1.0 2.0 system
GNU Image Manipulatio… org.gimp.GIMP 2.10.24 stable system
Manual org.gimp.GIMP.Manual 2.10 system
GNOME Application Pla… org.gnome.Platform 3.38 system
GNOME Application Pla… org.gnome.Platform 40 system
Inkscape org.inkscape.Inkscape 1.1 stable system
Adwaita theme org.kde.KStyle.Adwaita 5.15 system
KDE Application Platf… org.kde.Platform 5.15 system
QGnomePlatform …g.kde.PlatformTheme.QGnomePlatform 5.15 system
QtSNI org.kde.PlatformTheme.QtSNI 5.15 system
QGnomePlatform-decora… …coration.QGnomePlatform-decoration 5.15 system
Kdenlive org.kde.kdenlive 21.08.0 stable system
OpenShot Video Editor org.openshot.OpenShot 2.6.0 stable system
Telegram Desktop org.telegram.desktop 2.9.3 stable system
VLC org.videolan.VLC 3.0.16 stable system

Mas se quisermos somente informações referentes a apenas uma coluna basta digitarmos o comando

flatpak list --columns=‘nome-da-coluna01-sem-aspas’,‘nome-da-coluna02-sem-aspas’,etc

Por exemplo: se for digitado o seguinte comando no terminal

flatpak list --columns=name

O resultado será esse:

Name
Ciano
Video Downloader
GreenWithEnvy
OBS Studio
Transmission
youtubedl-gui
Color Picker
Audacity
Codecs
Chromium Web Browser
Codecs
YOGA Image Optimizer
TAP-plugins
SWH
Freedesktop Platform
Mesa
Intel
ffmpeg-full
openh264
GNU Image Manipulation Program
Manual
GNOME Application Platform version 3.38
GNOME Application Platform version 40
Inkscape
Adwaita theme
KDE Application Platform
QGnomePlatform
QtSNI
QGnomePlatform-decoration
Kdenlive
OpenShot Video Editor
Telegram Desktop
VLC

E se quisermos as informações apenas dos aplicativos sem as dependências aparecerem na lista, basta colocar a flag --app logo após list. Onde, por exemplo, ficaria assim:

flatpak list --app --columns=name

E a saída seria essa:

Name
Ciano
Video Downloader
GreenWithEnvy
OBS Studio
Transmission
youtubedl-gui
Color Picker
Audacity
Chromium Web Browser
YOGA Image Optimizer
GNU Image Manipulation Program
Inkscape
Kdenlive
OpenShot Video Editor
Telegram Desktop
VLC

Ou seja, pra cada coluna ou sequência de colunas, pode-se obter os valores separados e assim trabalhar com eles pra qualquer finalidade.
A informação que eu gostaria de obter é a seguinte: Tem alguma forma de fazer essa mesma manipulação das informações obtidas no snap?
Eu procurei no site Snapcraft e olhei a documentação, mas não encontrei nada parecido com isso. Pesquisei na internet e só encontro os comandos básicos pra instalar, deletar ou atualizar os snaps. Encontrei alguns outros comandos mais refinados, mas não é o que eu preciso. Bom, pelo menos, o modo pateta estava desligado (eu acho).
Alguém poderia me ajudar?
Desde já agradeço.

2 curtidas

Dá uma olhada =)

https://guialinux.uniriotec.br/snap/

3 curtidas

É do mesmo jeito:

Com snap list:

Name     Version        Rev   Tracking  Publisher   Notes
core     16-2.35.1      5419  beta      canonical✓  core
spotify  1.0.88.353     19    stable    spotify✓    -
vlc      3.0.4          555   stable    

Aí você pode filtrar os campos com cut:

Pra listar apenas o pacote:

snap list | tr -s ' ' | cut -d' ' -f1

Pra listar o pacote e o canal:

snap list | tr -s ' ' | cut -d' ' -f1,4

Pra listar o pacote, a versão e o canal:

snap list | tr -s ' ' | cut -d' ' -f1,2,4

Mas note que o campo ‘Name’ vai junto, você pode resolver passando a lista com o sed:

snap list | tr -s ' ' | cut -d' ' -f1 | sed "1d"

Acho que deu pra pegar a lógica, é só pegar o número dos campos e separar com vírgula, essa dúvida é mais sobre tratamento de texto no terminal que com o snap em si

Faltou explicar o tr -s, ele tranforma uma sequência de vários caracteres (no caso espaço em branco) por um unico caractere, por exemplo:

echo naaaaaaaaaaaaataanaaaaael | tr -s 'a'

Resulta em:

natanael
3 curtidas

Uma outra maneira de fazer o que fez o @Natanael.755 usando awk, que pode integrar as funções do tr, sed e cut:

snap list | awk -F'  +' 'NR != 1 { print $1 }'
  • -F: O que dividirá as colunas da tabela. No caso, eu usei uma expressão regular (as mesmas do grep -E) que significa, “um espaço, seguindo de um ou mais espaços” – ou seja, dois ou mais espaços. Com isso, o awk não se confunde se tiver mais de um espaço (função do tr).
  • { print $1 } – mostra a primeira coluna (print $2, a segunda, etc.). (função do cut).
  • NR != 1 – só execute o código seguinte se não estivermos na primeira linha. Para deixar o cabeçalho, basta remover essa condição, deixando awk -F' +' '{ print $1 }', que aí o código vale pra todas as linhas. (função do sed).
3 curtidas

Eu já havia acessado esse site, mas não tem o que eu preciso.
Valeu a força.

1 curtida

Caramba. Eu conheço vários comandos do shell, mas ainda não chegam a esse nível pra resolver essa situação.
Tenho que comer bastante feijão com arroz pra chegar nesse nível.
Vou ter que estudar mais sobre shell script.
Caso não seja tão incômodo, teria como descrever o que cada letra dessa significa dentro do comando? Pois daí vai ficar mais fácil pra eu criar outros comandos que eu possa precisar baseados nesses dos exemplos.
Valeu a ajuda. Muitíssimo obrigado.

Um dia eu chego nesse nível.
Valeu a ajuda. Mais um aprendizado bem suscedido.

  • snap list – pede para o snap enviar uma lista de aplicativos para a saída (que normalmente é o terminal).
  • | – em vez da saída do comando que vem antes ir para o terminal, vai para a entrada do programa que vem depois. Todos os | aqui têm essa função.
  • tr – um comando com várias funções relacionadas transformar um caractere da entrada em outro na saída. O uso específico dele aqui (tr -s ' ') já foi explicado no comentário original.
  • cut – comando que, como o nome sugere, “corta” a entrada e manda um “pedaço” dela para a saída. -d escolhe a “emenda”, o caractere que vai servir de delimitador para os cortes (no caso, o espaço). -f escolhe as colunas que serão exibidas.
Porque tr é necessário

O cut só trabalha com delimitadores de um caractere só (diferente do awk). Então, por exemplo, se ele recebesse a entrada:

A C  M

Ele iria considerar:

  • 1ª coluna: A;
  • 2ª coluna: C;
  • 3ª coluna: vazia;
  • 4ª coluna: M;
  • sed: é um programa com muitas funções, com bíblias escritas a seu respeito, mas focando no uso bem básico aqui, um parâmetro/argumento com d remove linhas da entrada. Se você só mandar sed 'd', ele remove todas, mas é possível restringir com sed '1d', sed '2d' (primeira e segunda linha, respectivamente), etc… Isso não é nem um milésimo das funções desse programa, só lembrando. Tem esse artigo do blog que entra em mais detalhes, com as funções mais comuns, porém ainda tem muito mais que ele pode fazer.
4 curtidas

Deu pra entender bastante coisa nessa explicação. Ajudou muito.
Valeu.

1 curtida

Perfeita explicação

2 curtidas

Não merece apenas palmas. Mas o Tocantins inteiro.

1 curtida