Bash
Använda katt
Sök…
Syntax
- cat [OPTIONS] ... [FILE] ...
parametrar
Alternativ | detaljer |
---|---|
-n | Skriv ut radnummer |
-v | Visa tecken som inte skriver ut med hjälp av ^ och M-notering utom LFD och TAB |
-T | Visa TAB-tecken som ^ I |
-E | Visa radmatningstecken (LF) som $ |
-e | Samma som -vE |
-b | Antal nonempty-utgångslinjer, åsidosätter -n |
-A | motsvarande -VET |
-s | dämpa upprepade tomma utgångslinjer, s hänvisar till klämma |
Anmärkningar
cat
kan läsa från både filer och standardingångar och sammanfoga dem till standardutdata
Skriva ut innehållet i en fil
cat file.txt
kommer att skriva ut innehållet i en fil.
Om filen innehåller tecken som inte är ASCII kan du visa dessa tecken symboliskt med cat -v
. Detta kan vara ganska användbart i situationer där kontrolltecken annars skulle vara osynliga.
cat -v unicode.txt
Men för interaktiv användning är det dock bättre att använda en interaktiv personsökare som less
eller more
. ( less
är mycket kraftfullare än more
och det rekommenderas att använda less
oftare än more
.)
less file.txt
För att skicka innehållet i en fil som inmatning till ett kommando. En metod som vanligtvis ses som bättre ( UUOC ) är att använda omdirigering.
tr A-Z a-z <file.txt # as an alternative to cat file.txt | tr A-Z a-z
Om innehållet måste listas bakåt från dess slut kan kommandot tac
användas:
tac file.txt
Om du vill skriva ut innehållet med radnummer använder du -n
med cat
:
cat -n file.txt
För att visa innehållet i en fil i en helt otvetydig byte-by-byte-form är en hexdump standardlösningen. Det här är bra för mycket korta utdrag av en fil, till exempel när du inte vet den exakta kodningen. Standardhex-dumpningsverktyget är od -cH
, även om representationen är något besvärlig; vanliga ersättningar inkluderar xxd
och hexdump
.
$ printf 'Hëllö wörld' | xxd
0000000: 48c3 ab6c 6cc3 b620 77c3 b672 6c64 H..ll.. w..rld
Visa radnummer med utgång
Använd flaggan - nummer för att skriva ut --number
före varje rad. Alternativt gör -n
samma sak.
$ cat --number file
1 line 1
2 line 2
3
4 line 4
5 line 5
För att hoppa över tomma rader när du räknar linjer, använd --number-nonblank
eller helt enkelt -b
.
$ cat -b file
1 line 1
2 line 2
3 line 4
4 line 5
Läs från standardinmatning
cat < file.txt
Output är samma som cat file.txt
, men den läser filens innehåll från standardinmatning istället för direkt från filen.
printf "first line\nSecond line\n" | cat -n
Echo-kommandot före |
matar ut två rader. Kattkommandot verkar på utgången för att lägga till radnummer.
Sammanfatta filer
Detta är cat
primära syfte.
cat file1 file2 file3 > file_all
cat
kan också användas på liknande sätt för att sammanfoga filer som en del av en pipeline, t.ex.
cat file1 file2 file3 | grep foo
Skriv till en fil
cat >file
Det låter dig skriva text på terminalen som kommer att sparas i en fil med namnet fil.
cat >>file
gör samma sak, förutom att den lägger till texten i slutet av filen.
OBS: Ctrl + D för att avsluta skriva text på terminal (Linux)
Ett här dokument kan användas för att inlinera innehållet i en fil i en kommandorad eller ett skript:
cat <<END >file
Hello, World.
END
Token efter <<
omdirigeringssymbolen är en godtycklig sträng som måste uppstå ensam på en linje (utan ledande eller släpande mellanrum) för att indikera slutet på här dokumentet. Du kan lägga till citat för att förhindra att skalet utför kommandosubstitution och variabel interpolering:
cat <<'fnord'
Nothing in `here` will be $changed
fnord
(Utan citat skulle here
köras som ett kommando, och $changed
skulle ersättas med värdet på variabeln changed
- eller ingenting, om den var odefinierad.)
Visa icke utskrivbara tecken
Detta är användbart för att se om det finns några tecken som inte kan skrivas ut eller tecken som inte är ASCII.
t.ex. om du har kopierat in koden från webben kan du ha citat som ”
istället för standard "
.
$ cat -v file.txt
$ cat -vE file.txt # Useful in detecting trailing spaces.
t.ex
$ echo '” ' | cat -vE # echo | will be replaced by actual file.
M-bM-^@M-^] $
Du kanske också vill använda cat -A
(A för alla) som motsvarar cat -vET
. Det kommer att visa TAB-tecken (visas som ^I
), icke utskrivbara tecken och slutet på varje rad:
$ echo '” `' | cat -A
M-bM-^@M-^]^I`$
Sammanfoga gzippade filer
Filer komprimerade med gzip
kan direkt sammanlänkas till större gzippade filer.
cat file1.gz file2.gz file3.gz > combined.gz
Detta är en egenskap hos gzip
som är mindre effektiv än att sammanfoga ingångsfilerna och gzippa resultatet:
cat file1 file2 file3 | gzip > combined.gz
En komplett demonstration:
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
Vilket resulterar i
Hello world!
Howdy world!
Observera att greetings.txt.gz
är en enda fil och dekomprimeras som den enda filen greeting.txt
. Kontrast detta med tar -czf hello.txt howdy.txt > greetings.tar.gz
, som håller filerna separata inuti tarballen.