Gatto è uno strumento abbastanza semplice progettato per concatenare e scrivere file sullo schermo, noto come output standard (stdout). Fa parte di GNU Core Utils rilasciato con licenza GPLv3+. Puoi aspettarti di trovarlo praticamente in qualsiasi distribuzione Linux o altro ambiente operativo Unix, come FreeBSD o Solaris. L'uso più semplice di cat è mostrare il contenuto di un file. Ecco un esempio con un file chiamato hello.world :
$ ls
hello.world
$ cat hello.world
Hello World!
$
Il terminale Linux
- I 7 migliori emulatori di terminale per Linux
- 10 strumenti da riga di comando per l'analisi dei dati in Linux
- Scarica ora:cheat sheet SSH
- Cheat sheet sui comandi avanzati di Linux
- Esercitazioni sulla riga di comando di Linux
Il modo più comune in cui uso il gatto il comando serve per visualizzare i file di configurazione, come quelli in /etc directory. Il gatto comando visualizzerà un file senza rischiare di danneggiarlo. Se apro un file di configurazione critico utilizzando un editor come Vi o Nano, potrei inavvertitamente apportare modifiche indesiderate al file. Il gatto command non è un editor e quindi non comporta alcun rischio di apportare modifiche al contenuto di un file.
Se devo visualizzare un file più lungo, posso utilizzare una pipe con altro comando:
$ cat <somelongfile> | more
Gatto può visualizzare più file contemporaneamente. Se vogliamo vedere due file:hello.world e arrivederci.world —includeremmo entrambi i nomi dei file come argomenti nel comando:
$ cat hello.world goodbye.world
Hello World!
Good Bye World!
$
Gatto può anche numerare le righe di un file durante l'output. Ci sono due comandi per farlo, come mostrato nella documentazione della guida:
-b, --number-nonblank number nonempty output lines, overrides -n
-n, --number number all output lines
Se utilizzo -b comando con hello.world file, l'output sarà numerato in questo modo:
$ cat -b hello.world
1 Hello World!
$
Nell'esempio sopra, c'è una riga vuota. Possiamo determinare il motivo per cui questa riga vuota viene visualizzata utilizzando -n argomento:
$ cat -n hello.world
1 Hello World!
2
$
Ora vediamo che c'è una riga vuota in più. Questi due argomenti stanno operando sull'output finale piuttosto che sul contenuto del file, quindi se dovessimo usare il -n opzione con entrambi i file, la numerazione conteggerà le righe come segue:
$ cat -n hello.world goodbye.world
1 Hello World!
2
3 Good Bye World!
4
$
Un'altra opzione che può essere utile è -s per comprimi il vuoto . Questo argomento dice a cat per ridurre l'output di righe vuote ripetute fino a una riga. Ciò è utile durante la revisione di file con molte righe vuote, poiché si adatta efficacemente a più testo sullo schermo. Supponiamo di avere un file con tre righe distanziate da diverse righe vuote, come in questo esempio, greetings.world :
$ cat greetings.world
Greetings World!
Take me to your Leader!
We Come in Peace!
$
Usando i -s l'opzione consente di risparmiare spazio sullo schermo:
$ cat -s greetings.world
Greetings World!
Take me to your Leader!
We Come in Peace!
$
Gatto viene spesso utilizzato per copiare il contenuto di un file in un altro file. Potresti chiederti:"Perché non usare semplicemente cp ?" Ecco come posso creare un nuovo file, chiamato both.files , che contiene il contenuto di ciao e arrivederci file:
$ cat hello.world goodbye.world > both.files
$ cat both.files
Hello World!
Good Bye World!
$
zcat
C'è un'altra variazione sul gatto comando noto come zcat . Questo comando è in grado di visualizzare i file che sono stati compressi con Gzip senza dover decomprimere i file con gunzip comando. Per inciso, questo preserva anche lo spazio su disco, che è l'intero motivo per cui i file sono compressi!
Lo zcat command è un po' più eccitante perché può far risparmiare molto tempo agli amministratori di sistema che trascorrono molto tempo a rivedere i file di registro di sistema. Dove possiamo trovare i file di registro compressi? Dai un'occhiata a /var/log sulla maggior parte dei sistemi Linux. Sul mio sistema, /var/log contiene diversi file, come syslog.2.gz e syslog.3.gz . Questi file sono il risultato del sistema di gestione dei registri, che ruota e comprime i file di registro per risparmiare spazio su disco e impedire che i registri crescano fino a dimensioni di file ingestibili. Senza zcat , dovrei decomprimere questi file con gunzip comando prima di visualizzarli. Per fortuna, posso usare zcat :
$ cd /var/log
$ ls *.gz
syslog.2.gz syslog.3.gz
$
$ zcat syslog.2.gz |more
Jan 30 00:02:26 workstation systemd[1850]: Starting GNOME Terminal Server...
Jan 30 00:02:26 workstation dbus-daemon[1920]: [session uid=2112 pid=1920] Successful
ly activated service 'org.gnome.Terminal'
Jan 30 00:02:26 workstation systemd[1850]: Started GNOME Terminal Server.
Jan 30 00:02:26 workstation org.gnome.Terminal.desktop[2059]: # watch_fast: "/org/gno
me/terminal/legacy/" (establishing: 0, active: 0)
Jan 30 00:02:26 workstation org.gnome.Terminal.desktop[2059]: # unwatch_fast: "/org/g
nome/terminal/legacy/" (active: 0, establishing: 1)
Jan 30 00:02:26 workstation org.gnome.Terminal.desktop[2059]: # watch_established: "/
org/gnome/terminal/legacy/" (establishing: 0)
--More--
Possiamo anche passare entrambi i file a zcat se vogliamo esaminarli entrambi senza interruzioni. A causa del funzionamento della rotazione del registro, è necessario passare i nomi dei file in ordine inverso per preservare l'ordine cronologico dei contenuti del registro:
$ ls -l *.gz
-rw-r----- 1 syslog adm 196383 Jan 31 00:00 syslog.2.gz
-rw-r----- 1 syslog adm 1137176 Jan 30 00:00 syslog.3.gz
$ zcat syslog.3.gz syslog.2.gz |more
Il gatto il comando sembra semplice ma è molto utile. Lo uso regolarmente. Inoltre, non è necessario dargli da mangiare o accarezzarlo come un vero gatto. Come sempre, ti suggerisco di rivedere le pagine man (man cat ) per il gatto e zcat comandi per saperne di più su come può essere utilizzato. Puoi anche utilizzare la --help argomento per una rapida sinossi degli argomenti della riga di comando.