Os programas se comunicam por meio de fluxos de entrada e saída. A saída padrão, abreviada como stdout, é o fluxo que um programa normalmente usa para seus resultados comuns. Em um terminal, o shell conecta inicialmente esse fluxo à tela do terminal.
Text-Fu · Lição 1
stdout (Saída Padrão)
Aprenda como a saída padrão flui para o terminal e como o Bash a redireciona para arquivos.
Gravação na Saída Padrão
O comando echo grava seus argumentos em stdout:
$ echo Hello World
Hello World
Stdout é o descritor de arquivo 1, um número que se torna útil ao redirecionar mais de um fluxo. Os programas também podem ter entrada padrão, ou stdin, e erro padrão, ou stderr; as próximas lições examinam esses fluxos.
Sem redirecionamento, para onde echo Hello World normalmente envia sua saída comum em um terminal interativo?
Substituição de um Arquivo com >
O Bash interpreta > como um operador de redirecionamento de saída. Ele abre o arquivo de destino e conecta a stdout do comando a ele:
$ echo Hello World > peanuts.txt
O texto deixa de aparecer no terminal porque stdout é enviada para peanuts.txt. Se o arquivo não existir, o shell o criará. Se existir, o shell o truncará antes que o comando grave, e o conteúdo anterior será perdido.
Use cat para inspecionar o resultado:
$ cat peanuts.txt
Hello World
notes.txt já contém texto. O que echo new > notes.txt faz?
Como o shell abre o destino antes de executar o comando, verifique o caminho antes de pressionar Enter. Um nome digitado incorretamente ou um arquivo existente não pretendido pode ser truncado mesmo que o comando falhe depois.
Acréscimo a um Arquivo com >>
Use >> quando a nova stdout deve ser acrescentada depois do conteúdo existente de um arquivo:
$ echo Another line >> peanuts.txt
$ cat peanuts.txt
Hello World
Another line
Assim como >, >> cria um destino ausente. A diferença está na abertura de um arquivo existente: >> acrescenta em vez de truncar.
Qual comando acrescenta Finished ao final de status.log sem apagar o conteúdo existente?
O Redirecionamento Pertence ao Shell
O shell reconhece > e >>, remove esses operadores dos argumentos fornecidos ao programa, abre o arquivo e organiza a conexão do fluxo. O comando simplesmente continua gravando em stdout como de costume.
Isso significa que a mesma sintaxe de redirecionamento funciona com muitos comandos:
$ pwd > current-directory.txt
$ ls -la >> directory-list.txt
Quem normalmente interpreta > em pwd > current-directory.txt?
Para praticar o redirecionamento dos fluxos padrão, experimente este laboratório:
- 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.
Lição concluída
Você concluiu stdout (Saída Padrão)
Agora você sabe redirecionar a saída padrão de um comando sem confundir substituição com acréscimo.
Reconheça stdout como o fluxo dos resultados comuns dos comandos.
Substitua o conteúdo de um arquivo com
>.Preserve o conteúdo existente e acrescente com
>>.Verifique o destino antes que o shell o abra.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita