Manpages

NOME

compress, uncompress, zcat − comprime ed espande dati (versione 4.1)

SINTASSI

compress [ −f ] [ −v ] [ −c ] [ −V ] [ −r ] [ −b bit ] [ nome ... ]
uncompress
[ −f ] [ −v ] [ −c ] [ −V ] [ nome ... ]
zcat
[ −V ] [ nome ... ]

DESCRIZIONE

Compress riduce la grandezza dei file usando la codifica adattativa di Lempel-Ziv. Quando possibile, ogni file viene sostituito da uno con estensione .Z, mentre vengono mantenuti gli stessi permessi di possesso, accesso e modifica. Se non vengono specificati file, lo standard input viene compresso sullo standard output. Compress proverà a comprimere solo file regolari. In particolare, ignorerà i collegamenti simbolici. Se un file ha più collegamenti fisici, compress si rifiuterà di comprimerlo, a meno che venga data l’opzione −f.

Se −f non viene usata e compress viene fatto girare in primo piano, all’utente viene chiesto se il file esistente debba essere sovrascritto.

I file compressi possono essere ripristinati alla loro forma originale usando uncompress o zcat.

uncompress prende un elenco di file dalla riga di comando e rimpiazza ogni file, il cui nome termini per .Z e che inizi con il numero magico giusto, con un file decompresso senza la .Z. Il file decompresso avrà gli stessi modi, proprietari e orari del file compresso.

L’opzione −c fa si che compress/uncompress scriva sullo standard output; nessun file viene cambiato.

zcat è identico a uncompress −c. zcat decomprime o un elenco di file passato sulla riga di comando o lo standard input, e scrive i dati decompressi sullo standard output. zcat decomprime file con il numero magico giusto sia che abbiano il suffisso .Z o meno.

Se l’opzione −r viene usata, allora compress opera ricorsivamente: se qualcuno dei file passati sulla riga di comando è una directory, compress discende nella directory e comprime tutti i file che vi trova.

L’opzione −V fa sì che ciascuno di questi programmi stampi su stderr, prima di comprimere o decomprimere, la propria versione e «patchlevel», insieme ad ogni opzione del pre-processore usata durante la compilazione.

Compress usa l’algoritmo modificato Lempel-Ziv divulgato in «A technique for high performance data compression», Terry A. Welch, IEEE Computer, vol. 17, no. 6 (June 1984), pp. 8-19. Le sotto-stringhe comuni nel file vengono prima sostituite da codici a 9 bit da 257 in poi. Quando viene raggiunto il codice 512, l’algoritmo passa a codici a 10 bit e continua a usare sempre più bit fino a quando il limite specificato dall’opzione −b viene raggiunto (predefinito a 16). I bit devono essere compresi tra 9 e 16. Il valore predefinito può essere cambiato nella sorgente per permettere a compress di essere eseguito su una macchina più piccola.

Dopo che il limite dei bit viene raggiunto, compress controlla periodicamente il rapporto di compressione. Se sta aumentando, compress continua a usare il dizionario esistente del codice. Tuttavia, se il rapporto di compressione diminuisce, compress scarta la tabella di sotto-stringhe e la ricostruisce da capo. Questo permette all’algoritmo di adattarsi al prossimo "blocco" del file.

Notare che l’opzione −b è omesso per uncompress, poiché il parametro dei bit specificato durante la compressione è codificato all’interno dell’output, assieme a un numero magico per assicurarsi che non venga tentata né la decompressione di dati a casaccio né la ricompressione di dati compressi.

La quantità di compressione ottenuta dipende dalla grandezza dell’input, dal numero dei bit per codice e dalla distribuzione di sotto-stringhe comuni. Tipicamente, del codice sorgente o un testo in inglese viene accorciato del 50−60%. La compressione è generalmente molto migliore di quella raggiunta dalla codifica di Huffman (come quella usata in pack), o la codifica adattativa di Huffman (compact), e necessita di un minore tempo di calcolo.

Con l’opzione −v, viene stampato un messaggio che dà la percentuale di riduzione per ogni file compresso.

Il codice di uscita è normalmente 0; se l’ultimo file si è ingrandito dopo una (tentata) compressione, il codice è 2; se c’è stato un errore, il codice è 1.

VEDERE ANCHE

pack(1), compact(1)

DIAGNOSTICA

Utilizzo: compress [−dfvcV] [−b maxbit] [file ...]

Sono state specificate opzioni non valide nella riga di comando.

Manca il parametro maxbit

Maxbit deve seguire −b.

file: non in formato compresso.

Il file specificato a uncompress non è stato compresso.

file: compresso con xx bit, può solo gestire yy bit

Ilfile è stato compresso con un programma che potrebbe manipolare più bit di quanto possa fare compress su questa macchina. Ricomprimere il file con meno bit.

file: ha già il suffisso .Z -- nessun cambiamento

Il file si suppone sia già compresso. Rinomina il file e prova di nuovo.

file: nome del file troppo lungo per aggiungere .Z

Il file non può essere compresso perché il suo nome è più lungo di 12 caratteri. Rinomina il file e prova di nuovo. Questo messaggio non capita sui sistemi BSD.

Il file esiste già ; vuoi sovrascriverlo (s o n)?

Rispondi «y» se vuoi che il file di output venga sostituito; «n» altrimenti.

uncompress: input corrotto.

Una violazione SIGSEGV è stata rilevata, il che di solito significa che il file di input è stato corrotto.

Compressione: xx.xx%

Percentuale dell’input risparmiata con la compressione (rilevante solo per −v).

-- non è un file regolare né una directory: immutato.

Quando il file di input non è un file regolare né una directory, (p.e. un collegamento simbolico, una socket, FIFO, un dispositivo), viene lasciato inalterato.

-- ha xx altri collegamenti: immutato.

Il file in input ha dei collegamenti; viene lasciato immutato. Vedere ln(1) per ulteriori informazioni. Si usi l’opzione −f per forzare la compressione di un file con più collegamenti.

-- file immutato.

Nessun risparmio raggiunto con la compressione. L’input rimane intatto.

BACHI

Sebbene i file compressi siano compatibili tra macchine con molta memoria, −b12 dovrebbe essere usato per il trasferimento di file verso architetture con un piccolo spazio per i dati del processo (64KB o meno, come mostrato dalle macchine DEC della serie PDP, dall’Intel 80286, ecc.)

Invocare compress con l’opzione −r può, a volte, produrre messaggi d’errore spurî della forma

"<filename>.Z already has .Z suffix - ignored"

Questi avvisi possono essere ignorati. Si vedano i commenti in compress.c:compdir() per una spiegazione.