PREV Capitolo 13 - Comandi Base per la Rete |
NEXT Capitolo 15 - L'Editor vi |
$ gzip infile |
Il file risultante si chiamerà infile.gz e solitamente risulterà essere più piccolo del file di input. Nota che infile.gz sostituirà infile. Questo significa che infile non esisterà più, ma soltanto la sua copia compressa. I file di testo verranno compressi molto, mentre le immagini jpeg, gli mp3, e altri file come questi non lo saranno molto poichè essi sono già compressi. Questo utilizzo basilare è un compromesso fra tempo di compressione e dimensione finale del file. La massima compressione può essere ottenuta così:
$ gzip -9 infile |
Ci vorrà un po' più di tempo per comprimere, ma il risultato sarà il più piccolo che gzip potrà ottenere. Usando valori minori nella linea di comando la compressione sarà più veloce, ma il file non sarà altrettanto compresso.
La decompressione di file gzippati può essere ottenuta con due comandi, che sono praticamente lo stesso programma. gzip decomprimerà ogni file con una particolare estensione. Per essere riconoscibile l'estensione può essere una delle seguenti: .gz, -gz, .z, -z, .Z, or -Z. Il primo metodo è lanciare gunzip(1) su un file, in questa maniera:
$ gunzip infile.gz |
Questo lascerà una versione decompressa di infile nella directory corrente, e l'estensione .gz verrà rimossa dal nome del file.
L'altra maniera per decomprimere un file gzippato è lanciare gzip sul file:
$ gzip -d infile.gz |
Questo si comporterà alla stessa maniera di gunzip. La ragione di questo è semplice: gunzip è soltanto un link simbolo a /bin/gzip:
$ cd /usr/bin $ ls -l gunzip lrwxrwxrwx 1 root root 9 Feb 2 09:45 gunzip -> /bin/gzip |
Così, eseguire gunzip è davvero la stessa cosa che eseguire
gzip con un nome differente. Il programma può determinare come è stato richiamato
e agire di conseguenza. In questo caso,
gzip saprà se è stato chiamato come
gunzip e decomprimerà il file. Quindi, puoi indifferentemente utilizzare
gzip oppure gunzip per decomprimere qualunque file gzippato.
top
Lo svantaggio di bzip2 è che esso impegna la CPU molto di più rispetto gzip. Questo significa che bzippare un file prenderà generalmente più tempo e userà molto di più la CPU rispetto a quanto sarebbe servito per gzippare il file. Quando si dovrà scegliere quale programma usare, dovrai valutare la velocità e la percentuale di compressione e scegliere cosa è più importante.
L'utilizzo di bzip2 è molto simile a quello di gzip, così non perderemo molto tempo nel descriverlo. Semplicemente lancia bzip2 col nome di un file per decomprimerlo:
$ bzip2 infile |
Il file risultante sarà solitamente più piccolo dell'originale, e si chiamerà infile.bz2. Come gzip, il file di input non esisterà più, poichè bzip2 lo rimpiazzerà con una copia compressa.
Puoi anche usare un argomento numerico nella linea di comando per regolare percentuale di compressione e velocità così come con gzip. Questo esempio mostra come ottenere la massima compressione con bzip2 con un accettabile utilizzo della CPU:
$ bzip2 -9 infile |
Ci sono due comandi per decomprimere i file che terminano con l'estensione .bz2, allo stesso modo di gzip. Puoi usare bzip2 oppure bunzip2(1) per decomprimere file bzippati. Usare bzip2 richiede l'aggiunta di un parametro nella linea di comando:
$ bzip2 -d infile.bz2 |
Questo decomprimerà il file bzippato e lo rimpiazzerà con la copia decompressa. Il file risultante verrà inoltre privato dell'estensione .bz2 . Similmente, puoi usare bunzip2 per decomprimere il file:
$ bunzip2 infile.bz2 |
Otterrai lo stesso comportamento in entrambe le maniere, grazie ancora ad un link simbolico. Esaminando /bin/bunzip2 ti accorgerai che è semplicemente un link simbolico a /bin/bzip2. Questo utilizza lo stesso trucco di gzip . Scoprirai che chiamare un programma usando differenti nomi per ottenere diversi risultati è uno dei trucchi preferiti dei programmatori Linux.
$ cd /bin $ ls -l bunzip2 lrwxrwxrwx 1 root root 5 Feb 2 09:45 /bunzip2 -> bzip2 |
L'uso più comune di tar è decomprimere e de-archiviare un pacchetto che hai scaricato da un sito web o ftp. La maggior parte dei file avrà come estensione .tar.gz . Questo è comunemente conosciuto come “tarball”. Significa che numerosi file sono stati archiviati usando tar e compressi usando gzip. Potresti imbatterti in un file con estensione .tar.Z . Significa la stessa cosa, ma solitamente lo si incontra sui sistemi Unix più vecchi.
Oppure, potresti trovare un file dall'estensione .tar.bz2 da qualche parte. Ad esempio i sorgenti del kernel sono distribuiti anche in questa maniera per un download più rapido. Come potresti aver immaginato, questo è un insieme di file archiviato con tar e poi bzippato.
Puoi ri-ottenere tutti i file di questo archivi usando tar e alcuni argomenti dalla linea di comando. De-archiviare un tarball fa utilizzo del parametro -z, che indica di passare prima il file a gunzip e di farlo decomprimere. Il modo più comune per decomprimere un tarball è questo:
$ tar -xvzf hejaz.tar.gz |
Ci sono abbastanza opzioni. Ma cosa significano? Il -x indica di estrarre. Questo è importante, poichè dice a tar esattamente cosa fare con il file in input. In questo caso, lo stiamo scomponendo nei file dai quali è stato ottenuto. -v indica di essere prolisso. Farà in modo che vengano elencati tutti i file de-archiviati. E' perfettamente lecito tralasciare questa opzione, se la ritieni inutile. In alternativa, puoi usare -vv per far in modo che sia molto loquace ed elenchi molte altre informazioni su ogni file de-archiviato. L'opzione -z dice a tar di passare hejaz.tar.gz dapprima a gunzip. E infine, l'opzione -f dice a tar che la stringa successiva nella linea di comando è il file su cui operare.
Ci sono anche altri modi per scrivere lo stesso comando. Sui vecchi sistemi mancanti di una versione decente di GNU tar, potresti vederlo scritto in questo modo:
$ gzip -dc hejaz.tar.gz | tar -xvf - |
Questo comando scomprimerà il file mandando l'output a tar. Poichè gzip scrive il suo output sullo standard out se così gli viene indicato di fare, questo comando questo comando scriverà il file decompresso sullo standard out. La pipe poi manda questo a tar per la de-archiviazione. Il “-” indica di operare sullo standard input. Esso de-archivierà lo stream di dati che riceve da gzip e lo scriverà sul disco fisso.
Un altro modo di scrivere la linea di comando sopracitata è di tralasciare il trattino prima delle opzioni, in questa maniera:
$ tar xvzf hejaz.tar.gz |
Potresti anche avere a che fare con un archivio bzippato. La versione di tar inclusa in Slackware Linux può maneggiarli allo stesso modo degli archivi gzippati. Invece di -x nelle opzione della linea di comando, dovrai usare -j:
$ tar -xvjf foo.tar.bz2 |
E' importante notare che tar piazzerà i file de-archiviati nella directory corrente. Così, se hai un archivio nella directory /tmp che vuoi decomprimere nella tua home directory, ci sono due possibilità. La prima, l'archivio può essere mosso nella tua home directory e poi passato a tar. Oppure, puoi specificare il percorso dell'archivio nella linea di comando:
$ tar -xvzf /tmp/bar.tar.gz |
I contenuti dell'archivio finiranno nella tua home directory, e l'archivio originale rimarrà ancora in /tmp.
Una seconda operazione molto comune con tar è creare i propri archivi. Creare un archivio non è più complicato che de-archiviare altri file; semplicemente occorrono delle diverse opzioni nella linea di comando.
Per creare un archivio tar compresso di tutti i file nella directory corrente (incluse le sotto-directory e i loro file), potresti usare tar così:
$ tar -cvzf archive.tar.gz . |
In questa linea di comando, l'opzione -c dice a tar di creare un archivio, mentre -z fa sì che l'archivio risultante venga compresso con gzip . archive.tar.gz è il file che tu vuoi venga creato. Puoi chiamarlo in qualunque maniera, e se indicherai un nome con un percorso assoluto, l'archivio verrà messo in quella directory. Ecco un esempio:
$ tar -cvzf /tmp/archive.tar.gz . |
L'archivio andrà in /tmp. Puoi anche elencare tutti i file e le directory che vuoi che siano inclusi nell'archivio indicandoli alla fine del comando. In questo caso, il . è la directory da includere nell'archivio. Quest'ultimo può essere rimpiazzato con una lista di vari file, o qualunque cosa tu voglia che venga archiviata.
Comprimere un file è facile:
$ zip foo * |
Questo creerà un file foo.zip, che conterrà tutti i file nella directory corrente. zip aggiungerà l'estensione .zip automaticamente, così non c'è bisogno di includerla nel nome del file. Puoi anche andare ricorsivamente nelle directory zippando tutte le directory che si trovano intorno:
$ zip -r foo * |
Allo stesso modo, decomprimere i file è semplice.
$ unzip foo |
Questo estrarrà tutti i file all'interno di foo.zip, inclusa ogni directory nell'archivio.
Le utility zip hanno alcune opzioni avanzate per creare archivi auto-estraenti, tralasciare dei file, controllare la grandezza compressa dei file, segnalare cosa succede, e molto altro. Controlla la pagina del manuale di zip e unzip per vedere come usare queste opzioni.
PREV Capitolo 13 - Comandi Base per la Rete |
NEXT Capitolo 15 - L'Editor vi |