Habilidade de Terminal e CLI
Referência para trabalhar em um terminal Linux — cobrindo desde o básico de bash até orquestração de contêineres e execução de agentes de IA.
Como usar esta habilidade
Este arquivo cobre os padrões mais comuns. Para referências detalhadas de comandos, carregue o arquivo relevante de references/ sob demanda:
| Tópico | Arquivo de referência |
|---|---|
| Bash básico: pipes, scripts, sistema de arquivos, instalação, variáveis de ambiente | references/bash.md |
| Contêineres: Podman, Kubernetes (kubectl), Helm | references/containers.md |
| Requisições HTTP: curl | references/curl.md |
| Agentes de IA: aider-chat, claude CLI | references/agents.md |
1. Executar um comando bash
comando [opções] [argumentos]
# Executar sequencialmente — parar no primeiro erro
cmd1 && cmd2 && cmd3
# Executar independentemente de erro
cmd1; cmd2; cmd3
# Capturar saída em uma variável
SAIDA=$(comando)
# Redirecionar stdout / stderr / ambos
comando > saida.txt
comando 2> erro.txt
comando &> tudo.txt
# Descartar toda a saída
comando > /dev/null 2>&1
2. Verificar se uma ferramenta existe
type -a nome_ferramenta # Todos os locais onde a ferramenta é encontrada
apropos palavra_chave # Encontrar comandos correspondentes a uma palavra-chave
which nome_ferramenta # Primeiro binário no PATH
whereis nome_ferramenta # Localizações do binário, fonte e página man
3. Combinar com &&
# Prosseguir apenas se o comando anterior tiver sucesso
sudo apt update && sudo apt upgrade -y
# Encadear várias etapas com segurança
mkdir -p build && cd build && cmake ..
4. Pipe com |
# Passar stdout de um comando como stdin para o próximo
cmd1 | cmd2 | cmd3
# Padrões comuns
ls -la | grep ".conf"
ps aux | grep nginx
journalctl -u meuserviço | grep ERROR | tail -20
cat arquivo.txt | wc -l
5. Ler conteúdo com cat
cat arquivo.txt # Arquivo completo para stdout
cat arquivo1.txt arquivo2.txt # Concatenar vários arquivos
head -n 20 arquivo.txt # Primeiras 20 linhas
tail -n 20 arquivo.txt # Últimas 20 linhas
tail -f /var/log/app.log # Seguir saída de log ao vivo
less arquivo.txt # Visualização paginada (q para sair)
grep "padrão" arquivo.txt # Linhas correspondentes ao padrão
grep -r "padrão" ./dir/ # Busca recursiva em diretório
grep -n "padrão" arquivo.txt # Com números de linha
grep -i "padrão" arquivo.txt # Ignorar maiúsculas/minúsculas
6. Ordenar resultados
sort arquivo.txt # Alfabético (crescente)
sort -r arquivo.txt # Ordem reversa
sort -n arquivo.txt # Ordenação numérica
sort -k2 arquivo.txt # Ordenar pela coluna 2
sort -t: -k3 -n /etc/passwd # Delimitador personalizado (:), coluna 3, numérico
ls -la | sort -k5 -n # Ordenar saída ls pelo tamanho do arquivo (col 5)
7. Resultados únicos
# uniq remove apenas duplicatas *consecutivas* — sempre classifique primeiro
sort arquivo.txt | uniq # Deduplicar
sort arquivo.txt | uniq -c # Contar ocorrências
sort arquivo.txt | uniq -d # Mostrar apenas duplicatas
sort arquivo.txt | uniq -u # Mostrar apenas linhas que aparecem uma vez
# Pipeline típico: contar tipos de erro em um log
cat app.log | grep ERROR | sort | uniq -c | sort -rn
8. Escrever e executar scripts com heredoc
# Criar um arquivo de script inline
cat << 'EOF' > meuscript.sh
#!/bin/bash
set -euo pipefail # Sair em caso de erro, variável não definida ou falha de pipe
echo "Hoje: $(date +%Y-%m-%d)"
for i in 1 2 3; do
echo "Passo $i"
done
EOF
chmod +x meuscript.sh
./meuscript.sh
# Ou executar diretamente sem criar um arquivo
bash << 'EOF'
echo "Execução inline"
ls -la /tmp
EOF
Melhores práticas para scripts:
- Sempre comece com
#!/bin/bash - Use
set -euo pipefailpara valores padrão seguros - Sempre cite variáveis:
"$VAR"e não$VAR - Use
$(...)em vez de crases
9. Sistema de arquivos — referência rápida
# Navegar e inspecionar
pwd && ls -lah # Onde estou + o que há aqui
tree -L 2 # Árvore de diretórios (2 níveis de profundidade)
find /caminho -name "*.log" # Encontrar por nome
du -sh /caminho # Tamanho de um diretório
df -h # Uso de disco de todas as montagens
# Criar / copiar / mover / deletar
mkdir -p /caminho/para/dir # Criar com pais
cp -r src/ dst/ # Copiar diretório
mv src dst # Mover ou renomear
rm -rf dir/ # Deletar recursivamente (irreversível)
# Permissões e propriedade
chmod +x arquivo # Tornar executável
chmod 644 arquivo # rw-r--r--
chown usuario:grupo arquivo # Alterar proprietário
# Links
ln -s /destino /link # Link simbólico
readlink -f /link # Resolver link simbólico para caminho real
# Montagens
mount # Listar todas as montagens ativas
lsblk # Árvore de dispositivos de bloco
findmnt # Árvore de pontos de montagem
→ Referência completa do sistema de arquivos: references/bash.md
10. Instalar e atualizar — referência rápida
# APT
sudo apt update && sudo apt upgrade -y
sudo apt install -y nome-do-pacote
# pip (Python)
pip install pacote --break-system-packages
# npm (Node.js)
npm install -g nome-do-pacote
→ Referência completa de instalação (snap, a partir da fonte, opções pip): references/bash.md
11. Obter ajuda sobre um comando
comando --help # Ajuda inline (mais rápido)
man comando # Página de manual completa
apropos palavra_chave # Pesquisar resumos de páginas man
whatis comando # Descrição em uma linha
info comando # Páginas de informação GNU (para ferramentas GNU)
help cd # Ajuda para builtins do shell
12. Variáveis de ambiente — referência rápida
export VAR="valor" # Definir para o shell atual e subprocessos
echo $VAR # Ler uma variável
unset VAR # Remover uma variável
env # Listar todas as variáveis de ambiente
VAR=valor comando # Definir apenas para um único comando
→ Persistindo variáveis, carregando arquivos .env: references/bash.md
Referências detalhadas
Carregue estes arquivos quando precisar de cobertura completa de comandos:
references/bash.md— sistema de arquivos completo, instalação/atualização, variáveis de ambiente, padrões de scriptreferences/containers.md— Podman, kubectl, Helmreferences/curl.md— curl para requisições HTTPreferences/agents.md— aider-chat e claude CLI