A entrada padrão, abreviada como stdin, é o fluxo que um programa normalmente lê para receber dados. Em um terminal interativo, o shell geralmente conecta stdin à entrada do terminal, permitindo que um programa leia o que você digita.
Text-Fu · Lição 2
stdin (Entrada Padrão)
Aprenda como os programas leem a entrada padrão e como o Bash conecta esse fluxo a um arquivo.
Entrada Padrão e o Descritor de Arquivo 0
Por convenção, os três fluxos padrão usam estes números de descritores de arquivo:
0: entrada padrão (stdin)1: saída padrão (stdout)2: erro padrão (stderr)
Um programa pode escolher se e como usará esses fluxos. Um comando projetado para ler stdin costuma aguardar a entrada do terminal quando não recebe um operando de arquivo nem outra fonte de entrada.
Qual descritor de arquivo representa convencionalmente a entrada padrão?
Redirecionamento de um Arquivo para stdin
O operador < instrui o Bash a abrir um arquivo para leitura e conectá-lo à stdin do comando:
$ cat < peanuts.txt
Hello World
O shell trata < peanuts.txt; cat simplesmente lê o descritor de arquivo 0. O caminho não é fornecido a cat como um operando comum de arquivo.
Se o arquivo de entrada não existir ou não puder ser aberto, o shell informará o erro de redirecionamento e não iniciará o comando com essa entrada.
Qual comando faz sort ler sua entrada padrão de names.txt?
Operando de Arquivo versus Redirecionamento de Entrada
Alguns comandos aceitam tanto um nome de arquivo como operando quanto stdin, mas os resultados podem ser ligeiramente diferentes. Por exemplo:
$ wc -l peanuts.txt
1 peanuts.txt
$ wc -l < peanuts.txt
1
As duas formas contam as linhas nos mesmos dados. Na primeira, wc conhece o nome do arquivo porque o recebeu como argumento. Na segunda, ele recebe apenas um fluxo em stdin e, portanto, não possui um nome de arquivo para mostrar.
Por que wc -l < peanuts.txt normalmente omite peanuts.txt da saída?
Combinação dos Redirecionamentos de Entrada e Saída
Uma única linha de comando pode redirecionar mais de um fluxo:
$ cat < peanuts.txt > banana.txt
O shell realiza duas conexões independentes:
< peanuts.txtabrepeanuts.txtcomo stdin decat.> banana.txtcria ou truncabanana.txte o conecta à stdout decat.
cat lê bytes de stdin e os grava em stdout; assim, banana.txt recebe o conteúdo da origem. Para uma cópia comum de arquivo, cp peanuts.txt banana.txt comunica a intenção mais diretamente; este exemplo trata das conexões entre fluxos.
Em cat < input.txt > output.txt, qual arquivo fornece stdin e qual recebe stdout?
Para praticar o redirecionamento de entrada e saída, experimente estes laboratórios:
- Redirecionamento de Entrada e Saída no Linux — Pratique o controle do fluxo de dados dos comandos manipulando saída padrão (stdout), erro padrão (stderr) e entrada padrão (stdin) com operadores como
>,>>,2>e o comandotee. - Redirecionamento de Fluxos de Dados — Aprenda a manipular os fluxos de entrada, saída e erro, combinar saídas e usar
/dev/nullem operações avançadas com arquivos.
Lição concluída
Você concluiu stdin (Entrada Padrão)
Agora você sabe conectar a entrada padrão de um comando a um arquivo por meio do shell.
Reconheça stdin como o descritor de arquivo 0.
Redirecione um arquivo legível com
<.Diferencie um operando de nome de arquivo de uma entrada redirecionada.
Combine conscientemente os redirecionamentos de stdin e stdout.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita