Príkaz je program na vykonanie špecifickej operácie.
Presmerovanie výstupu v Linuxe
Linux používa pre komunikáciu 3 kanály:
- channel 0 (standard input) v podstate zaznamenáva vstup z klávesnice
- channel 1 (standard output) vypíše výstup z programu
- channel 2 (standard error) vypíše upozornenie alebo chybu z programu
Presmerovanie pomocou operátorov > a >>
Operátor >
v príkaze presmeruje obsah výstup do súboru.
Príklad na presmerovanie zobrazeného textu do nového súboru. Ak by súbor existoval, tak pôvodný obsah bude prepísaný. V ďalšom kroku zobrazíme obsah súboru pre potvrdenie správnosti vykonania príkazu.
$ echo "Hello World!" > data.txt
$ cat data.txt
Hello World!
V ďalšom príklade pomocou operátora >>
presmerujem výstup na koniec existujúceho súboru bez prepísania pôvodného obsahu. Ak by súbor neexistoval, tak príkaz vytvorí nový súbor.
$ echo "Hello You!" >> data.txt
$ cat data.txt
Hello World!
Hello You!
Presmerovanie pomocou operátorov 2> a 2>>
Operátor 2>
presmeruje do výstupu len chybové správy z kanála 2. Chybovú správu o neexistujúcom súbore zapíše do ďalšieho súboru. Podobne ak v prvom príklade vytvorí nový obsah v súbore.
Operátor 2>>
by zapísal obsah do nového súboru alebo na koniec existujúceho.
Znak &
v operátoroch &>
a &>>
pri kombinácie vyýstupu z kanálov 1 a 2.
$ cat data5.txt 2> data-errors.txt
$ cat data-errors.txt
cat: data5.txt: No such file or directory
Presmerovanie pomocou operátorov < a <<
Operátor <
presmeruje vstup do príkazového riadku zo súboru namiesto klávesnice. V príklade pomocou príkazu tr
na nahradenie alebo vymazania znaku vypíšeme obsah súboru data-errors.txt bez písmena N.
$ tr -d "N" < data-errors.txt
cat: data5.txt: o such file or directory
Operátor <<
funguje ako tzv. here document dátový prúd. Časť kódu alebo textu je vložená do príkazového riadku alebo skriptov, čo je užitočné pri vkladaní multiriadkových reťazcov. Shell bude vykonávať príkaz až kým nepríde ku ukončovacej sekvencii napríklad EOF (end of file).
command << EOF
document
EOF
V príklade budeme písať obsah v príkazovom riadku až kým nenapíšeme EOF a potom sa nám výsledok zobrazí príkazom cat.
$ cat << EOF
> Hello World!
> Hello You!
> EOF
Hello World!
Hello You!
Spájanie príkazov
Pre spustenie viac príkazov v jednom kroku sa používa tzv. pipe. Spájanie príkazov uskutočníme pomocou znaku |
.
Príklad na zobrazenie obsahu po postupne po obrazovkách.
cat /etc/passwd | more
Regulárne príkazy
Regulárny príkaz (regular expressions, regexp) je textový reťazec, obsahujúci vyhľadávací vzor, ktorý popisuje celú množinu reťazcov, na základe určitých pravidiel.
Základné možnosti regulárnych príkazov
.
ľubovoľný jeden znak (okrem nového riadku)[abcABC]
ľubovoľný jeden znak z triedy vymedzenej obsahom zátvoriek[^abcABC]
ľubovoľný jeden znak z triedy okrem vymedzených obsahom zátvoriek[a-z]
ľubovoľný jeden znak v rozsahu[^a-z]
ľubovoľný jeden znak okrem znakov vymedzených v rozsahusun|moon
zvislá čiara značí „alebo“, teda jeden alebo druhý reťazec^
začiatok riadku$
koniec riadku?
rozšírený regulárny výraz (extended-regexp), kvantifikátor nula alebo jeden znak, napr. priab?c
je správne „ac“ a „abc“*
rozšírený regulárny výraz, kvantifikátor (tzv. Kleeneho operátor) nula alebo viac výskytov v rozsahu, napr.ab*c
je správne „ac“, „abc“, „abbc“, „abbbc“…+
rozšírený regulárny výraz, kvantifikátor jeden alebo viac výskytov v rozsahu, napr.ab+c
je správne „abc“, „abbc“. Neplatí reťazec „ac“ z predošlých možností.
Použitie regulárnych príkazov
Príklad s výpisom súboru.
$ cat data.txt
Janko Hrach
Janka Danka
Peter
Krasavica
Zobraz riadky s daným reťazcom.
$ grep "nk" data.txt
Janko Hrach
Janka Danka
Zobraz riadky s reťazcom, kde sa nachádza aspoň jeden znak zo skupiny vymedzenej v hranatých zátvorkách.
$ grep [at] data.txt
Janko Hrach
Janka Danka
Peter
Krasavica
Zobraz riadky, ktoré obsahú reťazce ko, ter a asa. Operátor -E určuje rozšírený regulárny výraz.
$ grep -E "ko|ter|asa" data.txt
Janko Hrach
Peter
Krasavica
Zobraz riadky, ktoré začínajú ľubovoľnými dvoma znakmi a pokračujú reťazcom nk.
$ grep "^..nk" data.txt
Janko Hrach
Janka Danka
Zobraz počet riadkov, čo začínajú alebo nemusia so znakom J a pokračujú reťazcom an.
$ grep -cE "^J?an" data.txt
2
Zobraz riadky končiace na a.
$ grep "a$" data.txt
Janka Danka
Krasavica
Zobraz riadok, ktorý obsahuje z predošlého reťazca et jeden alebo viac znakov.
$ grep -E "et.+" data.txt
Peter