cat

()

Unire i contenuti dei file

Il comando cat (abbreviazione di concatenate) è stato sviluppato come strumento per l’unione dei contenuti dei file e può essere utilizzato come pager per visualizzare i contenuti dei file nel terminale.

Aprite nel terminale cat con la seguente sintassi per inserire un file e riceverlo nello stdout (standard output):

cat OPZIONI FILE

Più file vengono separati da spazi:

cat OPZIONI FILE1 FILE 2

Il collegamento dei contenuti del file avviene tramite operatori di reindirizzamento (>, < e |).

Utilizzate ad esempio l’operatore “più grande di” (>) per unire il contenuto di due file in un terzo:

cat file_1.txt file_2.txt > file_3.txt

Leggere un singolo file

L’utilizzo base di cat è, come abbiamo detto nell’introduzione, quello di permettere di leggere un file e stamparlo a schermo. Questa funzione è particolarmente utile per file abbastanza corti, di poche righe, in quanto l’output verrà semplicemente stampato nel terminale e non avremo modo di navigarlo come ad esempio possiamo fare con less o vi.

cat appuntidilinux.txt

Il risultato di questo comando sarà il contenuto del file di testo appuntidilinux.txt stampato nel terminale.

Leggere più di un file

Possiamo usare cat per leggere più di un file alla volta. In questo caso il comando cat ci stamperà prima il contenuto del primo file, poi quello del secondo, e così via.

Anche in questo caso se il vostro obiettivo è quello di leggere visivamente i file è meglio usare file con un numero contenuto di righe.

La sintassi del comando cat in questo caso è cat file1 file2 file3… filen

cat infapp01.txt infapp02.txt

L’output sarà quindi la concatenazione del contenuto dei due file.

contenuto infapp01
contenuto infapp02

Leggere un file con numeri di riga

Se vogliamo che cat aggiunga nell’output i numeri di riga del file letto possiamo usare l’opzione -n. Il numero di riga verrà aggiunto all’inizio di ogni riga stampata.

Questa funzione è comoda nei casi in cui avessimo bisogno di filtrare ad esempio tramite il comando grep un file particolarmente grande e poi volessimo rintracciare tramite il numero di riga le parti che abbiamo selezionato.

Un esempio del comando cat -n è il seguente:

cat -n file1.txt

L’opzione cat -n numera tutte le righe, comprese quelle vuote.

Se vogliamo invece numerare solamente le righe non vuote, possiamo usare l’opzione cat -b che sovrascrive -n nel caso siano presenti entrambe.

Creare un file vuoto

Creare un file da riga di comando è un’operazione che può capitare di dover fare.

Per farlo velocemente ci sono almeno due modi: si può usare il comando touch <nomefile> oppure si può utilizzare cat. Il comando da eseguire in questo caso sarà:

cat > <nomefile>

Una volta premuto invio il comando non terminerà ma rimarrà in attesa di ulteriori input. Se vogliamo scrivere del testo nel file possiamo farlo ora.

Una volta terminato di scrivere il testo che vogliamo inserire nel file, o subito dopo aver premuto invio se vogliamo creare un file vuoto, basterà premere la combinazione <Ctrl> + d per terminare il comando e tornare al prompt del terminale.

Cat per copiare il contenuto di un file in un altro

Abbiamo visto nell’esempio precedente come è possibile utilizzare cat in combinazione con l’operatore di redirezione > per creare un nuovo file.

Possiamo sfruttare lo stesso operatore per copiare tutto il contenuto di un file in un altro. In questo caso dovremo solamente aggiungere il nome del file di partenza come argomento invece di eseguire il comando cat senza argomenti.

cat fileInput.txt > fileOutput.txt

In questo caso stiamo dicendo a cat di leggere dal file fileInput.txt e di redirezionare l’output nel file fileOutput.txt. In questo caso l’output non viene mostrato a schermo ma viene direttamente trasferito nel nuovo file.

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?