Introduzione

ZIP è il formato di file di archivio più utilizzato che supporta la compressione dei dati senza perdita di dati. Un file ZIP è un contenitore di dati contenente uno o più file o directory compressi.

In questo tutorial, spiegheremo come decomprimere (estrarre) i file nei sistemi Linux attraverso la riga di comando usando il comando unzip.

Che cos'è Unzip?

unzip è un'utilità che ti aiuta a elencare, testare ed estrarre archivi ZIP compressi.

unzip non è installato di default nella maggior parte delle distribuzioni Linux, ma puoi installarlo facilmente usando il gestore pacchetti della tua distribuzione.

Installare unzip su Ubuntu e Debian

sudo apt install unzip

Installare unzip su CentOS e Fedora

sudo yum install unzip

Come decomprimere un file ZIP

Nella sua forma più semplice se usato senza alcuna opzione, il comando unzip estrarrà tutti i file dall'archivio ZIP specificato nella directory corrente.

unzip filename.zip

Per estrarre un archivio ZIP in una directory specifica, l'utente deve disporre delle autorizzazioni di scrittura per quella directory.

I file ZIP non supportano le informazioni sulla proprietà in stile Linux e tutti i file estratti saranno di proprietà dell'utente che esegue il comando.

Ad esempio, supponiamo che tu abbia scaricato il file ZIP di installazione di Wordpress. Per decomprimere questo file nella directory corrente, è sufficiente eseguire il comando seguente:

unzip latest.zip

Come nascondere l'output dal comando unzip

Per impostazione predefinita, il comando unzip stampa i nomi di tutti i file che sta estraendo e un riepilogo al termine dell'estrazione.

Utilizzare l'opzione -q per nascondere la stampa di questi messaggi.

unzip -q filename.zip

Come decomprimere un file ZIP in una directory diversa

Per decomprimere un file ZIP in una directory diversa da quella corrente, utilizzare l'opzione -d:

unzip filename.zip -d /path/to/directory

Ad esempio, per decomprimere l'archivio di WordPress latest.zip nella directory/var/www/, utilizzare il comando seguente:

sudo unzip latest.zip -d /var/www

Nel comando sopra stiamo usando sudo perché nella maggior parte dei casi l'utente a cui abbiamo effettuato l'accesso in quanto non dispone delle autorizzazioni di scrittura per la directory /var/www. Quando i file ZIP vengono decompressi utilizzando sudo, i file e le directory estratti saranno di proprietà dell'utente root.

Come decomprimere un file ZIP protetto da password

Per decomprimere un file protetto da password, utilizzare l'opzione -P seguita dalla password:

unzip -P PasswOrd filename.zip

Come escludere i file quando si decomprime un file ZIP

Se si desidera estrarre tutti i file da un archivio ZIP tranne uno, utilizzare l'opzione -x:

unzip filename.zip -x file-to-exclude

Nel seguente esempio stiamo estraendo tutti i file e le directory dall'archivio ZIP tranne la directory .git:

unzip filename.zip -x "*.git/*"

Come sovrascrivere i file esistenti quando si utilizza Unzip

Diciamo che hai già decompresso un file ZIP e stai eseguendo di nuovo lo stesso comando:

unzip latest.zip

Per impostazione predefinita, unzip ti chiederà se desideri sovrascrivere solo il file corrente, sovrascrivere tutti i file, saltare l'estrazione del file corrente, saltare l'estrazione di tutti i file o rinominare il file corrente.

Archive:  latest.zip
replace wordpress/xmlrpc.php? [y]es, [n]o, [A]ll, [N]one, [r]ename:

Se si desidera sovrascrivere i file esistenti senza chiedere conferma, utilizzare l'opzione -o:

unzip -o filename.zip

Utilizzare questa opzione con cautela. I file verranno sovrascritti e se si apportano modifiche ai file, le modifiche andranno perse.

Come decomprimere un file ZIP senza sovrascrivere i file esistenti

Supponiamo che tu abbia già decompresso un file ZIP e apportato modifiche ad alcuni file ma che tu abbia eliminato per errore alcuni file. Si desidera mantenere le modifiche e ripristinare i file eliminati dall'archivio ZIP.

In questo caso, useresti l'opzione -n che forza unzip a saltare l'estrazione di un file già esistente.

unzip -n filename.zip

Come decomprimere più file ZIP

Se nella directory di lavoro corrente sono presenti più file ZIP, è possibile decomprimere tutti i file utilizzando un solo comando:

unzip '*.zip'

Nota le virgolette singole attorno al *.zip. Se hai dimenticato di citare l'argomento, la shell espande il carattere jolly e otterrai un errore.

Come elencare il contenuto di un file zip

Per elencare il contenuto di un file ZIP, utilizzare l'opzione -l:

unzip -l filename.zip

Nell'esempio seguente, stiamo elencando tutti i file di installazione di WordPress:

unzip -l latest.zip

L'output sarà simile al seguente:

Archive:  latest.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-08-02 22:39   wordpress/
     3065  2016-08-31 18:31   wordpress/xmlrpc.php
      364  2015-12-19 12:20   wordpress/wp-blog-header.php
     7415  2018-03-18 17:13   wordpress/readme.html
...
...
    21323  2018-03-09 01:15   wordpress/wp-admin/themes.php
     8353  2017-09-10 18:20   wordpress/wp-admin/options-reading.php
     4620  2017-10-24 00:12   wordpress/wp-trackback.php
     1889  2018-05-03 00:11   wordpress/wp-comments-post.php
---------                     -------
 27271400                     1648 files

Conclusione

Abbiamo parlato di come decomprimere i file in Linux, dalla riga di comando.