Come usare i comandi ‘cat’ e ‘tac’ con esempi in Linux

Questo articolo fa parte della nostra serie Trucchi e Suggerimenti di Linux, in questo articolo copriremo alcune nozioni di base sull’uso del comando cat (il comando più frequentemente usato in Linux) e tac (il contrario del comando cat – stampa i file in ordine inverso) con alcuni esempi pratici.

Leggi Anche: 13 Esempi Utili del Comando ‘cat’ in Linux

Utilizzo di Base del Comando Cat in Linux

Il comando cat, acronimo di Concatenate, è uno dei comandi più utilizzati nei sistemi *nix. L’uso più basilare del comando è leggere i file e visualizzarli su stdout, cioè mostrare il contenuto dei file sul terminale.

# cat file.txt
View Content of File in Linux

Un altro utilizzo del comando cat è leggere o combinare diversi file insieme e inviare l’output a un monitor come illustrato negli esempi sottostanti.

# cat file1.txt file2.txt file3.txt
View Content of Multiple Files

Il comando può anche essere utilizzato per concatenare (unire) più file in un unico file utilizzando l’operatore di redirezione ">" di Linux.

# cat file1.txt file2.txt file3.txt > file-all.txt
Join Multiple Files in Linux

Utilizzando l’operatore di redirezione per l’appendice è possibile aggiungere il contenuto di un nuovo file in fondo al file-all.txt con la seguente sintassi.

# cat file4.txt >> file-all.txt
Append Content File to New File

Il comando cat può essere utilizzato per copiare il contenuto di un file in un nuovo file. Il nuovo file può essere rinominato arbitrariamente. Ad esempio, copia il file dall’attuale posizione alla directory /tmp/.

# cat file1.txt > /tmp/file1.txt 
Copy Content of File to New File

Copia il file dalla posizione attuale alla directory /tmp/ e cambiane il nome.

# cat file1.txt > /tmp/newfile.cfg
Copy File to /tmp Location

A less usage of the cat command is to create a new file with the below syntax. When finished editing the file hit CTRL+D to save and exit the new file.

# cat > new_file.txt
Create New File using Cat Command

Per numerare tutte le righe di output di un file, comprese le righe vuote, utilizza l’opzione -n.

# cat -n file-all.txt
Add Numbers to Lines in File

Per visualizzare solo il numero di ciascuna riga non vuota, utilizza l’opzione -b.

# cat -b file-all.txt
Print Line Numbers in File

Vuoi saperne di più sul comando cat di Linux? allora leggi il nostro articolo su 13 Esempi Utili del Comando ‘cat’ in Linux.

Scopri Come Usare il Comando Tac in Linux

D’altra parte, un comando meno conosciuto e meno utilizzato nei sistemi *nix è il comando tac. Tac è praticamente la versione inversa del comando cat (anche scritto al contrario) che stampa ciascuna riga di un file partendo dall’ultima riga e finendo sulla prima riga sull’output standard della tua macchina.

# tac file-all.txt
Print Content File in Reverse Order

Una delle opzioni più importanti del comando è rappresentata dall’opzione -s, che separa i contenuti del file in base a una stringa o una parola chiave dal file.

# tac file-all.txt --separator "two"
Remove Matching String in File

Inoltre, l’utilizzo più importante del comando tac è che può fornire un grande aiuto per il debug dei file di log, invertendo l’ordine cronologico dei contenuti del log.

$ tac /var/log/auth.log

Or to display the last lines

$ tail /var/log/auth.log | tac
Output di Esempio
tecmint@tecmint ~ $ tac /var/log/auth.log
pr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
....
tecmint@tecmint ~ $ tail /var/log/auth.log | tac
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 15:55:02 tecmint CRON[17194]: pam_unix(cron:session): session closed for user root
Apr  6 15:55:01 tecmint CRON[17195]: pam_unix(cron:session): session closed for user root
...

Come il comando cat, anche il comando tac svolge un ottimo lavoro nel manipolare file di testo, ma dovrebbe essere evitato con altri tipi di file, specialmente file binari o file in cui la prima riga indica il programma che lo eseguirà.

Source:
https://www.tecmint.com/learn-linux-cat-command-and-tac-command/