Ricerca nel sito web

Come utilizzare i comandi "cat" e "tac" con esempi in Linux


Questo articolo fa parte della nostra serie Linux Tricks and Tips, in questo articolo tratteremo alcuni usi di base del comando cat (comando usato più frequentemente in Linux) e tac ( reverse of cat command – stampa i file in ordine inverso) con alcuni esempi pratici.

Leggi anche: 13 utili esempi di comandi "cat" in Linux

Utilizzo di base di Cat Command in Linux

Il comando Cat, acronimo di Concatenate, è uno dei comandi più utilizzati nei sistemi *nix. L'utilizzo più elementare del comando è leggere i file e visualizzarli su stdout, ovvero visualizzare il contenuto dei file sul tuo terminale.

cat file.txt

Un altro utilizzo del comando cat è leggere o combinare più file insieme e inviare l'output a un monitor come illustrato negli esempi seguenti.

cat file1.txt file2.txt file3.txt

Il comando può essere utilizzato anche per concatenare (unire) più file in un unico file utilizzando l'operatore di reindirizzamento Linux “> ”.

cat file1.txt file2.txt file3.txt > file-all.txt

Utilizzando il reindirizzamento append puoi aggiungere il contenuto di un nuovo file in fondo al file-all.txt con la seguente sintassi.

cat file4.txt >> file-all.txt

Il comando cat può essere utilizzato per copiare il contenuto del file in un nuovo file. Il nuovo file può essere rinominato arbitrariamente. Ad esempio, copia il file dalla posizione corrente nella directory /tmp/.

cat file1.txt > /tmp/file1.txt 

Copia il file dalla posizione corrente nella directory /tmp/ e modificane il nome.

cat file1.txt > /tmp/newfile.cfg

Un utilizzo minore del comando cat consiste nel creare un nuovo file con la sintassi seguente. Una volta terminata la modifica del file, premi CTRL+D per salvare e uscire dal nuovo file.

cat > new_file.txt

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

cat -n file-all.txt

Per visualizzare solo il numero di ciascuna riga non vuota utilizzare l'opzione -b.

cat -b file-all.txt

Vuoi saperne di più sul comando cat di Linux? quindi leggi il nostro articolo su 13 utili esempi di comandi "cat" in Linux.

Scopri come utilizzare 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 ogni riga di un file iniziando dalla riga inferiore e finendo sulla riga superiore secondo lo standard della tua macchina produzione.

tac file-all.txt

Una delle opzioni più importanti del comando è rappresentata dallo switch -s, che separa il contenuto del file in base ad una stringa o ad una parola chiave dal file.

tac file-all.txt --separator "two"

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

tac /var/log/auth.log

Or to display the last lines

tail /var/log/auth.log | tac
Uscita del campione
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, tac fa un ottimo lavoro nella manipolazione dei file di testo, ma dovrebbe essere evitato in altri tipi di file, in particolare file binari o file in cui la prima riga denota il programma che lo eseguirà.