Fundamentos da Linha de Comando Linux Que Todo Desenvolvedor Deve Conhecer
Um guia prático de referência para os comandos Linux usados no dia a dia do desenvolvimento — navegação no sistema de arquivos, permissões, gerenciamento de processos, processamento de texto e redes.
A linha de comando Linux é a interface universal para servidores, containers, pipelines de CI e ambientes de desenvolvimento. Seja acessando um servidor de produção via SSH às 2 da manhã ou depurando um container Docker, dominar esses comandos é a diferença entre a confusão e a confiança.
Navegação e gerenciamento de arquivos
# Navegar por diretórios
pwd # exibe o diretório atual
cd /var/log # caminho absoluto
cd .. # sobe um nível
cd - # volta ao diretório anterior
cd ~ # diretório home
# Listar arquivos
ls # listagem básica
ls -la # formato longo + arquivos ocultos
ls -lh # tamanhos de arquivo legíveis por humanos
ls -lt # ordena por data de modificação (mais recente primeiro)
# Criar, copiar, mover, excluir
mkdir -p path/to/dir # cria diretório + diretórios pai
cp -r source/ dest/ # cópia recursiva
mv oldname newname # renomear ou mover
rm -rf directory/ # exclui diretório e conteúdo (irreversível!)
touch file.txt # cria arquivo vazio / atualiza timestamp
# Visualizar e navegar em arquivos
cat file.txt # imprime o arquivo inteiro
less file.txt # visualizador paginado (q para sair, / para buscar)
head -n 20 file.txt # primeiras 20 linhas
tail -n 20 file.txt # últimas 20 linhas
tail -f /var/log/app.log # acompanha o log em tempo real
Permissões de arquivo
As permissões no Linux são expressas como três conjuntos de bits de leitura/escrita/execução para o proprietário, grupo e outros:
-rwxr-xr-- 1 alice devs 4096 Apr 8 10:00 script.sh
Lendo a string de permissões: -rwxr-xr--
-— tipo de arquivo (d = diretório, l = symlink)rwx— proprietário: leitura, escrita, execuçãor-x— grupo: leitura, execução (sem escrita)r--— outros: somente leitura
chmod — alterar permissões
# Notação simbólica
chmod u+x script.sh # adiciona execução para o proprietário
chmod g-w file.txt # remove escrita do grupo
chmod o=r file.txt # define outros como somente leitura
chmod a+r file.txt # adiciona leitura para todos (a = all)
# Notação numérica (octal)
chmod 755 script.sh # rwxr-xr-x (comum para executáveis)
chmod 644 file.txt # rw-r--r-- (comum para arquivos)
chmod 600 ~/.ssh/id_rsa # rw------- (obrigatório para chaves SSH)
chmod 700 ~/.ssh/ # rwx------ (obrigatório para o diretório .ssh)
Use nossa Calculadora de Chmod para construir strings de permissão visualmente e entender o que cada valor octal significa.
Busca e processamento de texto
# Localizar arquivos
find /var/log -name "*.log" # busca por nome
find . -name "*.ts" -newer package.json # arquivos mais recentes que package.json
find . -type f -size +10M # arquivos com mais de 10MB
find . -name "node_modules" -prune # excluir diretórios
# Buscar conteúdo em arquivos
grep "error" app.log # busca no arquivo
grep -r "TODO" ./src # busca recursiva
grep -i "error" app.log # sem distinção de maiúsculas/minúsculas
grep -n "error" app.log # exibe números de linha
grep -v "DEBUG" app.log # linhas que NÃO correspondem
grep -E "error|warning" app.log # regex: error OU warning
# Processamento de texto em fluxo
cat access.log | grep "404" | wc -l # conta erros 404
cat data.csv | cut -d',' -f1,3 # extrai colunas 1 e 3
cat file.txt | sort | uniq # ordena e remove duplicatas
cat file.txt | sort | uniq -c | sort -rn # conta ocorrências, ordena por frequência
awk — processamento baseado em campos
# Imprime campos específicos (separados por tabulação por padrão)
awk '{print $1, $3}' file.txt
# Processa CSV (separado por vírgula)
awk -F',' '{print $2}' data.csv
# Soma uma coluna
awk -F',' '{sum += $3} END {print sum}' data.csv
# Imprime linhas que correspondem a um padrão
awk '/ERROR/ {print $0}' app.log
sed — editor de fluxo
# Substituir texto
sed 's/foo/bar/' file.txt # substitui a primeira ocorrência por linha
sed 's/foo/bar/g' file.txt # substitui todas as ocorrências (global)
sed -i 's/foo/bar/g' file.txt # edição in-place (modifica o arquivo)
# Excluir linhas
sed '/^#/d' file.txt # exclui linhas de comentário
sed '5,10d' file.txt # exclui linhas 5 a 10
# Imprimir linhas específicas
sed -n '10,20p' file.txt # imprime linhas 10 a 20
Gerenciamento de processos
# Visualizar processos em execução
ps aux # todos os processos com detalhes
ps aux | grep nginx # localiza processos nginx
top # visualizador interativo de processos
htop # visualizador interativo melhorado (se instalado)
# Controle de processos
kill PID # envia SIGTERM (encerramento gracioso)
kill -9 PID # envia SIGKILL (forçar encerramento)
pkill nginx # encerra pelo nome
killall node # encerra todos os processos correspondentes
# Jobs em segundo plano
command & # executa em segundo plano
jobs # lista jobs em segundo plano
fg %1 # traz o job 1 para o primeiro plano
nohup command & # executa imune a desconexão (sobrevive ao logout)
# Recursos do sistema
free -h # uso de memória
df -h # uso de espaço em disco
du -sh /var/log/ # tamanho do diretório
lsof -i :3000 # o que está usando a porta 3000
Comandos de rede
# Conectividade
ping google.com # testa conectividade
curl -I https://example.com # apenas cabeçalhos HTTP
curl -o file.zip https://example.com/file.zip # baixa arquivo
wget https://example.com/file.zip # downloader alternativo
# Inspecionar conexões
ss -tulpn # portas em escuta e processos
netstat -tulpn # alternativa (sistemas mais antigos)
lsof -i :80 # o que está na porta 80
# DNS
dig example.com # consulta DNS
dig example.com MX # registros MX
host example.com # consulta DNS simples
nslookup example.com # consulta DNS interativa
SSH e acesso remoto
# Conectar a um servidor
ssh user@server.com
ssh -p 2222 user@server.com # porta não padrão
ssh -i ~/.ssh/id_rsa user@server.com # chave específica
# Copiar arquivos
scp file.txt user@server.com:~/ # copia para o diretório home remoto
scp user@server.com:~/file.txt . # copia do servidor remoto
scp -r ./dist user@server.com:~/app/ # cópia recursiva
# Tunelamento SSH (redirecionamento de porta)
ssh -L 5432:localhost:5432 user@server.com # tunela banco remoto para porta local
Gere pares de chaves SSH para autenticação segura com nosso Gerador de Chaves SSH.
Ambiente e shell
# Variáveis de ambiente
export API_KEY=abc123 # define para a sessão atual e processos filhos
echo $API_KEY # imprime a variável
env # lista todas as variáveis de ambiente
printenv PATH # imprime uma variável específica
unset API_KEY # remove a variável
# Histórico do shell
history # lista comandos anteriores
!! # repete o último comando
!grep # repete o último comando grep
Ctrl+R # busca reversa no histórico (digite para buscar)
# Atalhos úteis
Ctrl+C # interrompe o processo atual
Ctrl+Z # suspende para segundo plano
Ctrl+L # limpa a tela (igual a clear)
Ctrl+A # vai para o início da linha
Ctrl+E # vai para o final da linha
Ctrl+U # apaga a linha antes do cursor
Pipes e redirecionamento
# Pipes — encadeia comandos
ls -la | grep ".log" | wc -l
# Redirecionar saída
command > file.txt # sobrescreve o arquivo com stdout
command >> file.txt # anexa stdout ao arquivo
command 2> errors.txt # redireciona stderr
command > all.txt 2>&1 # redireciona stdout + stderr para o mesmo arquivo
command &> all.txt # forma abreviada do comando acima
# /dev/null — descarta saída
command > /dev/null 2>&1 # descarta toda a saída (executa silenciosamente)
One-liners úteis para desenvolvedores
# Localizar e substituir em todos os arquivos de um diretório
find . -name "*.tsx" | xargs sed -i 's/OldComponent/NewComponent/g'
# Obter IP público
curl -s ifconfig.me
# Monitorar um arquivo em busca de alterações
watch -n 2 "ls -la uploads/"
# Compactar um diretório
tar -czf archive.tar.gz ./directory/
# Extrair um tar.gz
tar -xzf archive.tar.gz
# Exibir os 10 maiores arquivos no diretório atual
du -sh * | sort -rh | head -10
# Contar linhas de código por tipo de arquivo
find . -name "*.ts" | xargs wc -l | sort -rn | head -20
A linha de comando recompensa quem investe nela. Cada comando que você aprende se torna um bloco de construção para combinações mais poderosas. Comece com navegação e grep, depois adicione pipes, depois awk — e você conseguirá lidar com qualquer tarefa de processamento de texto que aparecer.