web analytics

[GUIDA] Lavorare su file .gz da terminale in ambiente Linux

linux-log

In breve: In questa mini-guida vi spiego come leggere file di log in formato .gz .

Con l’introduzione delle interfacce grafiche GUI, l’uso del terminale, anche da parte dei cosiddetti power user, è andato via via diminuendo. In questo articolo andremo contro corrente e useremo intensivamente il terminale per lavorare su file in formato .gz . La guida vuole essere introduttiva e dedicata ai neofiti, pertanto è accessibile a tutti.

Leggere file .gz (e non) da terminale

Se lavorate con backend logs avrete notato che sono quasi sempre compressi e l’estensione è .gz. Chiaramente salvare un file di log in formato compresso è una cosa usuale che permette di risparmiare spazio di storage.

A differenza dei normali file di testo, che si leggono con il comando <cat>, i file .gz necessitano del comando Z.

Quindi, avete:

  • zcat al posto di cat per vedere i file compressi;
  • zgrep al posto di  grep per cercare all’interno di un file compresso;
  • zless al posto di less, zmore al posto di more;
  • zdiff al posto di diff, permette di vedere le differenze tra due file compressi;

La cosa più interessante del comando Z è che non dovete estrarre il file compresso per utilizzarlo, lavora direttamente sul file .gz.

NOTA: se avete un file sul desktop e aprite il terminale scrivendo ” cat nomefile ” il terminale vi darà un errore. Infatti per funzionare correttamente i comandi devono essere dati quando vi trovate nella directory del file su cui volete operare. La procedura da seguire è:

cd Desktop --> cd nomecartella --> cat nomefile

Nell’immagine sottostante vi mostro come

  1. spostarvi sul desktop;
  2. creare un file;
  3. scrivere su file un contenuto;
  4. leggere il file col comando cat;

linux-usare-il-terminale- .gz

Se volete potete comprimere un file voi stessi con il comando

gzip filename

Il file può essere decompresso dando da terminale

gunzip filename

Chiaramente potete verificare voi stessi che, una volta compresso un semplice file .txt col comando gzip, esso non sarà più leggibile correttamente col comando cat, dovrete usare zcat. Zcat si usa esattamente allo stesso modo di cat. Ad esempio:

zcat logfile.gz

Questo vi mostrerà tutto il contenuto del file logfile.gz senza estrarlo. In realtà avviene una forma di estrazione temporanea ma non è questo il punto.

LESS e MORE
zcat logfile.gz | less
zcat logfile.gz | more

Nel caso non sappiate se il file è compresso o no (con o senza estenzione .gz), potete usare zcat -f. Cosi’ facendo potrete vedere il contenuto del file sia che sia compresso sia che non lo sia.

zcat -f logfile.gz
ZLESS e ZMORE

Cosi’ come con less e more potete usare zless e zmore per leggere il contenuto di file compressi senza estrarli.

zless logfile.gz
zmore logfile.gz
GREP

Grep è un comando potentissimo e sicuramente uno dei più utilizzati. Zgrep è la controparte Z e ti permette di cercare all’interno di un file compresso senza eseguire l’estrazione.

Esempio:

zgrep -i keyword_search logfile.gz
ZDIFF

Nonostante questo comando possa non essere utilissimo potete utlizzarlo, esattamente come diff, per vedere le differenze fra file compressi.

zdiff logfile1.gz logfile2.gz

Questi sono solo alcuni dei comandi più utilizzati per lavorare su file .gz da terminale.

E voi avete qualche trucchetto da segnalarci per lavorare su file compressi?