2011-10-09 10 views
7

Voglio zip un file utilizzando shell bash, quindi ho usato:Come disattivare l'avviso 'zip' in bash?

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

Quando ho eseguito questo script, mi dà un avvertimento:

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

funziona bene, ma come posso disabilitare questo avviso? Sto usando zip nel modo giusto?

risposta

18

Penso che tu voglia la bandiera quieta.

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

Dalle pagine man:

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

+1 Questo è quello che sto cercando. Grazie :) –

1

forse si può provare "aggiungere" invece di aggiornamento (-u)?

dalla pagina man:

add 
      Update existing entries and add new files. If the archive does not exist 
      create it. This is the default mode. 

    update (-u) 
      Update existing entries 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 entries of an archive if newer on the file system. Does 
      not add new files to the archive. 

    delete (-d) 
      Select entries in an existing archive and delete them. 
1

Probabilmente non si dovrebbe dire zip per aggiornare un archivio (-u). Senza lo switch -u, zip tenta di aggiungere file a un archivio e dovrebbe creare archivi non esistenti senza avvisi.

0

È inoltre possibile rimuovere le righe di output non necessarie e lasciare visibili le informazioni sullo stato normale, ma è prima necessario reindirizzare lo stderr su stdout. Ad esempio, il comando seguente estrarrà da molti file zip solo alcuni file specifici, ma non mostrerà linee emnpty né lamenterà file non trovati. In questo modo si ha ancora un po 'di output per la registrazione, il debug ecc

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. 

Fondamentalmente il vostro comando sarebbe quindi simile a questa:

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