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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow