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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow