Folha de consulta

Comandos Linux: cola de comandos para iniciantes e administradores

Atualizado: · Skillaria.Top

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

ComandoO que faz
man lsmanual completo do comando; sair com q, buscar com /palavra
ls --helpresumo rápido das opções
type cdo que é: comando interno, alias ou arquivo
which python3caminho do executável
historyhistórico de comandos; !123 repete o comando número 123
Ctrl+Rbusca no histórico
Ctrl+C / Ctrl+Dinterrompe o comando / fecha o shell
ComandoO que faz
pwddiretório atual
ls -latodos os arquivos, inclusive ocultos, com permissões e tamanhos
ls -lhtamanhos em formato legível (K, M, G)
ls -ltordena pela data de modificação
cd /var/logvai 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)

Trabalhando com arquivos e diretórios

ComandoO que faz
touch file.txtcria um arquivo vazio ou atualiza a data de modificação
mkdir -p a/b/ccria diretórios junto com os pais
cp file.txt backup.txtcopia um arquivo
cp -r src/ dst/copia um diretório recursivamente
mv old.txt new.txtrenomeia ou move
rm file.txtremove um arquivo (sem lixeira)
rm -r dir/remove um diretório com o conteúdo; -f não pergunta, use com cuidado
rmdir dirremove um diretório vazio
ln -s /opt/app/current appcria um link simbólico
stat file.txtdetalhes: tamanho, permissões, inode, datas
file image.binidentifica o tipo do arquivo pelo conteúdo

Visualizando conteúdo

ComandoO que faz
cat filemostra o arquivo inteiro
less filevisualização paginada; buscar com /, sair com q
head -n 20 fileprimeiras 20 linhas
tail -n 50 fileúltimas 50 linhas
tail -f /var/log/syslogacompanha o arquivo em tempo real
wc -l filecontagem de linhas
diff a.conf b.confdiferenças entre dois arquivos

Permissões e proprietários

ComandoO que faz
chmod +x script.shpermite a execução
chmod 644 filerw-r--r--: o dono escreve, os demais leem
chmod 755 dirrwxr-xr-x: comum em diretórios e scripts
chmod 600 ~/.ssh/id_ed25519somente o dono: para chaves privadas
sudo chown www-data:www-data filealtera o dono e o grupo
sudo chown -R alice /srv/appaltera o dono recursivamente
idseu UID, GID e grupos
sudo -iabre um shell de root
sudo usermod -aG docker aliceadiciona o usuário a um grupo

Pacotes (apt, no Debian e no Ubuntu)

ComandoO que faz
sudo apt updateatualiza as listas de pacotes dos repositórios
sudo apt upgradeatualiza os pacotes instalados
sudo apt install nginxinstala um pacote
sudo apt remove nginxremove mantendo as configurações; purge remove também as configurações
sudo apt autoremoveremove dependências que não são mais necessárias
apt search htopprocura um pacote
apt show nginxdescrição e versão
dpkg -l | grep nginxverifica se o pacote está instalado
dpkg -L nginxquais 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

ComandoO que faz
echo $PATHonde o shell procura programas
envtodas as variáveis de ambiente
export APP_ENV=proddefine uma variável para a sessão atual e os processos filhos
alias ll='ls -la'atalho para um comando
source ~/.bashrcrecarrega o perfil sem sair da sessão
crontab -e / crontab -ledita / mostra as tarefas do cron

Processos

ComandoO que faz
ps auxtodos os processos com usuário, CPU e memória
ps aux | grep nginxlocaliza um processo
pgrep -a nginxPID e linha de comando pelo nome
top / htopcarga do sistema em tempo real
kill 1234pede ao processo que termine (SIGTERM)
kill -9 1234encerra à força (SIGKILL): último recurso
pkill -f "python app.py"encerra pela correspondência na linha de comando
command &, jobs, fgexecução em segundo plano e controle de tarefas
nohup ./job.sh &o processo continua mesmo após fechar o terminal
free -hmemória e swap
uptimetempo ligado e carga média
strace -p 1234chamadas de sistema do processo

Serviços e logs (systemd)

ComandoO que faz
systemctl status nginxestado do serviço e as últimas linhas do log
sudo systemctl start|stop|restart nginxinicia, para ou reinicia
sudo systemctl reload nginxrelê a configuração sem parar o serviço
sudo systemctl enable --now nginxativa a inicialização automática e inicia agora
systemctl --failedunidades que falharam
journalctl -u nginx -flog do serviço em tempo real
journalctl -u nginx --since "1 hour ago"log da última hora
journalctl -p err -berros desde a última inicialização

Procurando arquivos

ComandoO que faz
find /var/log -name "*.log"busca pelo nome
find . -type f -mtime -1arquivos modificados no último dia
find / -size +500M 2>/dev/nullarquivos grandes, com os erros de acesso ocultos
find . -name "*.tmp" -deleteencontra e remove
du -sh *tamanho de cada item do diretório
df -hespaço livre nos sistemas de arquivos

Busca e processamento de texto: grep, sed, awk e jq

ComandoO que faz
grep "error" app.loglinhas que contêm a palavra
grep -i -n "error" app.logsem 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.loglinhas em que a palavra não aparece
grep -c "500" access.lognúmero de ocorrências
grep -E "warn|error" app.logexpressões regulares estendidas
sed 's/old/new/g' filesubstitui e mostra o resultado
sed -i 's/8080/9090/' app.confsubstitui diretamente no arquivo
sed -n '10,20p' filemostra as linhas 10 a 20
awk '{print $1}' access.logprimeiro campo de cada linha
awk -F: '{print $1}' /etc/passwdnomes de usuários (separador :)
awk '$9 == 500' access.loglinhas em que o nono campo é igual a 500
sort | uniq -c | sort -rnconta repetições e ordena pela frequência
cut -d, -f2 data.csvsegunda coluna de um CSV
jq '.items[].name' data.jsonextrai 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çãoO que faz
cmd > out.txtgrava a saída em um arquivo (sobrescrevendo)
cmd >> out.txtacrescenta ao final do arquivo
cmd 2> err.txtredireciona os erros
cmd > all.log 2>&1saída e erros no mesmo arquivo
cmd1 | cmd2envia a saída de um comando como entrada de outro
cmd | tee out.txtmostra na tela e salva em arquivo
cmd1 && cmd2executa o segundo somente se o primeiro tiver sucesso
cmd1 || cmd2executa o segundo somente se o primeiro falhar

Arquivos compactados

ComandoO que faz
tar -czf backup.tar.gz dir/empacota e comprime com gzip
tar -xzf backup.tar.gzdescompacta
tar -tzf backup.tar.gzlista o conteúdo
zip -r site.zip site/ / unzip site.ziparquivos zip

Rede

ComandoO que faz
ip ainterfaces e endereços IP
ip rtabela de rotas
ping -c 4 8.8.8.8verifica se o host está acessível
ss -tulpnportas abertas e os processos que as utilizam
dig example.com / nslookup example.comconsulta DNS
curl -I https://example.comsomente os cabeçalhos da resposta
curl -s https://api.example.com | jqfaz uma requisição a uma API e formata o JSON
wget URLbaixa um arquivo
traceroute example.comcaminho dos pacotes até o host
ssh user@hostconecta a um servidor
ssh-keygen -t ed25519cria 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 statusregras do firewall

Sistema e discos

ComandoO que faz
uname -aversão e arquitetura do kernel
cat /etc/os-releasedistribuição e versão
hostnamectlnome do host e informações do sistema
lsblkdiscos e partições
sudo mount /dev/sdb1 /mntmonta uma partição
who / wquem está conectado agora
sudo reboot / sudo shutdown -h nowreinicia / 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.

Perguntas frequentes

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.