File lunghi, e compressione gzip
In questo esercizio si sperimenteranno alcuni comandi che sono utili per operazioni comuni, come leggere file e comprimere (aka "zippare") files e cartelle.
Lettura di file lunghi
Il comando cat
, come si è visto negli esercizi
precedenti, permette di stampare sul terminale il contenuto di un
file. Tuttavia, nel caso di file che contengono molto testo, questo
può essere piuttosto scomodo, in quanto costringerebbe a scorrere
tutto il terminale per trovare l'inizio del testo.
Per questa ragione, sono disponibili altri comandi che permettono di
leggere il testo passo / passo, senza stamparlo tutto insieme, ma
che allo stesso tempo non sono complessi come un editor di testo. Uno
di questi comandi è less
(che, in maniera forse
controintuitiva, ha sostituito il vecchio comando more
)
less
per leggere il
file ~/.ssh/known_hosts
creato in precedenza, al posto
di cat
. Per uscire da less
bisogna
digitare il tasto q
.
Il comando
less
dispone di alcune caratteristiche avanzate; ad
esempio, permette di effettuare la ricerca all'interno del testo, o
di mostrare i numeri di riga. Come al solito, informazioni dettagliate
su come attivare queste funzionalità si trovano nel manuale, consultabile
con il comando man less
.
less
per aprire il file
/home/robol/dante.txt
, che contiene una copia della
Divina Commedia in formato testuale. Si cerchi la prima apparizione
della parola "Francesca" (che, come è facile immaginare, sarà nel
V Canto) con lo strumento di ricerca in avanti; si attivino poi
i numeri di riga per vedere a che riga compare.Per svolgere questo esercizio, è necessario leggere il manuale!
Come si può notare, c'è una forte somiglianza fra il comando
less
ed il lettore di manuali man
; questo
non è casuale: il comando man
utilizza proprio
less
per mostrare l'output. In particolare, tutti
i comandi per la ricerca sono disponibili anche mentre si
legge il manuale.
Leggere parte di un file
Spesso si può avere la necessità di leggere solo la parte iniziale o
finale di un file. I comandi head
e tail
,
come il nome suggerisce, permettono di stampare la testa e la coda
di un file di testo.
Questi comandi hanno un'opzione -n
che permette di
scegliere quante righe di testo stampare (rispettivamente dall'inizio
e dalla fine del file).
head
e tail
sul file /home/robol/dante.txt
per stamparne le prime 19 e le
ultime 18 righe. Si utilizzi la redirezione dell'output per creare
un file dante-short.txt
con solo queste 37 righe.
Promemoria: Si può usare la redirezione con
>>
per aggiungere testo ad un file senza sovrascriverlo.
Archivi tar, e compressione gzip
Storicamente, il salvataggio di backup veniva fatto su nastri magnetici, in inglese chiamati tape archive. Sui nastri è possibile scrivere solo dati in modo sequenziale, e questi ignorano completamente la struttura del file system.
Linux disponse di un comando apposito che crea, a partire da file
contenuti in una directory, un unico file. Il comando si
chiama tar
, che sta appunto per tape
archive.
Al giorno d'oggi è piuttosto inusuale dover scrivere su nastri magnetici, ma questo comando è ancora comodo perché supporta la compressione, e dunque permette di trasformare un qualsiasi insieme di file in un unico file, compresso.
Il comando tar
può funzionare in varie modalità:
-
Creazione: specificando l'opzione
-c
il comando crea un singolo archivio a partire da un file o una directory. L'opzione-f
permette di scegliere il nome del file. Se omessa, il risultato verrà stampato a video. Esempio:$ tar -c -f miofile.tar file1 directory1 file2 file3 ...
-
Estrazione: con l'opzione
-x
il comando fa l'operazione inversa, ovvero ricrea i file archiviati a partire dal file tar. Ad esempio:$ tar -x -f miofile.tar
-v
per stampare la lista dei file prodotti, e -z
per attivare
la compressione Gzip. L'opzione -j
utilizza invece la
compressione Bzip2, più efficiente ma anche più costosa. Per maggiori
informazioni, è possibile consultare il manuale: man tar
.
dante.txt
(utilizzando il comando cp
), e almeno un altro file contenente
del testo a propria scelta. Comprimere questa cartella con il comando
tar
prima senza e poi con compressione. Qual è l'algoritmo
più efficiente? Confrontare lo
spazio richiesto per le varie opzioni, e poi provare ad estrarre i file
all'interno di una nuova cartella di nome recovery
—
da crearsi con mkdir
.