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.