sábado, 31 de julho de 2010

Operadores de Re-Direcionamento

Os operadores de redirecionamento são totalmente essenciais nos sistemas baseados em Unix, inclusive o Linux. Eles permitem bastantes recursos, como o redirecionamento da saída de um programa para um arquivo, enviar a saída de um programa para entrada de outro e muito mais!

Os operadores são: >, >>, <, 2> e |

Os operadores > e >> são usados para redirecionar a saída de um programa para um arquivo. A sintaxe é muito simples que dá pena:

• comando > arquivo

• comando >> arquivo

O operador >

O operador > é usado para sobrescrever um arquivo com a saída do comando. Por exemplo:

$ ls > arqs

A saída não será nenhuma se tudo ocorreu bem. Agora ao dar "ls" normalmente você verá um arquivo a mais que é o 'arqs'. Tente dar um cat:

$ cat arqs
(saída do cmd 'ls')

Você pode usar o comando echo para escrever mensagens personalizadas. Veja como:

$ echo "É só um teste" > arqs
$ cat arqs
É só um teste

Algumas características:
• O arquivo será sobrescrito!
• Caso não se tenha permissão para escrever no arquivo, vai dar erro.
• Caso o arquivo não exista, ele será criado.

O operador >>

Seria a mesma coisa que o >, mas com uma diferença: ele não sobrescreve o arquivo. Neste caso você poderá escrever mais. Dê uma olhada:

$ rm teste
-> É bom, caso o arquivo exista poderá nos atrapalhar um pouco

$ echo "Os arquivos são:" >> teste
$ ls ~ >> teste
$ echo "Fim dos arquivos:" >> teste
$ cat teste
Os arquivos são:
(os arquivos do diretório $HOME)
Fim dos arquivos:

O operador <
A função deste operador é o contrário do >: ao invés de mandar a saída do comando para o arquivo, ele manda o arquivo como entrada do comando. Não entendeu? Dê uma olhadinha:

$ less
Vai
digitando
qualquer
coisa
aqui
^D

Então aparecerá o "less" listando o texto página a página. O ^D no final, quer dizer, "Ctrl+D", significa "Fim de arquivo".

Agora tente fazer um arquivo com o nome de "teste", digita qualquer coisa e tenta então:

$ less <>
(
saída do comando less)

Seria o mesmo que você digitar tudo que tem no arquivo como entrada, mas como o pessoal do Unix tem bom senso, eles automatizaram isso. O ^D também é automatizado.

Este operador pode facilmente ser substituído pelo pipe (|), junto com o comando 'cat'.


O pipe - |

Este é, com certeza, o mais importante de todos os operadores de redirecionamento. O pipe é bem complexo ao se comparar com os outros operadores, mas vale è pena conhecer.

A sintaxe:

$ comando1 | comando2

O que o pipe faz é redirecionar a saída de comando1 para entrada de comando2.

Veja um exemplo:

Imagine que o comando "xyz" mostre a frase "Teste de pipe" e o comando "separa" transforma cada espaço em um '-'.


Veja:

$ xyz Teste de pipe $ separa isto é um teste! ^D
<-- Isto foi digitado pelo teclado!!!!!!!! isto-é-um-teste! $
Agora se quisermos fazer aparecer a saída de xyz ("Teste de pipe") ser separado por '-'s?
Basta
:
$ xyz | separa
Teste-de-pipe

Esta é uma noção. Veja alguns comandos que trabalham muito bem com o pipe:

* echo
* cat
* less
* more
* sed
* awk
* etc


Nenhum comentário:

Postar um comentário