Se vuoi visualizzare un file di testo da terminale o modificare il contenuto di uno o più file anche combinandoli tra loro, allora devi conoscere il comando cat di Linux.
Per imparare a usare al meglio il comando cat faremo una carrellata dei suoi utilizzi principali attraverso esempi pratici in cui ti mostrerò di volta in volta l’output.
Iniziamo!
Sintassi del comando cat
Per le operazioni sui file, il comando cat è tra quelli fondamentali da conoscere.
La sintassi di base di questo comando è la seguente:
cat [opzioni] nome-file
Abbiamo visto che con i comandi cp e mv possiamo creare copie dei file e spostarli. In questo caso, invece, spostiamo la nostra attenzione sul contenuto dei file.
La funzione di base del comando cat (concatenate) è quella di mostrare il contenuto di un file.
La sintassi da usare per mostrare il contenuto di un file è questa:
cat percorso/nome-file-.txt
Come vedremo in questa guida pratica, questo stesso comando si può usare anche per altri scopi tra cui unire più file o aggiungere del contenuto a un file esistente.
Passiamo ai casi d’uso principali per capire come sfruttare il comando cat.
Casi d’uso principali del comando cat
Il comando cat
si usa per visualizzare il contenuto di uno o più file o per fare copie del contenuto da un file ad un altro, combinando ad esempio più documenti tra loro.
Per prima cosa vediamo le operazioni di base che possiamo fare con questo comando, più avanti nella guida passeremo all’utilizzo delle opzioni.
Come mostrare il contenuto di un file
Usando il comando cat possiamo visualizzare il contenuto di un singolo file nel terminale.
Il comando da usare è questo:
cat nome-file
Nel nostro esempio per mostrare il contenuto del file “appunti.txt” daremo il comando:
cat appunti.txt
Qui nell’esempio puoi vedere che il contenuto del file di testo viene mostrato direttamente nel terminale:
Nota che in questo caso sto richiamando un file che è presente nella cartella corrente, se voglio visualizzare il contenuto di un file salvato in un’altra posizione, dovrò inserire tutto il percorso del file.
Come mostrare il contenuto di più file
Possiamo usare il comando cat anche per mostrare il contenuto di più file usando il comando una sola volta.
Ci basta digitare il comando seguito dai nomi dei file, in questo modo:
cat nome-file.txt nome-altro-file.txt
Nel nostro esempio ho usato il comando per mostrare il contenuto di due file:
cat appunti.txt documento.txt
Come risultato mi è stato mostrato il contenuto testuale di entrambi i file.
Se noti bene guardando l’esempio, usando questo comando non riusciamo a capire dove finisce un file e inizia l’altro.
In questo caso ho evidenziato in rosso il contenuto del file “appunti” e in blu quello di “documento”:
Come mostrare il contenuto di tutti i file presenti in una cartella
In maniera simile a quanto abbiamo appena visto, possiamo usare il comando cat per visualizzare file multipli che corrispondono a determinate caratteristiche, ad esempio che hanno una specifica estensione.
Ad esempio possiamo vedere il contenuto di tutti i file all’interno di una cartella che hanno l’estensione txt.
Per farlo possiamo sfruttare il wildcard, così:
cat *.txt
In questo modo ci verranno mostrati i contenuti di tutti i file con estensione txt.
Nel mio esempio ho usato il comando ls per sapere quali fossero i file nella cartella, poi con il comando cat ho visualizzato il contenuto.
Il risultato è il contenuto di tre file:
- appunti.txt > le prime due righe di testo;
- documento.txt > la terza riga;
- ricerca.txt > l’ultima riga.
Anche qui, come dicevamo prima, non possiamo distinguere direttamente da terminale a quale file appartenga il contenuto.
Come unire più file esistenti in un nuovo file
Una delle funzioni più interessanti del comando concatenate è l’unione dei file.
Partendo da due file possiamo copiare il loro contenuto in un terzo file, così:
cat file-1 file-2 > file-unito
Nel nostro esempio voglio combinare due file in un nuovo file, con questo comando:
cat roma.txt milano.txt > citta-italia.txt
Il risultato è che viene creato un nuovo file “citta-italia.txt” al cui interno viene copiato il contenuto di “roma.txt” seguito da quello di “milano.txt”.
Come copiare il contenuto di un file alla fine di un altro file
Nell’esempio precedente abbiamo usato cat per creare un nuovo file dall’unione di due file già esistenti.
Possiamo usare cat anche per manipolare file già esistenti e copiare il contenuto del primo file alla fine del secondo file. In questo caso nota che il contenuto viene aggiunto alla fine e non va a sovrascrivere quello esistente.
Il comando si usa così:
cat nome-file >> nome-file-destinazione
Nel nostro esempio voglio aggiungere il contenuto del file “genova.txt” alla fine del file già creato prima “citta-italia”, per farlo uso il comando cat così:
cat genova.txt >> citta-italia.txt
Come risultato, il contenuto del file “genova” viene aggiunto alla fine del file “citta-italia”.
Come aggiungere testo a un file con cat
Il comando cat nasce per manipolare il contenuto dei file, questo significa che possiamo anche usarlo per aggiungere nuove porzioni di testo a un qualsiasi file già esistente direttamente da terminale.
La sintassi da usare è questa:
cat >> nome-file.txt
testo da inserire nel file
- Per prima cosa dobbiamo usare il comando “
cat >>
” e specificare il nome del file, quindi dare Invio. - Dopodiché possiamo digitare il testo da inserire, possiamo anche andare da capo come se stessimo scrivendo proprio nell’editor di testo.
- Per completare la modifica e salvare dobbiamo premere “CTRL+D”.
Qui sotto puoi vedere un esempio in cui ho aggiunto tre righe di testo al file “ricerca.txt”
Come usare le opzioni del comando cat su Linux
Come tutti i comandi Linux, anche cat
ha delle opzioni specifiche. In questo caso le opzioni ci aiutano a leggere meglio il contenuto dei file e a manipolarli.
Vediamo quali sono alcune delle opzioni più utili con degli esempi pratici che ci permettono di capire come usarle.
Mostrare i numeri di riga
Usando l’opzione -n in combinazione al comando cat possiamo visualizzare i numeri di riga dei file direttamente da terminale.
L’opzione si usa così:
cat -n nome-file
Nel nostro esempio:
cat -n ricerca.txt
Come vedi in questa schermata accanto a ogni riga viene mostrato il numero.
Come mostrare la tabulazione nei file
Se stiamo accedendo da terminale a un file e vogliamo mostrare la tabulazione, possiamo usare l’opzione -T
.
cat -T nome-file
Con questa opzione le tabulazioni verranno riportate nel terminale in questo modo: “^I”.
Possiamo anche usare l’opzione “-A
” che combina le tre opzioni -vET:
- v serve a mostrare i caratteri non stampabili;
- E ci permette di distinguere la fine delle righe aggiungendo $;
- T ci permette di mostrare la tabulazione con “^I”.
Ecco un esempio:
cat -A nomefile.txt
Come evitare di mostrare le righe vuote multiple in un file
Quando visualizziamo un file da terminale con cat, vedremo anche tutte le righe vuote se presenti. Con l’opzione -s possiamo eliminare le righe vuote ripetute.
cat -s nome-file
Nel nostro esempio il file appunti conteneva diverse righe vuote consecutive e con l’opzione s le abbiamo eliminate.
cat -s appunti.txt
Ecco infatti il risultato:
Nota che con questo comando le righe multiple vuote non vengono mostrate in modo da permetterci di visualizzare il file in maniera più compatta. Il file, però, non viene modificato realmente: le righe multiple continuano a restare nel file, ma non vengono mostrate proprio grazie all’opzione.
Come evidenziare la fine delle righe
Per alcuni file testuali, può essere utile riuscire a distinguere la fine di ogni riga. Per farlo possiamo usare l’opzione -E:
cat -E nome-file
Per esempio:
cat -E citta-italia.txt
Nel nostro esempio abbiamo un file composto da più righe e usando il comando cat con l’opzione -E, la fine di ogni riga viene messa in evidenza grazie all’aggiunta del simbolo “$“.
Come usare cat in combinazione con altri comandi
Il comando cat su Linux si può usare insieme ad altri comandi per ampliare le operazioni sui file.
Vediamo alcuni esempi pratici.
Nota che si tratta di esempi semplici creati solo per farti capire come combinare i comandi insieme a cat. Non a caso si parla spesso dell’uso inutile di cat e c’è anche un premio “useless use of cat award” creato scherzosamente proprio per celebrare gli usi più inutili del comando specie se utilizzato per operazioni un singolo file.
Come mostrare il contenuto di un file al contrario
Abbiamo visto come usare cat per visualizzare nel terminale il contenuto di un file.
Possiamo anche usare il comando tac
per visualizzare il contenuto di un file dall’ultima riga verso la prima.
cat tac nome-file
Ecco un esempio con un file di testo con un elenco di nomi: l’elenco viene mostrato nell’ordine inverso se usiamo tac invece che cat.
Usare cat con more e less
Se vogliamo visualizzare file con molto contenuto, possiamo utilizzare il comando more insieme a cat per suddividere il contenuto del file in pagine e poter passare da una pagina all’altra.
Per farlo dobbiamo usare i comandi cat e more e combinarli con la pipe |.
Vediamo un esempio:
cat nome-file | more
In questo esempio, il file è lungo e viene suddiviso in più pagine.
Dopo aver dato il comando, possiamo scorrere il file in due modi:
- usiamo Invio per avanzare di una riga alla volta;
- usiamo Spazio per passare da una pagina alla successiva.
Per uscire dal comando more, ci basta premere “Q“.
Il comando more è utile per scorrere un file partendo dall’inizio e avanzando riga per riga o pagina per pagina. Se, invece, vogliamo navigare in un file in entrambi i sensi, dall’inizio verso la fine e viceversa, è più comodo usare il comando less.
In questo caso in combinazione con cat si usa così:
cat nome-file.txt | less
Dopodiché possiamo spostarci:
- avanti di un rigo con freccia verso il basso o invio;
- indietro di un rigo con freccia verso l’alto;
- avanti di una pagina con spazio o “Pagina su”;
- indietro di una pagina con “Pagina giù”.
Mostrare il testo in ordine alfabetico con sort
Possiamo combinare cat e sort per mostrare il contenuto di un file in ordine alfabetico.
cat nome-file | sort
In questo esempio avevo un elenco di nomi in un file, con il primo comando (cat) ho mostrato il contenuto originale del file. Con il secondo comando aggiungendo sort li ho ordinati:
cat iscritti.txt | sort
Il risultato è stato l’elenco mostrato in ordine alfabetico grazie a sort.
Mostrare solo alcune righe di un file con sed
Se usiamo cat insieme al comando sed possiamo scegliere di mostrare solo le righe che vogliamo di un file di testo.
Possiamo usare questo comando per mostrare un intervallo di righe da noi scelte, in questo modo:
cat comandi.txt | sed -n '20,36p'
Qui l’opzione -n ci permette di mostrare solo le righe indicate e con ‘20,36p’ stiamo indicando l’intervallo di righe da mostrare.
Conclusioni
Il comando cat è tra i principali di Linux, ci permette di verificare rapidamente il contenuto di un file, ma soprattutto di combinare file tra loro o fare rapide modifiche aggiungendo del testo.
La vera forza di questo comando emerge quando viene usato per elaborare più file e in combinazione alle opzioni come abbiamo visto con svariati esempi.
Avevi mai usato il comando cat? Parliamone nei commenti.
Lascia un commento