Bash
Usando cat
Ricerca…
Sintassi
- cat [OPZIONI] ... [FILE] ...
Parametri
Opzione | Dettagli |
---|---|
-n | Stampa numeri di linea |
-v | Mostra caratteri non stampabili usando le annotazioni ^ e M tranne LFD e TAB |
-T | Mostra caratteri TAB come ^ I |
-E | Mostra caratteri avanzamento riga (LF) come $ |
-e | Uguale a -vE |
-b | Numero di righe di output non vuote, sostituzioni -n |
-UN | equivalente a -vET |
-S | sopprimere linee di uscita vuote ripetute, s si riferisce alla compressione |
Osservazioni
cat
può leggere sia da file che da input standard e li concatena sullo standard output
Stampa del contenuto di un file
cat file.txt
stamperà il contenuto di un file.
Se il file contiene caratteri non ASCII, è possibile visualizzare questi caratteri simbolicamente con cat -v
. Questo può essere abbastanza utile per situazioni in cui i personaggi di controllo sarebbero altrimenti invisibili.
cat -v unicode.txt
Molto spesso, per l'uso interattivo, è meglio usare un cercapersone interattivo come se fosse di less
o more
. ( less
è molto più potente di more
e si consiglia di usare less
spesso di more
.)
less file.txt
Per passare il contenuto di un file come input per un comando. Un approccio solitamente visto come migliore ( UUOC ) consiste nell'utilizzare il reindirizzamento.
tr A-Z a-z <file.txt # as an alternative to cat file.txt | tr A-Z a-z
Nel caso in cui il contenuto debba essere elencato a ritroso dalla sua fine, il comando tac
può essere usato:
tac file.txt
Se vuoi stampare il contenuto con i numeri di riga, usa -n
con cat
:
cat -n file.txt
Per visualizzare il contenuto di un file in una forma byte-by-byte completamente non ambigua, un dump esadecimale è la soluzione standard. Questo è utile per frammenti di un file molto brevi, come quando non si conosce la codifica precisa. L'utility hex dump standard è od -cH
, sebbene la rappresentazione sia leggermente ingombrante; sostituzioni comuni includono xxd
e hexdump
.
$ printf 'Hëllö wörld' | xxd
0000000: 48c3 ab6c 6cc3 b620 77c3 b672 6c64 H..ll.. w..rld
Mostra numeri di riga con uscita
Utilizzare il flag --number
per stampare i numeri di riga prima di ogni riga. In alternativa, -n
fa la stessa cosa.
$ cat --number file
1 line 1
2 line 2
3
4 line 4
5 line 5
Per saltare le linee vuote durante il conteggio delle linee, usa il valore --number-nonblank
, o semplicemente -b
.
$ cat -b file
1 line 1
2 line 2
3 line 4
4 line 5
Leggi dallo standard input
cat < file.txt
L'output è lo stesso di cat file.txt
, ma legge il contenuto del file dall'input standard anziché direttamente dal file.
printf "first line\nSecond line\n" | cat -n
Il comando echo prima di |
emette due righe. Il comando cat agisce sull'output per aggiungere numeri di riga.
File concatenati
Questo è lo scopo principale di cat
.
cat file1 file2 file3 > file_all
cat
può anche essere usato in modo simile ai file concatenati come parte di una pipeline, ad es
cat file1 file2 file3 | grep foo
Scrivi su un file
cat >file
Ti permetterà di scrivere il testo sul terminale che verrà salvato in un file denominato file .
cat >>file
farà lo stesso, tranne che aggiungerà il testo alla fine del file.
NB: Ctrl + D per terminare la scrittura del testo sul terminale (Linux)
Un documento qui può essere utilizzato per allineare il contenuto di un file a una riga di comando o a uno script:
cat <<END >file
Hello, World.
END
Il token dopo l' <<
simbolo di reindirizzamento è una stringa arbitraria che deve avvenire su una riga (senza spazi iniziale o finale) per indicare la fine del documento qui. È possibile aggiungere citazioni per impedire alla shell di eseguire la sostituzione di comando e l'interpolazione variabile:
cat <<'fnord'
Nothing in `here` will be $changed
fnord
(Senza le virgolette, here
verrebbe eseguito come un comando, e $changed
sarebbe sostituito con il valore della variabile changed
- o nulla, se fosse indefinito.)
Mostra caratteri non stampabili
Questo è utile per vedere se ci sono caratteri non stampabili o caratteri non ASCII.
Ad esempio, se hai copiato il codice dal web, potresti avere citazioni come ”
invece dello standard "
.
$ cat -v file.txt
$ cat -vE file.txt # Useful in detecting trailing spaces.
per esempio
$ echo '” ' | cat -vE # echo | will be replaced by actual file.
M-bM-^@M-^] $
Potresti anche voler usare cat -A
(A per tutti) che è equivalente a cat -vET
. Visualizzerà i caratteri TAB (visualizzati come ^I
), i caratteri non stampabili e la fine di ogni riga:
$ echo '” `' | cat -A
M-bM-^@M-^]^I`$
Concatena i file compressi con gzip
I file compressi da gzip
possono essere concatenati direttamente in file gzip di dimensioni maggiori.
cat file1.gz file2.gz file3.gz > combined.gz
Questa è una proprietà di gzip
che è meno efficiente di concatenare i file di input e gzipping del risultato:
cat file1 file2 file3 | gzip > combined.gz
Una dimostrazione completa:
echo 'Hello world!' > hello.txt
echo 'Howdy world!' > howdy.txt
gzip hello.txt
gzip howdy.txt
cat hello.txt.gz howdy.txt.gz > greetings.txt.gz
gunzip greetings.txt.gz
cat greetings.txt
Quale risulta in
Hello world!
Howdy world!
Si noti che greetings.txt.gz
è un singolo file e viene decompresso come singolo file greeting.txt
. tar -czf hello.txt howdy.txt > greetings.tar.gz
con tar -czf hello.txt howdy.txt > greetings.tar.gz
, che mantiene separati i file all'interno del tarball.