1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
<chapt id="redir">Redirecionamentos e Pipe
<p>
Esta seo explica o funcionamento dos recursos de direcionamento de entrada
e sada do sistema <prgn>GNU/Linux</prgn>.
<sect id="redir-maior">>
<p>
Redireciona a sada padro de um programa/comando/script para algum dispositivo ou
arquivo ao invs do dispositivo de sada padro (tela).
<![ %DESCRICAOD [ Quando usado com arquivos, este redirecionamento cria ou
substitui o contedo do arquivo. ]]>
<p>
Por exemplo, voc pode usar o comando <prgn>ls</prgn> para listar arquivos
e usar <tt>ls >listagem</tt> para enviar a sada do comando para o
arquivo <file>listagem</file>. Use o comando <prgn>cat</prgn> para
visualizar o contedo do arquivo <file>listagem</file>.
<p>
O mesmo comando pode ser redirecionado para o segundo console
<file>/dev/tty2</file> usando:
<tt>ls >/dev/tty2</tt>, o resultado do comando <prgn>ls</prgn> ser
mostrado no segundo console (pressione <tt>ALT</tt> e <tt>F2</tt> para
mudar para o segundo console e <tt>ALT</tt> e <tt>F1</tt> para retornar
ao primeiro). O mesmo resultado pode ser obtido com o comando
<tt>ls 1>/dev/tty2</tt>, sendo que o nmero <tt>1</tt> indica que ser
capturada a sada padro do comando.
<p>
Para redirecionar somente a sada de erros do comando <prgn>ls</prgn>, use a
sintaxe: <tt>ls 2>/tmp/erros-do-ls</tt>
<sect id="redir-maior2">>>
<p>
Redireciona a sada padro de um programa/comando/script para algum
dispositivo ou adiciona as linhas ao final de arquivo ao invs do dispositivo de
sada padro (tela).
<![ %DESCRICAOD [ A diferena entre este redirecionamento duplo e o
simples, se caso for usado com arquivos, adiciona a sada do comando ao
final do arquivo existente ao invs de substituir seu contedo. ]]>.
<p>
Por exemplo, voc pode acrescentar a sada do comando <prgn>ls</prgn>
ao arquivo <file>listagem</file> do captulo anterior usando
<tt>ls / >>listagem</tt>. Use o comando <prgn>cat</prgn> para
visualizar o contedo do arquivo <file>listagem</file>.
<sect id="redir-menor"><
<p>
Direciona a entrada padro de arquivo/dispositivo para um comando.
Este comando faz o contrrio do anterior, ele envia dados ao comando.
<p>
Voc pode usar o comando <tt>cat <teste.txt</tt> para enviar o contedo
do arquivo <file>teste.txt</file> ao comando <prgn>cat</prgn> que mostrar seu
contedo ( claro que o mesmo resultado pode ser obtido com
<tt>cat teste.txt</tt> mas este exemplo serviu para mostrar a
funcionalidade do <).
<sect id="redir-menor2"><<
<p>
Este redirecionamento serve principalmente para marcar o fim de exibio de um
bloco. Este especialmente usado em conjunto com o comando <prgn>cat</prgn>, mas
tambm tem outras aplicaes. Por exemplo:
<example>
cat << final
este arquivo
ser mostrado
at que a palavra final seja
localizada no inicio da linha
final
</example>
<sect id="redir-pipe">| (pipe)
<p>
Envia a sada de um comando para a entrada do prximo comando
para continuidade do processamento. Os dados enviados so processados
pelo prximo comando que mostrar o resultado do processamento.
<p>
Por exemplo: <tt>ls -la | more</tt>, este comando faz a listagem longa de
arquivos que enviado ao comando <prgn>more</prgn> (que tem a funo
de efetuar uma pausa a cada 25 linhas do arquivo).
<p>
Outro exemplo o comando <tt>locate find | grep "bin/"</tt>, neste comando
todos os caminhos/arquivos que contm <em>find</em> na listagem sero
mostrados (inclusive man pages, bibliotecas, etc.), ento enviamos
a sada deste comando para <tt>grep "bin/"</tt> para mostrar somente os
diretrios que contm binrios. Mesmo assim a listagem ocupe mais de uma
tela, podemos acrescentar o <prgn>more</prgn>:
<tt>locate find | grep "bin/" | more</tt>.
<p>
Podem ser usados mais de um comando de redirecionamento (<, >, |) em
um mesmo comando.
<sect>Diferena entre o "|" e o ">"
<p>
A principal diferena entre o "|" e o ">", que o Pipe envolve
processamento entre comandos, ou seja, a sada de um comando enviado
a entrada do prximo e o ">" redireciona a sada de um comando para
um arquivo/dispositivo.
<p>
Voc pode notar pelo exemplo acima (<tt>ls -la | more</tt>) que
ambos <tt>ls</tt> e <tt>more</tt> so comandos porque esto separados
por um "|". Se um deles no existir ou estiver digitado incorretamente,
ser mostrada uma mensagem de erro.
<p>
Um resultado diferente seria obtido usando um <tt>">"</tt> no lugar do
<tt>"|"</tt>; A sada do comando <tt>ls -la > more</tt> seria gravada em um
arquivo chamado <file>more</file>.
<sect id="redir-tee">tee
<p>
Envia ao mesmo tempo o resultado do programa para a sada padro (tela)
e para um arquivo. Este comando deve ser usado com o pipe "|".
<p>
<tt><em>comando</em> |tee [<em>arquivo</em>]</tt>
<![ %EXEMPLO [
<p>
Exemplo: <tt>ls -la | tee listagem.txt</tt>, a sada do comando
ser mostrada normalmente na tela e ao mesmo tempo gravada no arquivo
<file>listagem.txt</file>. ]]>
|