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
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.