Comandos do Pipe bash

0

Estou tentando baixar um pacote tar.gz com wget , descompactá-lo e renomear o diretório descompactado em um comando (canalizado).

Minhas tentativas foram:

wget -O- $URL | tar fvxz - -C $DEST

wget -O- $URL | tar fvxz - | mv - $DEST

O que estou deixando de fazer?

    
por jviotti 11.06.2013 / 00:54

1 resposta

0

Se você tem BSD ou GNU tar, você pode fazer isso:

mkdir -p "$DEST" && wget -O- "$URL" | tar --strip-components 1 -xvzf- -C "$DEST"

Como o tar GNU tem --strip-components , mas essa não é uma solução padrão. De qualquer forma, você não pode realmente fazer isso com um único pipeline, já que você tem que ter o diretório já, e há maneiras perfeitamente boas de fazer isso se você estiver disposto a desistir de todo o pipeline único de qualquer maneira.

mkdir -p "$DEST" &&
cd "$DEST" &&
wget -O- "$URL" | tar -xvzf-
cd * && # Assumes the result only has one directory
mv * .. # Assumes no dotfiles

Você pode resolver problemas de dotfiles e tars de vários diretórios ajustando esta resposta, se necessário.

    
por 11.06.2013 / 01:11

Tags