Os comandos básicos do Linux se dividem em grupos: navegação (pwd, ls, cd), arquivos (cp, mv, rm, mkdir), permissões (chmod, chown), pacotes (apt), processos (ps, top, kill), busca e processamento de texto (find, grep, sed, awk), rede (ip, ss, curl) e serviços (systemctl, journalctl). As tabelas a seguir reúnem comandos e exemplos que cobrem a maior parte do trabalho diário no terminal.
Esta cola de comandos Linux está organizada por tarefas: encontrar um arquivo, instalar um pacote, encerrar um processo travado, extrair uma linha de um log, verificar uma porta. Os comandos foram testados no Ubuntu e no Debian; quase tudo funciona em outras distribuições também, e a diferença está principalmente no gerenciador de pacotes.
Ajuda e dicas
| Comando | O que faz |
man ls | manual completo do comando; sair com q, buscar com /palavra |
ls --help | resumo rápido das opções |
type cd | o que é: comando interno, alias ou arquivo |
which python3 | caminho do executável |
history | histórico de comandos; !123 repete o comando número 123 |
Ctrl+R | busca no histórico |
Ctrl+C / Ctrl+D | interrompe o comando / fecha o shell |
Navegação pelo sistema de arquivos
| Comando | O que faz |
pwd | diretório atual |
ls -la | todos os arquivos, inclusive ocultos, com permissões e tamanhos |
ls -lh | tamanhos em formato legível (K, M, G) |
ls -lt | ordena pela data de modificação |
cd /var/log | vai até o caminho absoluto |
cd .. / cd ~ / cd - | um nível acima / pasta pessoal / diretório anterior |
tree -L 2 | árvore de diretórios com 2 níveis (pacote tree) |
| Comando | O que faz |
touch file.txt | cria um arquivo vazio ou atualiza a data de modificação |
mkdir -p a/b/c | cria diretórios junto com os pais |
cp file.txt backup.txt | copia um arquivo |
cp -r src/ dst/ | copia um diretório recursivamente |
mv old.txt new.txt | renomeia ou move |
rm file.txt | remove um arquivo (sem lixeira) |
rm -r dir/ | remove um diretório com o conteúdo; -f não pergunta, use com cuidado |
rmdir dir | remove um diretório vazio |
ln -s /opt/app/current app | cria um link simbólico |
stat file.txt | detalhes: tamanho, permissões, inode, datas |
file image.bin | identifica o tipo do arquivo pelo conteúdo |
Visualizando conteúdo
| Comando | O que faz |
cat file | mostra o arquivo inteiro |
less file | visualização paginada; buscar com /, sair com q |
head -n 20 file | primeiras 20 linhas |
tail -n 50 file | últimas 50 linhas |
tail -f /var/log/syslog | acompanha o arquivo em tempo real |
wc -l file | contagem de linhas |
diff a.conf b.conf | diferenças entre dois arquivos |
Permissões e proprietários
| Comando | O que faz |
chmod +x script.sh | permite a execução |
chmod 644 file | rw-r--r--: o dono escreve, os demais leem |
chmod 755 dir | rwxr-xr-x: comum em diretórios e scripts |
chmod 600 ~/.ssh/id_ed25519 | somente o dono: para chaves privadas |
sudo chown www-data:www-data file | altera o dono e o grupo |
sudo chown -R alice /srv/app | altera o dono recursivamente |
id | seu UID, GID e grupos |
sudo -i | abre um shell de root |
sudo usermod -aG docker alice | adiciona o usuário a um grupo |
Pacotes (apt, no Debian e no Ubuntu)
| Comando | O que faz |
sudo apt update | atualiza as listas de pacotes dos repositórios |
sudo apt upgrade | atualiza os pacotes instalados |
sudo apt install nginx | instala um pacote |
sudo apt remove nginx | remove mantendo as configurações; purge remove também as configurações |
sudo apt autoremove | remove dependências que não são mais necessárias |
apt search htop | procura um pacote |
apt show nginx | descrição e versão |
dpkg -l | grep nginx | verifica se o pacote está instalado |
dpkg -L nginx | quais arquivos o pacote instalou |
No RHEL, Fedora e Rocky Linux, os equivalentes são dnf install, dnf remove, dnf upgrade e rpm -qa.
Ambiente e perfil
| Comando | O que faz |
echo $PATH | onde o shell procura programas |
env | todas as variáveis de ambiente |
export APP_ENV=prod | define uma variável para a sessão atual e os processos filhos |
alias ll='ls -la' | atalho para um comando |
source ~/.bashrc | recarrega o perfil sem sair da sessão |
crontab -e / crontab -l | edita / mostra as tarefas do cron |
Processos
| Comando | O que faz |
ps aux | todos os processos com usuário, CPU e memória |
ps aux | grep nginx | localiza um processo |
pgrep -a nginx | PID e linha de comando pelo nome |
top / htop | carga do sistema em tempo real |
kill 1234 | pede ao processo que termine (SIGTERM) |
kill -9 1234 | encerra à força (SIGKILL): último recurso |
pkill -f "python app.py" | encerra pela correspondência na linha de comando |
command &, jobs, fg | execução em segundo plano e controle de tarefas |
nohup ./job.sh & | o processo continua mesmo após fechar o terminal |
free -h | memória e swap |
uptime | tempo ligado e carga média |
strace -p 1234 | chamadas de sistema do processo |
Serviços e logs (systemd)
| Comando | O que faz |
systemctl status nginx | estado do serviço e as últimas linhas do log |
sudo systemctl start|stop|restart nginx | inicia, para ou reinicia |
sudo systemctl reload nginx | relê a configuração sem parar o serviço |
sudo systemctl enable --now nginx | ativa a inicialização automática e inicia agora |
systemctl --failed | unidades que falharam |
journalctl -u nginx -f | log do serviço em tempo real |
journalctl -u nginx --since "1 hour ago" | log da última hora |
journalctl -p err -b | erros desde a última inicialização |
Procurando arquivos
| Comando | O que faz |
find /var/log -name "*.log" | busca pelo nome |
find . -type f -mtime -1 | arquivos modificados no último dia |
find / -size +500M 2>/dev/null | arquivos grandes, com os erros de acesso ocultos |
find . -name "*.tmp" -delete | encontra e remove |
du -sh * | tamanho de cada item do diretório |
df -h | espaço livre nos sistemas de arquivos |
Busca e processamento de texto: grep, sed, awk e jq
| Comando | O que faz |
grep "error" app.log | linhas que contêm a palavra |
grep -i -n "error" app.log | sem diferenciar maiúsculas e minúsculas, com números de linha |
grep -r "listen" /etc/nginx/ | busca recursiva em um diretório |
grep -v "DEBUG" app.log | linhas em que a palavra não aparece |
grep -c "500" access.log | número de ocorrências |
grep -E "warn|error" app.log | expressões regulares estendidas |
sed 's/old/new/g' file | substitui e mostra o resultado |
sed -i 's/8080/9090/' app.conf | substitui diretamente no arquivo |
sed -n '10,20p' file | mostra as linhas 10 a 20 |
awk '{print $1}' access.log | primeiro campo de cada linha |
awk -F: '{print $1}' /etc/passwd | nomes de usuários (separador :) |
awk '$9 == 500' access.log | linhas em que o nono campo é igual a 500 |
sort | uniq -c | sort -rn | conta repetições e ordena pela frequência |
cut -d, -f2 data.csv | segunda coluna de um CSV |
jq '.items[].name' data.json | extrai campos de um JSON |
Exemplo de pipeline: os dez endereços IP que mais fizeram requisições ao nginx.
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
Redirecionamento e pipes
| Construção | O que faz |
cmd > out.txt | grava a saída em um arquivo (sobrescrevendo) |
cmd >> out.txt | acrescenta ao final do arquivo |
cmd 2> err.txt | redireciona os erros |
cmd > all.log 2>&1 | saída e erros no mesmo arquivo |
cmd1 | cmd2 | envia a saída de um comando como entrada de outro |
cmd | tee out.txt | mostra na tela e salva em arquivo |
cmd1 && cmd2 | executa o segundo somente se o primeiro tiver sucesso |
cmd1 || cmd2 | executa o segundo somente se o primeiro falhar |
Arquivos compactados
| Comando | O que faz |
tar -czf backup.tar.gz dir/ | empacota e comprime com gzip |
tar -xzf backup.tar.gz | descompacta |
tar -tzf backup.tar.gz | lista o conteúdo |
zip -r site.zip site/ / unzip site.zip | arquivos zip |
Rede
| Comando | O que faz |
ip a | interfaces e endereços IP |
ip r | tabela de rotas |
ping -c 4 8.8.8.8 | verifica se o host está acessível |
ss -tulpn | portas abertas e os processos que as utilizam |
dig example.com / nslookup example.com | consulta DNS |
curl -I https://example.com | somente os cabeçalhos da resposta |
curl -s https://api.example.com | jq | faz uma requisição a uma API e formata o JSON |
wget URL | baixa um arquivo |
traceroute example.com | caminho dos pacotes até o host |
ssh user@host | conecta a um servidor |
ssh-keygen -t ed25519 | cria um par de chaves SSH |
scp file user@host:/tmp/ | copia um arquivo para o servidor |
rsync -avz dir/ user@host:/srv/dir/ | sincroniza um diretório |
sudo ufw status | regras do firewall |
Sistema e discos
| Comando | O que faz |
uname -a | versão e arquitetura do kernel |
cat /etc/os-release | distribuição e versão |
hostnamectl | nome do host e informações do sistema |
lsblk | discos e partições |
sudo mount /dev/sdb1 /mnt | monta uma partição |
who / w | quem está conectado agora |
sudo reboot / sudo shutdown -h now | reinicia / desliga |
Resumo
Para o trabalho do dia a dia bastam algumas dezenas de comandos: ls, cd, cp, mv, rm, chmod, sudo, apt, ps, kill, systemctl, journalctl, grep, find, ss, curl e ssh. Guarde esta cola de comandos Linux e consulte-a até que os comandos fiquem automáticos. Todos os grupos de comandos são explicados na prática no curso de Linux.
Como sair do man ou do less?
Pressione q. Para buscar dentro do texto, digite a barra e a palavra; n vai para a próxima ocorrência.
Como sair do editor vim?
Pressione Esc, depois digite :q! e Enter para sair sem salvar, ou :wq para salvar e sair. Para quem está começando, o nano é mais fácil para editar arquivos.
Por que o rm -rf é perigoso?
O comando apaga sem confirmação e sem lixeira, e um erro no caminho (por exemplo, um espaço extra antes do asterisco) pode apagar um diretório errado. Antes de executar, confira o caminho com ls.
Como repetir o último comando com sudo?
Digite sudo !!, e o shell substitui !! pelo comando anterior completo.
Como interromper um comando travado no terminal?
Ctrl+C envia o sinal de interrupção. Se o comando não responder, encontre o PID dele com ps ou pgrep em outro terminal e encerre-o com kill.