cat (Unix)
cat | |
ukážka použitia cat | |
Základné informácie | |
---|---|
Autor | Ken Thompson, Dennis Ritchie |
Vývojár | AT&T Bell Laboratories |
Operačný systém | Unix, UNIX-like, Plan 9, Inferno |
Typ softvéru | príkaz (softvér) |
prvé vydaná verzia | 3. november 1971 |
Pozri aj Informačný portál |
cat je štandarná unixová utilita, ktorá číta sekvenčne súbory a ich obsah vypisuje na štandardný výstup. Názov je odvodený z angl. concatenate (spájať, zreťazovať).
História
[upraviť | upraviť zdroj]cat
bol súčasťou už raných verziách Unixu (napr. vo Version 1). V PDP-7 nahradil predtým existujúcu utilitu pr
, ktorá vypisovala obsah jedného súboru na obrazovku.[1]
Verziu cat
zahrnutá v GNU coreutils napísal Torbjorn Granlund a Richard Stallman.[2]
Použitie
[upraviť | upraviť zdroj]Single Unix Specification definuje činnosť cat
ako čítanie súborov v poradí, ako boli zadané ako argumenty programu, a zápis ich obsahu, v rovnakom poradí, na štandardný výstup. Špecifikácia určuje podporu jedného parametra u – nebufferovaný výstup (angl. unbuffered output), t. j. každý bajt je hneď po načítaní zapísaný na výstup. Niektoré operačné systémy, napr. tie ktoré používajú GNU Coreutils to robia štandardne a tento parameter ignorujú.[3]
Ak je ako názov súboru zadaný spojovník (-), potom cat
číta zo štandardného vstupu. Spojovník sa môže uviesť aj ako položka pri čítaní viacerých súborov. Pokiaľ nie je uvedený žiaden súbor, cat
číta iba zo štandardného vstupu.
Syntax príkazu je:
cat [parametre] [názvy súborov]
Parametre
[upraviť | upraviť zdroj]Príklady niektorých parametrov cat
:[4]
- -b (GNU: --number-nonblank), number non-blank output lines
- -e implies -v but also display end-of-line characters as $ (GNU only: -E the same, but without implying -v)
- -n (GNU: --number), number all output lines
- -s (GNU: --squeeze-blank), squeeze multiple adjacent blank lines
- -t implies -v, but also display tabs as ^I (GNU: -T the same, but without implying -v)
- -u use unbuffered I/O for stdout. POSIX does not specify the behavior without this option.
- -v (GNU: --show-nonprinting), displays nonprinting characters, except for tabs and the end of line character
V preklade:
- -b (GNU: --number-nonblank), očísluje neprázdne riadky
- -e zahŕňa -v, ale tiež zobrazí konce riadkov znakom $ (pri GNU -E to isté, ale bez -v)
- -n (GNU: --number), očísluje všetky riadky
- -s (GNU: --squeeze-blank), zlúči viacero susediacich prázdnych riadkov
- -t zahŕňa -v, ale tiež zobrazí znak TAB ako ^I (pri GNU -T to isté, ale bez -v)
- -u používa nebufferovaný I/O stdout. Štandard POSIX nešpecifikuje správanie bez tohto parametra.
- -v (GNU: --show-nonprinting), zobrazí netlačiteľné znaky, okrem znaku TAB a konca riadku.
Použitie
[upraviť | upraviť zdroj]cat
môže byť použitý v rúre, kde sa obsah súborov dodá programu, ktorý očakáva (textové alebo binárne) dáta zo štandardného vstupu. cat
pri zreťazení neodstraňuje netextové bajty. Zreťazenie má dva hlavné varianty použitia – pre textové súbory a pre formátovo-kompatibilné typy binárnych súborov.
Spájanie textov je limitované na textové súbory, ktoré používajú rovnaké kódovania, napríklad ASCII. cat
nie je použiteľné na spájanie textov, ktoré obsahujú Unicode Byte Order Mark alebo ktoré majú rozdielne kódovania.
Pre mnohé (štruktúrované) binárne dáta, výsledná kombinácia súborov môže dávať nesprávne výsledky, napríklad kvôli jedinečným hlavičkám a pätám, ktoré budú v pospájanom výstupe duplikované. Pre niektoré typy mediálnych súborov je však takto spracovaný výsledok korektný, čo umožňuje efektívne pridávať ďalšie sekcie k existujúcemu súboru. Zvlášť niektoré video streamy sa môžu takto spájať bez problémov, napríklad formát MPEG streamov (MPEG-1 a MPEG-2) alebo DV (Digital Video).
Príklady
[upraviť | upraviť zdroj]Príkaz | Vysvetlenie |
---|---|
cat súbor1.txt | Zobrazí obsah súboru |
cat súbor1.txt súbor2.txt | Spojí dva súbory a zobrazí výsledok v termináli |
cat súbor1.txt súbor2.txt > novýkombinovanýsúbor.txt | Spojí dva súbory a zapíše ich do nového súboru |
cat > novýsúbor.txt | Vytvorí nový súbor nazvaný novýsúbor.txt. Vyžaduje zadať vstup a Ctrl+D ukončí zadávanie. Text bude uložený v súbore novýsúbor.txt. |
cat -n súbor1.txt súbor2.txt > novýčislovanýsúbor.txt | Niektoré implementácie cat (s parametrom -n) umožňujú aj vypísať čísla riadkov. |
cat súbor1.txt > súbor2.txt | Skopíruje obsah súboru súbor1.txt do súboru súbor2.txt |
cat súbor1.txt >> súbor2.txt | Pridá obsah súboru súbor1.txt na koniec súboru súbor2.txt |
cat súbor1.txt súbor2.txt súbor3.txt | sort > test4 | Zlúči súbory, zoradí všetky riadky a výstup zapíše do nového vytvoreného súboru |
cat súbor1.txt súbor2.txt | less | Spustí program „less“ so vstupom zo zlúčených súborov súbor1 a súbor2 |
command | cat | Zruší špeciálne správanie programu „command“ (napr. interaktívne stránkovanie dlhšieho textu) aktívne pri priamom výstupe na terminál |
Referencie
[upraviť | upraviť zdroj]- ↑ Bell Labs. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 [online]. 1987. (CSTR.) 139. Dostupné online.
- ↑ https://linux.die.net/man/1/cat
- ↑ GNU Coreutils. „GNU Coreutils manual“, GNU, stav ku 1. marcu 2017.
- ↑ OpenBSD manuálová stránka a verzie GNU Core Utiltites
Pozri aj
[upraviť | upraviť zdroj]- paste
- split – príkaz, rozdeľujúci súbor do viacerých súborov, ktoré je následne možné s
cat
spojiť naspäť - zcat
- less
Externé odkazy
[upraviť | upraviť zdroj]- The Single UNIX Specification, Issue 7 from The Open Group : concatenate and print files – Commands & Utilities Reference,
- UNIX Style, or cat -v Considered Harmful – Kniha od Rob Pike, ktorá vhodné zobrazuje unixové príkazy pekne na príkladoch.
- cat(1) originálna manuálová stránka First Edition Unixu.
- GNU Coreutils reference : concatenate and write files –
- OpenBSD General Commands Manual : concatenate and print files –
- FreeBSD General Commands Manual –
- Plan 9 Programmer's Manual, Volume 1 –