Estrarre e creare file .zip da linea di comando con Linux non è intuitivo tanto quanto l'uso dei programmi ad interfaccia grafica, ma basta memorizzare la sintassi dei comandi "zip" e "unzip" per raggiungere il risultato. Vediamo allora come zippare e unzippare da linea di comando con Linux

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found - zip unzip linux spotlight

Nota: in questo articolo vedremo come zippare (comprimere) e unzippare (estrarre) file .zip da linea di comando con Linux. La procedura è stata testata con Ubuntu 17.04 e CentOS 7.3, ma la sintassi dei comandi è grossomodo inalterata da decenni, motivo per cui è presumibile che continui a rimanere la stessa negli anni a venire.

Per chi ha fretta

Se già siete esperti di Linux e cercate solo un "reminder" per la sintassi, eccovi serviti:

  • visualizzazione: unzip -l "/percorso/completo/miofile.zip"
  • unzip: unzip -o "/percorso/completo/miofile.zip" -d "/percorso/file/estratti/"
  • zip: cd /percorso/cartella/file_da_zippare/ && zip -r -9 -FS -m "/percorso/completo/miofile.zip" .

Nel resto dell'articolo ne approfondiremo l'uso e spiegheremo il significato dei vari argomenti.

Passo 1: Aprire il terminale

Se state lavorando via SSH oppure con una edizione spiccatamente "server" (come Ubuntu Server), siete già davanti alla linea di comando, quindi andate oltre.

Se però state impiegando l'edizione "regolare" per PC, cliccate sul pulsante con i 3x3 punti in basso a sinistra e cercate terminale per lanciare rapidamente l'omonima applicazione

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found - linux apri terminale

» Leggi anche: Come aprire il terminale di Ubuntu

Passo 2: Installare i pacchetti zip e unzip

Impartiamo ora i comandi zip prima e unzip dopo senza alcun argomento per verificare che i rispettivi pacchetti siano effettivamente installati. In caso positivo, verrà visualizzata la guida alla sintassi: bene, significa che i pacchetti sono disponibili e possiamo andare oltre

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found

Se però riceviamo un errore simile a bash: unzip: command not found, significa che i pacchetti non sono installati. Procediamo dunque a recuperarli tramite il comando:

  • Ubuntu: sudo apt-get install zip unzip -y
  • CentOS: sudo yum install zip unzip -y

Passo 3: Scaricare il file da estrarre

Se state leggendo questo articolo perché desiderate estrarre un file .zip da linea di comando su Linux dovete innanzitutto scaricare il .zip in questione! Allo scopo, consultate questo articolo per la guida al download dei file tramite linea di comando:

» Leggi: Come scaricare file da linea di comando: guida a curl e wget per Linux Ubuntu/CentOS

Unzippare (estrarre) tutti i file .zip da linea di comando

Per "unzippare" tutti i file di un .zip da linea di comando basta impartire qualcosa di simile a:

unzip -o "/percorso/completo/miofile.zip" -d "/percorso/file/estratti/"

Dove:

  • unzip: è il nome del comando
  • -o: sovrascrive tutti i file già presenti nella destinazione
  • "/percorso/completo/miofile.zip": percorso del file .zip che desideriamo scompattare
  • -d "/percorso/file/estratti/": percorso nel quale salvare i file estratti dallo zip

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found

Da notare che l'argomento -d può essere omesso, ma questo estrae tutti i file nella directory corrente (non in quella nella quale si trova lo zip!). Per evitare fraintendimenti e ritrovarsi con i file estratti in un percorso differente da quello atteso, è dunque sempre opportuno esplicitarlo.

Il parametro -o sovrascrive i file già presenti nella cartella di destinazione con quelli corrispondenti presenti nell'archivio. Se omesso, il programma chiede conferma esplicita prima di procedere

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found - unzip prompt overwrite

Altri parametri che risulta utile conoscere sono:

  • -P PasswordDelloZip: se l'archivio è protetto da password, specifichiamola tramite l'argomento -P (lettera maiuscola!) per poter procedere con l'estrazione
  • -j: scarta l'alberatura di cartelle presenti nell'archivio ed estrae tutti i file nella cartella di destinazione

La lista completa degli argomenti è disponibile impartendo man unzip oppure via web.

Visualizzare il contenuto dell'archivio senza scompattare

In alcune circostanze vorremo ispezionare il contenuto dell'archivio .zip senza concretamente estrarre i file. Allo scopo, si usa l'argomento -l. Il comando completo sarà dunque:

unzip -l "/percorso/completo/miofile.zip"

Le righe il cui valore Name finisce con la barra (/) sono cartelle, mentre gli altri sono file

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found

Unzippare (estrarre) solo alcuni file

Non è necessario scompattare l'intero archivio per recuperare solo pochi file o cartelle: possiamo infatti specificare sulla linea di comando un elenco dei file estrarre.

Per prima cosa, usiamo l'argomento -l, come indicato al Passo precedente, per visualizzare la lista dei file presenti nell'archivio e scoprirne i percorsi.

Procediamo poi ad indicare quali file o cartelle estrarre, fornendo i rispettivi percorsi sulla linea di comando subito dopo al percorso del file zip. Ad esempio:

unzip -o "/percorso/completo/miofile.zip" "file1.txt" "nomecartella/" "cartella2/file3.xls" "dir1/dir2/file.ppt" -d /percorso/file/estratti/

Come unica accortezza, ricordate che, per estrarre intere cartelle, dovete esplicitare la barra (/) dopo il nome

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found - unzip selezione file

Creare archivi Zip con Linux

Se invece desiderate creare un archivio Zip da linea di comando, dovete innanzitutto entrare nella cartella che contiene i file da zippare:

cd /percorso/cartella/file_da_zippare/

A questo punto potete lanciare qualcosa di simile a:

zip -r -9 -FS -m "/percorso/completo/miofile.zip" .

Dove:

  • zip: è il nome del comando
  • -r: comprime tutte le sottocartelle e i file presenti
  • -9: specifica di usare la massima compressione prevista dal formato Zip
  • -FS: in caso il file .zip esistesse già, elimina dallo stesso i file non più presenti nella cartella che stiamo usando come origine
  • -m: elimina i file originali dopo aver creato l'archivio
  • "/percorso/completo/miofile.zip": percorso e nome del file .zip da creare
  • .: indica al comando di aggiungere all'archivio il contenuto della directory corrente

Guida zip unzip Linux: come zippare (comprimere, creare) unzippare (estrarre) archivi .zip linea comando Ubuntu CentOS - errore bash: unzip: command not found

Anche il comando di compressione prevede una lunga lista di altri parametri opzionali. Fra i più significativi, ricordiamo:

  • -P PasswordDelloZip: per proteggere il nuovo archivio con password, specifichiamola tramite l'argomento -P (lettera maiuscola!)
  • -j: scarta l'alberatura di cartelle presenti nell'archivio e pone tutti i file al primo livello dell'archivio

La lista completa degli argomenti è disponibile impartendo man zip oppure via web.