Bash
Cat gebruiken
Zoeken…
Syntaxis
- cat [OPTIONS] ... [FILE] ...
parameters
Optie | Details |
---|---|
-n | Regelnummers afdrukken |
-v | Toon niet-afdrukbare tekens met behulp van ^ en M-notatie behalve LFD en TAB |
-T | TAB-tekens weergeven als ^ I |
-E | Tekens voor linefeed (LF) weergeven als $ |
-e | Hetzelfde als -vE |
-b | Aantal niet-lege uitvoerregels, overschrijft -n |
-EEN | gelijk aan -vET |
-s | herhaal lege uitvoerregels onderdrukken, s verwijst naar knijpen |
Opmerkingen
cat
kan van zowel bestanden als standaardinvoer lezen en deze samenvoegen tot standaarduitvoer
De inhoud van een bestand afdrukken
cat file.txt
zal de inhoud van een bestand afdrukken.
Als het bestand niet-ASCII-tekens bevat, kunt u deze tekens symbolisch weergeven met cat -v
. Dit kan behoorlijk handig zijn voor situaties waarin controletekens anders onzichtbaar zouden zijn.
cat -v unicode.txt
Heel vaak, voor interactief gebruik, is het echter beter om een interactieve semafoon te gebruiken zoals less
of more
. ( less
is veel krachtiger dan more
en het wordt aangeraden less
vaker dan more
.)
less file.txt
De inhoud van een bestand doorgeven als invoer voor een opdracht. Een aanpak die meestal als beter wordt beschouwd ( UUOC ) is om omleiding te gebruiken.
tr A-Z a-z <file.txt # as an alternative to cat file.txt | tr A-Z a-z
Als de inhoud vanaf het einde achteruit moet worden vermeld, kan de opdracht tac
worden gebruikt:
tac file.txt
Als u de inhoud met regelnummers wilt afdrukken, gebruikt u -n
met cat
:
cat -n file.txt
Als u de inhoud van een bestand in een volledig eenduidige byte voor byte-vorm wilt weergeven, is een hex-dump de standaardoplossing. Dit is goed voor zeer korte fragmenten van een bestand, bijvoorbeeld als u de precieze codering niet kent. Het standaard hex dump-hulpprogramma is od -cH
, hoewel de weergave enigszins omslachtig is; gebruikelijke vervangingen zijn xxd
en hexdump
.
$ printf 'Hëllö wörld' | xxd
0000000: 48c3 ab6c 6cc3 b620 77c3 b672 6c64 H..ll.. w..rld
Regelnummers met uitvoer weergeven
Gebruik de vlag --number
om regelnummers voor elke regel af te drukken. Als alternatief doet -n
hetzelfde.
$ cat --number file
1 line 1
2 line 2
3
4 line 4
5 line 5
Als u lege regels wilt overslaan bij het tellen van regels, gebruikt u --number-nonblank
, of gewoon -b
.
$ cat -b file
1 line 1
2 line 2
3 line 4
4 line 5
Lezen van standaardinvoer
cat < file.txt
De uitvoer is hetzelfde als cat file.txt
, maar het leest de inhoud van het bestand van standaardinvoer in plaats van rechtstreeks uit het bestand.
printf "first line\nSecond line\n" | cat -n
Het echo-commando vóór |
voert twee lijnen uit. De opdracht cat werkt op de uitvoer om regelnummers toe te voegen.
Bestanden samenvoegen
Dit is het primaire doel van cat
.
cat file1 file2 file3 > file_all
cat
kan ook op dezelfde manier worden gebruikt om bestanden samen te voegen als onderdeel van een pijplijn, bijv
cat file1 file2 file3 | grep foo
Schrijf naar een bestand
cat >file
Hiermee kunt u de tekst op de terminal schrijven die wordt opgeslagen in een bestand met de naam bestand .
cat >>file
zal hetzelfde doen, behalve dat de tekst aan het einde van het bestand wordt toegevoegd.
NB: Ctrl + D om het schrijven van tekst op terminal te beëindigen (Linux)
Een hier-document kan worden gebruikt om de inhoud van een bestand in een opdrachtregel of een script te plaatsen:
cat <<END >file
Hello, World.
END
Het token na het <<
omleidingssymbool is een willekeurige tekenreeks die alleen op een regel moet voorkomen (zonder voorloop- of achterwaartse witruimte) om het einde van dit document aan te geven. U kunt citaten toevoegen om te voorkomen dat de shell opdrachtvervanging en variabele interpolatie uitvoert:
cat <<'fnord'
Nothing in `here` will be $changed
fnord
(Zonder de aanhalingstekens, here
zou worden uitgevoerd als een opdracht en $changed
zou worden vervangen door de waarde van de variabele changed
-. Of niets, als het was niet gedefinieerd)
Niet-afdrukbare tekens weergeven
Dit is handig om te zien of er niet-afdrukbare tekens of niet-ASCII-tekens zijn.
Als u bijvoorbeeld de code van internet hebt geplakt, hebt u mogelijk aanhalingstekens zoals ”
plaats van standaard "
.
$ cat -v file.txt
$ cat -vE file.txt # Useful in detecting trailing spaces.
bv
$ echo '” ' | cat -vE # echo | will be replaced by actual file.
M-bM-^@M-^] $
Misschien wilt u ook cat -A
(A voor alles) gebruiken dat equivalent is aan cat -vET
. Het toont TAB-tekens (weergegeven als ^I
), niet-afdrukbare tekens en het einde van elke regel:
$ echo '” `' | cat -A
M-bM-^@M-^]^I`$
Gezipte bestanden samenvoegen
Bestanden gecomprimeerd door gzip
kunnen direct worden samengevoegd tot grotere gzip-bestanden.
cat file1.gz file2.gz file3.gz > combined.gz
Dit is een eigenschap van gzip
die minder efficiënt is dan de invoerbestanden samenvoegen en het resultaat gzippen:
cat file1 file2 file3 | gzip > combined.gz
Een complete demonstratie:
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
Wat resulteert in
Hello world!
Howdy world!
Merk op dat greetings.txt.gz
een enkel bestand is en wordt gedecomprimeerd als het enkele bestand greeting.txt
. tar -czf hello.txt howdy.txt > greetings.tar.gz
dit met tar -czf hello.txt howdy.txt > greetings.tar.gz
, dat de bestanden gescheiden houdt binnen de tarball.