cat (Unix)

z Wikipédie, slobodnej encyklopédie
Skočit na navigaci Skočit na vyhledávání

cat
Cpuinfo about Intel Celeron M 410.png
ukážka použitia cat
Základné informácie
AutorKen Thompson,
Dennis Ritchie
VývojárAT&T Bell Laboratories
Operačný systémUnix, UNIX-like, Plan 9, Inferno
Typ softvérupríkaz (softvér)
prvé vydaná verzia3. november 1971

Computer n screen.svg 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]

  1. Bell Labs. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 [online]. 1987. (CSTR.) 139. Dostupné online.
  2. https://linux.die.net/man/1/cat
  3. GNU Coreutils. „GNU Coreutils manual“, GNU, stav ku 1. marcu 2017.
  4. 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]

Wikiknihy
Na projekte Wikiknihy nájdete viac o tejto téme: