Se unzip
tivesse aderido ao estilo de arquitetura de canos e filtros do Unix, seria de se esperar poder fazer isso canalizando a saída do wget para a entrada do unzip:
wget -O - http://www.test.com/test.zip | (cd destination-folder && unzip -)
Quando o traço após -O
significa saída padrão, o traço após unzip
significa entrada padrão e o lado direito com parênteses inicia um subshell no diretório correto.
No entanto, o formato ZIP armazena seu índice de conteúdo no final do arquivo, e unzip
precisa ler isso antes de começar a descompactar. Portanto, ao contrário de gzip
et al, ele não pode descompactar um fluxo em uma passagem.
Como solução alternativa, você precisa de um arquivo temporário:
wget -O /tmp/z.$$ http://www.test.com/test.zip &&
(cd destination-folder && unzip /tmp/z.$$)
Onde o $$
é usado apenas para gerar um número que não colide.
Em vez de executar o subshell, você pode usar a opção -d
de descompactar. E para maior higiene, limpe o seu arquivo temporário:
wget -O /tmp/z.$$ http://www.test.com/test.zip &&
unzip -d destination-folder /tmp/z.$$ &&
rm /tmp/z.$$