Základy práce s príkazmi v Linuxe

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 rozsahu
  • sun|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. pri ab?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

Poznámky

Stránka je súčasťou projektu Linux na sysop.sk.

Pridajte Komentár

Návrat hore