Published on

Redirecionadores, Conectores e Operadores

Authors
  • avatar
    Name
    Rodrigo Peixoto
    Twitter

🐧 Redirecionadores, Conectores e Operadores no Bash

📂 1. Redirecionadores

Permitem direcionar entrada e saída de comandos para arquivos, dispositivos ou outros comandos.

🔴 Redirecionamento de Saída (> e >>)

ComandoDescriçãoExemplo
>Redireciona e sobrescreve arquivols > lista.txt
>>Redireciona e acrescenta no final do arquivoecho "Nova linha" >> lista.txt

💡 Dica: Use > com cuidado! Ele apaga o conteúdo anterior do arquivo.


🟡 Redirecionamento de Entrada (<)

ComandoDescriçãoExemplo
<Lê a entrada de um arquivo, ao invés do tecladowc -l < lista.txt

🟣 Redirecionamento de Erros (2> e 2>>)

ComandoDescriçãoExemplo
2>Redireciona erros para um arquivo (sobrescreve)ls pasta_inexistente 2> erros.log
2>>Redireciona erros (acrescenta)comando 2>> erros.log

🔵 Redirecionar Saída e Erro (&> e >&)

ComandoDescriçãoExemplo
&>Redireciona stdout e stderr juntoscomando &> tudo.log
> arquivo 2>&1Mesmo efeito, mais compatível com shells antigoscomando > tudo.log 2>&1

🔗 2. Conectores Lógicos e Condicionais

Permitem combinar comandos com base em seus resultados (exit status).

&& (E lógico)

Executa o segundo comando somente se o primeiro for bem-sucedido (exit code 0).

mkdir nova_pasta && cd nova_pasta

💡 Dica: Ideal para encadear comandos que dependem um do outro.


|| (OU lógico)

Executa o segundo comando somente se o primeiro falhar.

cd pasta || echo "Pasta não encontrada"

💡 Útil para fornecer mensagens de erro amigáveis ou comandos alternativos.


🔗 ; (Separador)

Executa os comandos um após o outro, independentemente do resultado.

echo "Início"; ls; echo "Fim"

🔀 & (Execução em segundo plano)

Executa um comando em segundo plano.

longa_tarefa.sh &

💡 Dica: Use jobs, fg, e bg para gerenciar tarefas em segundo plano.


🧱 3. Concatenação de Comandos com Pipes (|)

Permite encadear comandos onde a saída de um é usada como entrada do próximo.

ps aux | grep nginx | awk '{print $2}'
  • ps aux → lista processos
  • grep nginx → filtra pelo nome
  • awk '{print $2}' → extrai o PID

💡 Dica: Ferramenta poderosa para construir comandos compostos e pipelines de manipulação de dados.


⚙️ 4. Operadores de Arquivo e Expressões com test ou [ ]

Exemplos:

[ -f arquivo.txt ] && echo "É um arquivo"
[ -d /etc ] || echo "Diretório não encontrado"
OperadorDescrição
-fArquivo normal existe
-dDiretório existe
-eArquivo ou diretório existe
-zString vazia
-nString não vazia
==, !=Comparação de strings

🧪 5. Comandos Combinados com Substituição de Comando ($( ) e ` `)

Permite usar o resultado de um comando como argumento de outro.

echo "Hoje é: $(date)"

✅ Forma recomendada: $(comando)
⚠️ Forma antiga: `comando` (evite para comandos complexos)


🛠️ Exemplos Práticos Reais

✅ Redirecionando logs:

./script.sh > out.log 2> err.log

✅ Automatizando com lógica condicional:

ping -c1 google.com && echo "Conectado!" || echo "Sem internet."

✅ Processamento em lote:

cat arquivos.txt | while read linha; do
  echo "Processando $linha"
done

📌 Dicas Finais

  • Use set -e no início de scripts para parar execução em erro.
  • Use exec >log.txt 2>&1 para logar tudo desde o começo de um script.
  • Prefira $( ) a ` ` para substituição de comandos.
  • Combine grep, awk, cut, sed com pipes para manipulação avançada.