- Published on
Redirecionadores, Conectores e Operadores
- Authors
- Name
- Rodrigo Peixoto
🐧 Redirecionadores, Conectores e Operadores no Bash
📂 1. Redirecionadores
Permitem direcionar entrada e saída de comandos para arquivos, dispositivos ou outros comandos.
>
e >>
)
🔴 Redirecionamento de Saída (Comando | Descrição | Exemplo |
---|---|---|
> | Redireciona e sobrescreve arquivo | ls > lista.txt |
>> | Redireciona e acrescenta no final do arquivo | echo "Nova linha" >> lista.txt |
💡 Dica: Use
>
com cuidado! Ele apaga o conteúdo anterior do arquivo.
<
)
🟡 Redirecionamento de Entrada (Comando | Descrição | Exemplo |
---|---|---|
< | Lê a entrada de um arquivo, ao invés do teclado | wc -l < lista.txt |
2>
e 2>>
)
🟣 Redirecionamento de Erros (Comando | Descrição | Exemplo |
---|---|---|
2> | Redireciona erros para um arquivo (sobrescreve) | ls pasta_inexistente 2> erros.log |
2>> | Redireciona erros (acrescenta) | comando 2>> erros.log |
&>
e >&
)
🔵 Redirecionar Saída e Erro (Comando | Descrição | Exemplo |
---|---|---|
&> | Redireciona stdout e stderr juntos | comando &> tudo.log |
> arquivo 2>&1 | Mesmo efeito, mais compatível com shells antigos | comando > 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
, ebg
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 processosgrep nginx
→ filtra pelo nomeawk '{print $2}'
→ extrai o PID
💡 Dica: Ferramenta poderosa para construir comandos compostos e pipelines de manipulação de dados.
test
ou [ ]
⚙️ 4. Operadores de Arquivo e Expressões com Exemplos:
[ -f arquivo.txt ] && echo "É um arquivo"
[ -d /etc ] || echo "Diretório não encontrado"
Operador | Descrição |
---|---|
-f | Arquivo normal existe |
-d | Diretório existe |
-e | Arquivo ou diretório existe |
-z | String vazia |
-n | String não vazia |
== , != | Comparação de strings |
$( )
e ` `
)
🧪 5. Comandos Combinados com Substituição de Comando (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.