Há um vídeo enoooorme na internet em que você tem muito interesse. Por exemplo, a palestra de tableless que eu publiquei esse dias. Você quer baixar e guardar o vídeo, mas ao mesmo tempo quer assistí-lo logo. Se você iniciar o download e tentar assistir via streamming ao mesmo tempo, vai consumir o dobro da banda necessária, o streamming vai ficar pausando a cada dois segundos e o download vai levar muito tempo. O que fazer? Não sei se há no Windows algum player que faça download e toque ao mesmo tempo. No linux eu resolvo assim, numa janela de terminal:
wget -c http://files.elcio.com.br/tableless.wmv
Em outra:
tail -c 10000000000 -f tableless.wmv |mplayer -
Explicando, o primeiro comando, o wget, faz o download do vídeo. O parâmetro -c faz com que, se o arquivo existir, o download seja continuado de onde parou. Isso é útil porque se o download for interrompido, depois você pode continuá-lo com o mesmo comando.
O segundo é uma concatenação de comandos Unix. A parte “tail -c 10000000000 -f tableless.wmv” é um comando e “mplayer -” é outro. O primeiro usa o tail, que imprime o final de um arquivo. Experimente, por exemplo:
tail /var/log/syslog
Você vai ver as últimas linhas do log do sistema. O parâmetro -c recebe um número, o número de bytes a imprimir a partir do fim do arquivo. Você pode colocar qualquer número que seja maior que o arquivo inteiro. O parâmetro -f faz o tail ficar esperando por conteúdo novo no fim do arquivo. Experimente rodar num terminal, por exemplo:
tail -f /var/log/syslog
Você vai ver as últimas linhas do syslog e o tail vai ficar esperando por conteúdo novo. Abra programas, execute ações no sistema, pare e inicie daemons e você vai ver as novas linhas aparecendo ali. A mesma coisa acontece como vídeo. O tail vai despejar na tela todo o conteúdo do arquivo, e vai ficar esperando. A medida que o wget baixa mais dados, o tail vai imprimindo o que chega.
O caracter |, chamado pipe, direciona a saída de um comando para outro. Assim, o tail, ao invés de imprimir os dados do vídeo na tela, os envia para o mplayer. Ao invés de indicar ao mplayer um arquivo ou url que ele deva tocar, colocamos como parâmetro um hífen (-) que diz que ele deve ler da entrada padrão. Assim, ele lê os dados que o tail envia para ele.
Percebe o que fizemos? Colocamos para trabalhar juntos três programas diferentes, escritos por pessoas diferentes, e tudo funcionou. As coisas geralmente são assim no Linux, porque os programas Unix são feitos para que você possa usá-los juntos. Se você quiser saber mais sobre isso, recomendo um livro, disponível gratuitamente online: The Art of Unix Programming, do Eric Raymond.
Deixe um comentário