Linux descompacte: não solicite ao usuário

1

Eu preciso descompactar um arquivo no meu script nodejs:

var exec = require('child_process').exec;

var execOptions = { timeout: 15000 };

exec('bash unzip.sh', execOptions, function (error) {
   ...
});

No unzip.sh eu faço:

set -e
unzip my_file.zip -d /var/tmp/my_dir

O diretório de destino tem alguns limites de cota para seu tamanho. E às vezes eu tenho:

write error (disk full?).  Continue? (y/n)

E depois de 15 segundos, o exec () falha com o tempo limite (isso é OK).

Como posso dizer que descompactar para não solicitar o usuário e falhar imediatamente, para evitar tempos limite de 15 segundos?

Eu tentei unzip my_file.zip -d /var/tmp/my_dir 2> /dev/null , mas isso não funciona.

    
por Khachatur 05.12.2014 / 06:09

2 respostas

2

Eu não encontrei a opção que informa o descompactar para alternar para o modo não interativo, mas eu encontrei uma solução alternativa. Eu sei que isso parece feio, mas tente:

/bin/echo "n" | /usr/bin/unzip -o $zipfile -d $dir

Ele enviará "n" como resposta à pergunta do unzip.

    
por 16.11.2017 / 19:28
0

Eu recomendaria consultar as opções que podem ser definidas com o comando unzip. Portanto, digite man unzip ou unzip --help .

Principalmente, a opção -f força a operação sem avisar você. A opção -q reduz a saída. Uma mistura dessas duas e talvez algumas outras opções que você encontrará na referência mencionada acima pode ajudá-lo a acertar as opções.

    
por 05.12.2014 / 12:42