10 comandos shell pra te ajudar no dia-a-dia de desenvolvedor

Almir m3nd3s
Ship It!
Published in
5 min readAug 5, 2019

Muitos desenvolvedores desconhecem o poder do shell, em muitas situações ele pode ser seu amigo e ajudar ser mais produtivo.

Alguns desenvolvedores migram de ambientes Windows para Mac ou Linux, mas talvez por falta de conhecimento acabam não tirando todo proveito que o shell pode lhes dar.

Tive o prazer de trabalhar como sysadmin, na época dos servidores físicos e tive a oportunidade de experimentar, testar e aprimorar meus conhecimentos em shell.

Atualmente sou desenvolvedor ruby e no meu dia-a-dia uso com muita frequência comandos que me auxiliam bastante em certas atividades.

Um caso real foi quando me solicitaram uma lista de valores utilizados por uma certa opção nas configurações das contas de alguns usuários. No fim, essa pessoa que me solicitou gostaria de saber a recorrência de certas opções e qual delas era mais utilizada.

Muitos usariam planilhas para chegar nesse resultado, outros criariam scripts em linguagens específicas para fazer tal contagem. Outros talvez só exportassem em TXT ou CSV e deixariam o “usuário” se virar pra contabilizar isso.

Usando ferramentas (comandos) de shell seria fácil chegar a isso, bastaria exportar os valores e depois com comandos shell tudo estaria pronto em poucos segundos.

Caso contado, vamos aos comandos! Mas antes gostaria de comentar que alguns comandos, listados abaixo, eu não os contabilizei pois são a base de muito do que faço no shell:

cat, less, more

Os três servem para visualizar e paginar dados de arquivos de texto plano. O cat printa o conteúdo do arquivo na tela. O less idem, mas paginando, você poderá usar algumas teclas para navegar pelo arquivo. O more é muito similar ao less mas diferente :-D.

Agora, vamos a lista do que me ajuda e como pode te ajudar também.

#1 SORT

Perfeito para ordenar conteúdo de arquivos sem precisar a recorrer a linguagens de programação. Rápido, fácil, prático.

Uso:

cat arquivo.txt | sort

O comando vai ordenar alfabeticamente (string), mas você pode utilizar parâmetros para o sort de forma a se adequar ao que precisa:

  • -n Quando precisar ordenar valores numéricos
  • -k column Quando o dado a ser ordenado for tabular, é possível indicar qual coluna será utilizada para ordenar os dados
  • -r Usa ordem decrescente para ordenação

#2 CUT

Utilizado para “cortar” arquivos padronizados/tabulados e capturar algum dado, cut ao seu dispor!

Muito utilizado para extrair informações, como por exemplo de um CSV. Suponha que tenha um CSV e que dele você precisará apenas de uma certa coluna:

cat arquivo.csv | cut -d ';' -f 2
  • -f indica qual é a coluna a ser recortada
  • -d por default o delimitador é o espaço, mas se precisar pode indicar um outro delimitador usando esta opção

#3 UNIQ

Remove repetidos e ainda pode contabiliza-los. O primeiro uso é mesmo de remover itens duplicados de um certo conteúdo, mas também pode te socorrer e contabilizar ao mesmo tempo. Foi ele que usei no caso que comentei logo no início do post.

  • -c quando utilizado contabiliza as ocorrências duplicadas

#4 FIND

O que você faz quando precisa localizar um determinado arquivo? Provavelmente usa da interface gráfica de seu SO para localizar, correto? Mas se eu te disser que há um comando muito melhor e com muitas opções a seu dispor?

O find encontra o que precisa e até o que não precisa, é só saber buscar.

find /path -name "*.pdf*"

O find possui um uso um pouco diferente do que habitualmente estamos acostumados, mas funciona assim: find seguido do path que será usado como base para pesquisa, depois vem a lista de filtros que deseja utilizar. Alguns úteis são:

  • -name busca pelo nome, aceita curingas. Lembre-se de utilizar aspas para proteger o argumento (assim como fiz acima).
  • -type busca pelo tipo, aí pode ser arquivo (f), diretório (d) entre outras opções que SOs Unix based possuem. Mas estes dois aí servirão para maioria dos casos.
  • -empty está precisando localizar os arquivos em branco? Esta é a opção.
  • -size Que tal buscar o arquivo pelo seu tamanho? Se usar apenas o valor o find buscará pelo tamanho exato, mas pode utilizar um + antes do valor para indicar valores acima do indicado. Ex: find /tmp -size +1M, buscará por arquivos maiores que 1 mega
  • -delete Este na verdade não é um filtro, mas uma ação. Se usado em conjunto com o exemplo do -size removerá todos os arquivos maiores que 1M em tmp.

Há uma outra ação muito bacana, o -exec, mas ele por si só merece outro post explicando as possibilidades, ou uma simples pesquisada na internet mostrará vários exemplos bacanas.

#5 GREP

Útil ferramenta para filtrar ou buscar por algum pattern. Esta pode ser utilizada para filtrar conteúdo de arquivos, filtrar logs ou mesmo procurar por padrões em arquivos de uma determinada pasta, como output ele exibe a linha:

# buscará pelo termo pattern no arquivo.txt
grep pattern arquivo.txt
# buscará por pattern em todos arquivos da pasta /tmp
grep -R pattern /tmp

#6 UPTIME

Seu principal uso é para exibir o tempo total em que o sistema está ativo, mas também traz uma informação muito útil, o load average, que vale uma pesquisada caso ainda não saiba do que se trata.

#7 W

Este nem parece um comando né? Pois bem, este você pode utilizar pra saber se tem mais alguém logado e o que este outro usuário está fazendo.

#8 man

A melhor ferramenta de todas! RTFM

Brincadeiras a parte, tudo que comentei e muito mais você pode encontrar nas famosas man pages de cada comando, para acessa-los é só digitar man seguido do comando que deseja visualizar o manual. Até o próprio man tem manual.

O manual será aberto num leitor como more ou less, neles você poderá navegar usando as setas do teclado, espaço ou as teclas page up e page down.

Para sair basta digitar q

#9 WC

Outro ótimo utilitário, utilizado para contar palavras, linhas, caracteres ou bytes.

# conta o número de linhas
cat arquivo.txt | wc -l

Outro parâmetro útil é o -w, utilizado para contar palavras.

#10 TAIL

Perfeito para acompanhar logs de daemons do SO, melhor ainda se utilizado com o grep. Por exemplo para acompanhar os logs do nginx filtrando por IP:

tail -f /var/log/nginx.log | grep "127.0.0.1"

Estes são os comandos que mais utilizo no meu dia-a-dia e que certamente lhe ajudarão trazendo mais produtividade e agilidade nas tarefas diárias.

Espero que tenha gostado!

Ah, para finalizar segue uma lista de outros comandos não nativos do SO, mas que farão seus olhos brilharem:

--

--

Almir m3nd3s
Ship It!

Entusiasta de software livre, desenvolvimento web e metodologias ágeis e apaixonado por café!