Pipelines ou Canalizadores, parte 4: Loopings



Para mostrar o poder, e perigo, dos pipelines, vamos criar um loop.
O conceito de loop é que um script recebe um comando, o executa e chama o próprio script.
Caso conectemos de forma correta a entrada e a saída, o loop ocorrerá indefinidamente.

Exemplo 1 

crie o arquivo 'looping' com o seguinte conteúdo:
read COMANDO
$COMANDO
echo $COMANDO | ./looping

Dê permissão de execução: chmod +x looping
E o execute, com o comando 'ls', por exemplo:
echo ls | ./looping

A variável COMANDO se torna 'ls', se executa (mostrando o conteúdo do diretório), depois se invoca novamente com o argumento 'ls', e tudo se repete.
Mate o processo: ctrol+c

Em outros termos, nós conectamos a saída do arquivo a sua entrada e apenas demos o pontapé inicial com o 'ls'.


Exemplo 2

Usaremos aqui o comando 'tail', que mostra as últimas linhas de um arquivo.
Com a flag '-f', ele exibe o que foi anexado, a medida que o arquivo cresce. Note este 'a medida o arquivo cresce'.

Crie um arquivo de texto, com qualquer coisa escrita:
Rush.txt
"Rush!!!"

Agora, o nosso comando, que é um pipeline usando o comando tail:
tail -f Rush.txt >> Rush.txt

Sua saída é direcionada de forma a ser anexada nele mesmo.
Porém, como essa anexação é dinâmica, está acontecendo do arquivo para o próprio arquivo, a anexação não para nunca (reflita, não se entende logo
não, tem que quebrar a cabeça mesmo, só assim tem graça :).
Portanto, esse arquivo cresce indefinidamente e só pára quando seu HD lotar.

Ctrol+C para parar o processo.



Não há muito o que se falar sobre pipelines. Eles são assim, simples, poderosos e perigosos.
Estão acontecendo agora, entre o teclado, mouse, memória, impressora...eles dividem, pra conquistar.

Pra usar mais de seus sistema, você precisa criar pipelines que envolvam processos de seu SO.
Pegando informações, passando, checando erros, testando condições pra saber para onde você deve canalizar outra informação...mas processos são assunto para outro artigo.

Um comentário:

Godofinho disse...

Gostei do exemplo do looping, é um exemplo de vírus ou falha de segurança.
bem bolado

Veja também: