Comment désactiver l’avertissement ‘zip’ dans bash?

Je veux compresser un fichier en utilisant shell bash, donc j’ai utilisé:

echo -n 'Insert the file path:' read path echo 'Hello World' > ${path} zip -u ${path}.zip ${path} 

Lorsque je lance ce script, il me donne un avertissement:

 zip warning: test.zip not found or empty adding: test (deflated 66%) 

Cela fonctionne très bien mais comment puis-je désactiver cet avertissement? Est-ce que j’utilise le zip correctement?

Je pense que tu veux le drapeau silencieux.

 zip -uq ${path}.zip ${path} 

A partir des pages de manuel:

 -q --quiet Quiet mode; eliminate informational messages and comment prompts. (Useful, for example, in shell scripts and background tasks). 

Vous ne devriez probablement pas zip à zip de mettre à jour une archive ( -u ). Sans le commutateur -u , le zip tente d’append des fichiers à une archive et de créer des archives non existantes sans avertissements.

peut-être que vous pouvez essayer “append” au lieu de mettre à jour (-u)?

à partir de la page de manuel:

  add Update existing ensortinges and add new files. If the archive does not exist create it. This is the default mode. update (-u) Update existing ensortinges if newer on the file system and add new files. If the archive does not exist issue warning then create a new archive. freshen (-f) Update existing ensortinges of an archive if newer on the file system. Does not add new files to the archive. delete (-d) Select ensortinges in an existing archive and delete them. 

Vous pouvez également supprimer les lignes de sortie inutiles et laisser les informations d’état normales visibles, mais vous devez d’abord redirect le fichier stderr vers stdout. Par exemple, la commande suivante extraira de nombreux fichiers zip seulement certains fichiers spécifiques, mais ne montrera pas les lignes propres ni ne se plaindra pour les fichiers non trouvés. De cette façon, vous avez encore des résultats pour la journalisation, le débogage, etc.

 unzip -jn archivedlogfiles\* \*logfile\* 2>&1 | grep -vE '^$|^caution.*' Archive: archivedlogfiles1.zip inflating: little_logfile_20160515.log inflating: little_logfile_20160530.log Archive: archivedlogfiles2.zip Archive: archivedlogfiles3.zip Archive: archivedlogfiles4.zip Archive: archivedlogfiles5.zip Archive: archivedlogfiles6.zip Archive: archivedlogfiles7.zip Archive: archivedlogfiles8.zip inflating: little_logfile_20160615.log inflating: little_logfile_20160630.log Archive: archivedlogfiles9.zip 2 archives were successfully processed. 7 archives had fatal errors. 

Fondamentalement, votre commande ressemblerait alors à ceci:

 zip -u ${path}.zip ${path} 2>&1 | grep vE '^zip\swarning.*'