Developer Tools

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.

9 min de leitura

Terminal com texto verde em uma tela escura

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.

# 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ção
  • r-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.