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
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
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.
View Comments (6)
Podria me mandar o Wget para windows e algumas digas??
Se possivél e interface em delfhi também.
Veja só, tenho a neessidade de duas vezes por dia buscar um arquivo txt em um determinado servidor, sem burocracia, de um maneira automatica, me disseram que o wgetwin devidamente configurado como script funcionaria.
Vc pode me ajudar??
Heh. The power of " | " :-)
Estava passeando na net quando achei seu blog. Bem legal.
[ ] 's
Olá Elcio,
Tem uma versão do Wget para windows que faz o mesmo esquema que a do Linux.
Tem uma opção -c para continuar. Com isso o arquivo de vídeo é gerado e assim posso assistir o vídeo enquanto faço download.
Se quiser, posso te mandar o Wget para windows (juntamente com uma interface em Delphi que fiz).
[]s
Gustavo
Ops! Falha minha!
Eu podia jurar que ele também tinha essa opção! Erro feio
Daniel, a versão do cat que eu tenho aqui não tem uma opção -f.
Não sou muito versado em Linux (ou Unix), mas se o propósito é colocar um comprimento maior que o próprio arquivo, não bastaria usar
cat -f
?