As tabelas são das formas mais simples de se organizar informações.
Muitos comandos ou sequências de comandos, dados para obter informações sobre o comportamento do hardware ou do software, podem oferecer uma saída de dados um pouco confusa, à primeira vista.
Com o uso do comando grep, contudo, é possível filtrar a parte que interessa das informações, como já ensinei antes.
Mas, quando se precisa obter informações ordenadas, em vez de “filtradas”, o comando column pode ser mais útil.
Veja um exemplo de seu uso, associado ao comando mount.
mount | column -t
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=3925308k,nr_inodes=981327,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=787320k,mode=755)
/dev/sdb1 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
/dev/sda1 on /home type btrfs (rw,relatime,space_cache,subvolid=5,subvol=/)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
tmpfs on /run/user/119 type tmpfs (rw,nosuid,nodev,relatime,size=787316k,mode=700,uid=119,gid=124)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=787316k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
ls -lah | column -t
total 52K
drwxr-xr-x 1 justincase justincase 350 set 19 10:31 .
drwxr-xr-x 1 justincase justincase 1,8K set 25 16:22 ..
drwxr-xr-x 1 justincase justincase 4,1K set 19 16:17 Complete-Python-Bootcamp-master
-rw-r--r-- 1 justincase justincase 360 set 19 10:31 dict_bd_enderecos.py
-rw-r--r-- 1 justincase justincase 115 jun 9 16:17 for-colors.sh
-rwxr-xr-x 1 justincase justincase 8,8K jun 13 09:10 hello
-rw-r--r-- 1 justincase justincase 29 set 10 13:03 hello.py
-rw-r--r-- 1 justincase justincase 138 jun 16 17:26 helloworld.f95
-rw-r--r-- 1 justincase justincase 340 jun 20 10:51 meups1.sh
-rw-r--r-- 1 justincase justincase 195 jun 9 17:34 mon-logf.sh
-rw-r--r-- 1 justincase justincase 625 jun 13 15:15 pinghosts.sh
drwxr-xr-x 1 justincase justincase 168 set 6 17:48 PYTHON
-rw-r--r-- 1 justincase justincase 49 jun 9 16:21 sctchange.sh
-rw-r--r-- 1 justincase justincase 128 jun 9 16:40 until-contador.sh
-rw-r--r-- 1 justincase justincase 130 jun 9 16:26 while-contador.sh
O ls tem saídas “tradicionalmente arrumadas”, de forma que o column apenas melhora o aspecto inserindo tabulações nos espaços.
O utilitário column formata o resultado em múltiplas colunas, dando-lhes um aspecto de tabela organizada, com o objetivo de facilitar a leitura.
Seu uso pode ser incorporado permanentemente, com o comando alias.
Veja um exemplo, baseado na página do manual do column:
alias ls="(printf 'Permissões Links Dono Grupo Bytes Mês Dia '; \
printf 'Hora/Ano Arquivo\n_________________________\n'; \
ls -l | sed 1d) | column -t"
Depois disto, experimente rodar o ls:
ls
Permissões Links Dono Grupo Bytes Mês Dia Hora/Ano Arquivo
_________________________
drwxr-xr-x 1 justincase justincase 4158 set 19 16:17 Complete-Python-Bootcamp-master
-rw-r--r-- 1 justincase justincase 360 set 19 10:31 dict_bd_enderecos.py
-rw-r--r-- 1 justincase justincase 115 jun 9 16:17 for-colors.sh
-rwxr-xr-x 1 justincase justincase 9008 jun 13 09:10 hello
-rw-r--r-- 1 justincase justincase 29 set 10 13:03 hello.py
-rw-r--r-- 1 justincase justincase 138 jun 16 17:26 helloworld.f95
-rw-r--r-- 1 justincase justincase 340 jun 20 10:51 meups1.sh
-rw-r--r-- 1 justincase justincase 195 jun 9 17:34 mon-logf.sh
-rw-r--r-- 1 justincase justincase 625 jun 13 15:15 pinghosts.sh
drwxr-xr-x 1 justincase justincase 168 set 6 17:48 PYTHON
-rw-r--r-- 1 justincase justincase 49 jun 9 16:21 sctchange.sh
-rw-r--r-- 1 justincase justincase 128 jun 9 16:40 until-contador.sh
-rw-r--r-- 1 justincase justincase 130 jun 9 16:26 while-contador.sh
Se quiser tornar este alias permanente, adicione a linha de código ao final do arquivo .bashrc.
O arquivo password tem seus dados separados por ‘:’, porém são muito justos.
Veja como separar isto tudo:
cat /etc/passwd | column -t -s :
Note que foi adicionado um elemento, à linha de comando acima: ‘-s :’
Sua função é indicar que a separação de colunas deve ocorrer sobre o caractere ‘:’.
2 replies on “Formate automaticamente a saída dos seus comandos Linux em tabelas”
Muito boa a dica. Os comandos funcionam. Mas no meu caso preciso saber para que esta informação é útil no meu dia dia.
A gente precisa aprender um comando e dopis viver ele. Ele precisa ser usado para ficar na memória, não é?
Executo os comandos leio a info e não sei o que fazer com isto. Enfim então estes posts são para usuários avançados. è isto? Abs.
O utilitário pode ser útil dentro de scripts que retornam informações em grande quantidade.
Eventualmente, pode ser usado em operações triviais do dia a dia também.
Pessoalmente, coloco na categoria “coisas que vale a pena saber, mesmo que não vá usar tão cedo”… 😉