惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
IT之家
IT之家
Vercel News
Vercel News
C
Check Point Blog
Google DeepMind News
Google DeepMind News
月光博客
月光博客
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Pipes e Redirecionamento no Linux: o que eu aprendi estud...
Ewerson Benigno · 2026-06-27 · via DEV Community

Eu estava no Termux, um emulador de terminal para Android, rodando uns comandos básicos de estudo, quando digitei algo simples:

ls > arquivos.txt

Não aconteceu nada. O terminal ficou em silêncio.
Meu primeiro instinto foi achar que o comando tinha falhado. Mas quando rodei cat arquivos.txt, o conteúdo estava lá, o ls tinha funcionado, só que a saída não foi para a tela. Foi para dentro do arquivo.
Esse momento me fez querer entender o que estava acontecendo por baixo. Este artigo é o resultado disso.

Os três canais de todo comando Linux

Antes de falar em pipes e redirecionamento, preciso falar sobre como o Linux enxerga a comunicação de um programa.
Todo processo no Linux tem três canais abertos por padrão:

Canal Número O que é
stdin 0 Entrada de dados
stdout 1 Saída normal
stderr 2 Saída de erros

Por padrão, stdout e stderr aparecem na tela, e stdin vem do teclado. Mas você pode mudar isso e é aí que a mágica acontece.

Redirecionamento de saída com >

O operador > redireciona o stdout de um comando para um arquivo.

ls > arquivos.txt

O que acontece aqui:
• ls gera a listagem de arquivos (stdout)
• > intercepta essa saída antes de chegar na tela
• O conteúdo vai para dentro de arquivos.txt
• Se o arquivo não existir, ele é criado
• Se já existir, o conteúdo anterior é sobrescrito
Para adicionar ao invés de sobrescrever, use >>:

ls >> arquivos.txt

Redirecionando erros com 2>

O canal de erros é separado do canal de saída. Para capturá-lo, você usa 2>.

cat arquivo_que_nao_existe.txt 2> erro.txt

Tente rodar os dois e compare:

# Isso imprime o erro na tela
cat arquivo_que_nao_existe.txt

# Isso salva o erro em um arquivo (nada aparece na tela)
cat arquivo_que_nao_existe.txt 2> erro.txt

# Confirme que o erro foi salvo
cat erro.txt

Isso é útil quando você roda um script longo e quer guardar os erros para analisar depois, sem poluir a saída normal.

Juntando stdout e stderr no mesmo arquivo

Às vezes você quer capturar tudo, saída e erro, no mesmo lugar:

comando > tudo.txt 2>&1

O 2>&1 significa: "redirecione o canal 2 (stderr) para onde o canal 1 (stdout) estiver indo."
A ordem importa. Isso aqui não funciona como esperado:

# Ordem errada — resultado não é o que você espera
comando 2>&1 > tudo.txt

Nessa ordem, o 2>&1 é avaliado primeiro — quando ainda não há redirecionamento de stdout, então o stderr é vinculado à tela. Depois o > tudo.txt redireciona só o stdout para o arquivo. Resultado: o arquivo recebe apenas o stdout, e o stderr continua aparecendo na tela. O inverso do que você queria.

Pipes com |: compondo

O pipe | conecta a saída de um comando à entrada do próximo. É como criar uma linha de montagem.

ls -l | grep ".txt"

O que acontece:

  1. ls -l lista todos os arquivos com detalhes
  2. | passa essa saída como entrada para o grep
  3. grep ".txt" filtra e mostra só as linhas que contêm .txt Outro exemplo prático, procurar um processo em execução:
ps aux | grep java

Você pode encadear quantos pipes quiser:

cat arquivo.txt | sort | uniq | wc -l

Isso lê um arquivo, ordena as linhas, remove duplicatas e conta quantas restaram, tudo em um único comando.

tee: saída na tela e no arquivo ao mesmo tempo

O > escolhe entre tela ou arquivo. O tee faz os dois:

ls | tee listagem.txt

A saída aparece na tela e é salva no arquivo simultaneamente. Útil quando você quer acompanhar o que está acontecendo em tempo real e ainda guardar o resultado.

Resumo visual

comando             → stdout → tela (padrão)
comando > arquivo   → stdout → arquivo
comando >> arquivo  → stdout → arquivo (acumula)
comando 2> erros    → stderr → arquivo
comando 2>&1        → stderr → mesmo lugar que stdout
cmd1 | cmd2         → stdout do cmd1 → stdin do cmd2
cmd | tee arquivo   → stdout → tela e arquivo

Por que isso importa

Esses conceitos parecem simples, mas são a base de como scripts shell funcionam, como logs são gerados, como pipelines de dados são construídos, e como você compõe ferramentas pequenas para resolver problemas grandes.
No Linux, cada ferramenta faz uma coisa bem feita. Pipes e redirecionamento são o que permite combiná-las.
Comecei a entender isso rodando um ls no Termux às 19h num sábado. Às vezes o aprendizado começa em lugares assim.