Terminal Linux: comandos que todo desenvolvedor deveria saber
Dominar o terminal Linux é uma habilidade essencial para qualquer desenvolvedor que deseja produtividade e controle sobre o ambiente de desenvolvimento. Este artigo aborda os comandos fundamentais que todo profissional deveria conhecer, organizados por categorias práticas para facilitar o aprendizado e a consulta rápida.
1. Navegação e gerenciamento de arquivos
Os comandos básicos de navegação formam a base do trabalho no terminal. pwd mostra o diretório atual, ls lista arquivos e cd permite mover-se entre diretórios.
$ pwd
/home/usuario/projetos
$ ls -la
total 32
drwxr-xr-x 5 usuario usuario 4096 mar 15 10:30 .
drwxr-xr-x 12 usuario usuario 4096 mar 15 09:00 ..
-rw-r--r-- 1 usuario usuario 120 mar 15 10:00 index.html
drwxr-xr-x 2 usuario usuario 4096 mar 15 10:05 src
$ cd src
Para manipular arquivos, utilize cp para copiar, mv para mover/renomear, rm para remover e mkdir para criar diretórios. Sempre use rm -i para confirmação ao deletar.
$ mkdir -p backup/2024
$ cp index.html backup/2024/index.html.bak
$ mv backup/2024 backup/2024-03
Localizar arquivos rapidamente é possível com find e locate. find busca em tempo real com critérios flexíveis:
$ find /home/usuario -name "*.log" -type f -mtime -7
/home/usuario/logs/erro.log
/home/usuario/logs/acesso.log
2. Visualização e edição de conteúdo
Para visualizar arquivos sem abrir um editor completo, use cat, less, head e tail. less permite navegação interativa em arquivos grandes, enquanto tail -f é ideal para monitorar logs em tempo real.
$ head -n 5 dados.csv
nome,idade,cidade
João,28,São Paulo
Maria,32,Rio de Janeiro
$ tail -f /var/log/syslog
Mar 15 10:45:01 servidor kernel: [12345.678] CPU: 0 PID: 1234
Para busca e transformação de texto, grep e sed são ferramentas poderosas:
$ grep -rn "ERROR" /var/log/ --include="*.log"
/var/log/app.log:23: ERROR: conexão recusada
$ sed -i 's/ERROR/ERRO/g' /var/log/app.log
Edições rápidas podem ser feitas com vim ou nano. Para iniciantes, nano oferece uma interface mais amigável:
$ nano config.json
3. Permissões e propriedade de arquivos
Entender permissões é crucial para segurança. Use ls -l para visualizar e chmod para alterar permissões. O chown modifica o proprietário do arquivo.
$ ls -l script.sh
-rwxr-xr-x 1 usuario developers 1024 mar 15 11:00 script.sh
$ chmod 750 script.sh
$ chown root:admin script.sh
O umask define permissões padrão para novos arquivos, enquanto sudo permite executar comandos como superusuário:
$ sudo systemctl restart nginx
$ su - outro_usuario
4. Processos e monitoramento do sistema
Monitore processos com ps, top (ou htop para interface mais amigável). Para finalizar processos, use kill, killall ou pkill.
$ ps aux | grep python
usuario 1234 2.5 1.2 45000 8000 ? S 11:00 0:05 python app.py
$ kill -9 1234
$ pkill -f "node server.js"
Verifique o uso de disco com df e du:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 45G 55G 45% /
$ du -sh /home/usuario/projetos
2.3G /home/usuario/projetos
5. Redes e conectividade
Teste conectividade com ping, baixe recursos com curl ou wget, e investigue portas com netstat ou ss:
$ ping -c 4 google.com
64 bytes from 142.250.80.46: icmp_seq=1 ttl=118 time=12.3 ms
$ curl -O https://exemplo.com/arquivo.zip
$ ss -tuln | grep 80
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
Acesso remoto seguro é feito com ssh e transferência com scp:
$ ssh usuario@192.168.1.100
$ scp relatorio.pdf usuario@servidor:/home/usuario/documentos/
6. Compactação, arquivamento e backups
Empacote e comprima arquivos com tar e gzip, ou use zip para compatibilidade com Windows:
$ tar -czvf projeto.tar.gz /home/usuario/projeto/
$ zip -r projeto.zip /home/usuario/projeto/
Sincronize diretórios eficientemente com rsync, que transfere apenas diferenças:
$ rsync -avz --delete /local/ usuario@servidor:/remoto/
sending incremental file list
./
index.html
sent 1.2K bytes received 35 bytes 2.5K bytes/sec
Para clonagem de discos, dd cria imagens byte a byte:
$ sudo dd if=/dev/sda of=/backup/disco.img bs=4M status=progress
7. Automação e scripts básicos
Pipes (|) e redirecionamento (>, >>, <) permitem encadear comandos poderosamente:
$ cat log.txt | grep "ERROR" | sort | uniq -c | head -10
5 ERROR: timeout
3 ERROR: conexão recusada
$ echo "novo valor" >> config.txt
Variáveis de ambiente personalizam o shell. Use export para torná-las disponíveis:
$ export EDITOR=nano
$ export PATH=$PATH:/home/usuario/scripts
Um script shell básico segue esta estrutura:
#!/bin/bash
# Script de backup automático
BACKUP_DIR="/backup/$(date +%Y%m%d)"
ORIGEM="/home/usuario/dados"
mkdir -p "$BACKUP_DIR"
for arquivo in "$ORIGEM"/*.txt; do
if [ -f "$arquivo" ]; then
cp "$arquivo" "$BACKUP_DIR/"
echo "Copiado: $arquivo"
fi
done
echo "Backup concluído em $BACKUP_DIR"
Para executar, torne o script executável:
$ chmod +x backup.sh
$ ./backup.sh
Dominar esses comandos transforma o terminal em uma ferramenta produtiva e versátil. Pratique cada categoria progressivamente e consulte as referências abaixo para aprofundamento.
Referências
- Linux Command Library — Catálogo completo de comandos Linux com exemplos práticos e descrições detalhadas.
- GNU Coreutils Manual — Documentação oficial dos utilitários básicos do Linux (ls, cp, mv, rm, etc.).
- The Art of Command Line — Guia colaborativo com dicas avançadas de terminal para desenvolvedores.
- Linux Journey - Command Line Basics — Tutorial interativo gratuito sobre fundamentos do shell Linux.
- Bash Guide for Beginners — Introdução completa à programação em Bash, incluindo scripts e automação.
- SSH Academy — Guia prático sobre comandos SSH e transferência segura de arquivos com scp.
- ExplainShell — Ferramenta que explica cada parte de comandos complexos do shell Linux.