Menu Zavrieť

Práca s príkazovým riadkom

Príkazové procesory (CLI – command line interface) sú aplikácie, ktoré komunikujú priamo s operačným systémom. Ku svojej práci obvykle nepotrebujú žiadne grafické rozhranie – inštrukcie a príkazy posielajú priamo systému. Vynechanie grafického rozhrania všetko zrýchľuje.

Príkazový riadok môžete spustiť dvoma spôsobmi (v skutočnosti ich je viac, ale tieto sa používajú najčastejšie):

  • kliknete na tlačítko Start -> Programs -> Accessories -> Command Prompt
  • kliknete na tlačítko Start -> Run napíšete cmd a stlačíte ENTER (tip: ešte rýchlejšie je použitie klávesových skratiek: „WIN Key“ + R)

Defaultne príkazový riadok je 80 znakov široký a zobrazuje 25 riadkov textu. Toto správanie (ako aj nastavenie ďalších parametrov) môžte zmeniť viacerými spôsobmi, ako napr. ďalšími parametrami pri spustení, prípadne upraveným štartovacím súborom, ktorý je umiestnený v adresári %SystemRoot%\System32.

Zobrazí sa vám príkazový riadok so zobrazeným aktuálnym pracovným adresárom, očakávajúci zadanie príkazu. Tieto príkazy sa delia na:

  • interné príkazy – zabudované do príkazového procesora, t.j. nemajú samostatné spustiteľné súbory (cd ,dir, rd…)
  • externé príkazy – majú vlastné spustiteľné súbory (xcopy, setx…)

Syntax príkazu zistíme obvykle zadaním parametra /? na príkazovom riadku. Napr.:

copy /?

Príkazový riadok podporuje tzv. dávkový (batch) mód, ktorý umožňuje vykonanie skupiny príkazov. Zvyčajne sú dávkové príkazy čítané zo súboru, ale tiež môžu byť zadané na príkazovom riadku – napríklad FOR a vykonanie nejakej operácie nad viacerými súbormi.

Klávesové skratky

Klávesové skratky uľahčujú zásadným spôsobom prácu s príkazovým riadkom. Tu je zoznam najpoužívanejších klávesových skratiek:

šípka hore predošlý príkaz
šípka dole nasledujúci príkaz
PAGEUP najstarší príkaz v session
PAGEDOWN posledný príkaz
šípka vľavo posun kurzoru doľava o jeden znak
šípka vpravo posun kurzoru doprava o jeden znak
CTRL+šípka vľavo posun kurzoru doľava o jeden znak
CTRL+šípka vpravo posun kurzoru doprava o jedno slovo
HOME posun kurzoru na začiatok riadku
END posun kurzoru na koniec riadku
ESC vymaže príkaz
F4 vymaže znaky od aktuálnej pozície kurzora až po špecifikovaný znak
F7 zobrazí všetky príkazy použité v session ako menu a umožní výber
ALT-F7 vymaže všetky príkazy z histórie
F8 zobrazí všetky príkazy z histórie, ktoré začínajú znakom, ktorý ste zadali pred stlačením F8
F9 umožní zadať príkaz z histórie jeho poradovým číslom (viď F7)

Presmerovanie štandardného vstupu, výstupu a chyby

Skúste vykonať príkaz, ktorý vypíše obsah adresára c:\windows\system32\. Tento adresár obsahuje množstvo súborov a pri zobrazení ich mien zostane na obrazovke len niekoľko a ostatné „utečú“. Ako tento problém riešiť?

Operačný systém Windows ponúka programátorom veľmi jednoduchý spôsob zápisu na terminál. Ak nejaký program niečo vypisuje na vašu obrazovku, používa tzv. štandardný výstup [stdout ­- standard output]. Na druhej strane existuje štandardný vstup [stdin -­ standard input], ktorý slúži na vstup dát od používateľa. Samozrejme, je možné aby program komunikoval bez použitia štandardného vstupu a výstupu, ale väčšina programov, ktorými sa tu zaoberáme, používa práve štandardný vstup a výstup.

Napríklad príkaz dir vypisuje zoznam adresárov a súborov na štandardný výstup, ktorý je normálne spojený s terminálom. Príkazový interpret číta vami zadané dáta zo štandardného vstupu. Programy tiež môžu zapisovať do tzv. štandardného chybového výstupu [stderr ­- standard error]. Štandardný chybový výstup je temer výlučne spojený so štandardným výstupom, preto môžu používatelia sledovať chybové stavy. V nasledujúcich kapitolách si ukážeme, ako môžeme využívať štandardný vstup a výstup v konštrukciách, ktorým sa hovorí presmerovanie vstupu, presmerovanie výstupu a rúra vstupu a výstupu.

Presmerovanie výstupu:

Veľmi dôležitou vlastnosťou operačného systému je možnosť presmerovania výstupu. Toto umožňuje používateľovi presmerovať výstup príkazu na tlačiareň i do súboru. Ak chcete presmerovať výstup príkazu dir c:\windows\system32\ do súboru, napíšte za tento príkaz znak > a názov súboru do ktorého chcete výstup presmerovať.

Presmerovanie vstupu:

Tak ako je možné presmerovať štandardný výstup, je možné presmerovať aj štandardný vstup. Miesto toho, aby program čítal z klávesnice, bude čítať zo súboru. Pretože sa presmerovanie vstupu logicky viaže na presmerovanie výstupu, je prirodzené vyhradiť preň znak <. Tento znak sa rovnako uvádza za príkazom, ktorý chcete realizovať. Presmerovanie má význam hlavne vtedy, ak máte súbor obsahujúci dáta a a program, ktorý dáta číta zo štandardného vstupu. Platí však, že väčšina programov vyžaduje uvedenie názvu súboru, ktorý obsahuje dáta a preto nie je presmerovanie vstupu takým častým javom ako presmerovanie výstupu.

Rúra:

Množstvo príkazov produkuje veľké množstvo informácií. Uvádzaný príkaz dir c:\windows\system32\ vypisuje toľko informácií, že nie je možné prezrieť si ich všetky naraz. Aby sme umožnili pohodlné prezeranie takýchto výstupov, musíme použiť ďalší príkaz, ktorý má názov more. Tento príkaz spôsobí zastavenie výspisu na obrazovku v momente ako sa obrazovka zaplní. Príkaz more < dir však nebude fungovať, pretože presmerovanie funguje iba so súbormi, nie s príkazmi. Našťastie systém Unix ponúka elegantnejší spôsob. Stačí keď zadáte príkaz dir c:\windows\system32\ | more. Znak | indikuje tzv. rúru. Rúram sa hovorí tok dát. Užitočnosť rúry ešte viac narastá v spojení s ďalšími nástrojmi, ktorým sa hovorí filtre. Filter je program, ktorý číta štandardný vstup, definovaným spôsobom ho upraví a pošle na štandardný výstup. Príkladom filtra je práve príkaz more, ktorý číta dáta zo štandardného vstupu, upravuje ich, vypisuje na obrazovku a umožňuje používateľovi prehliadnuť celý súbor. more však nie je úplne dokonalý filter, pretože jeho výstup nie je vhodný na to, aby bol určený ako vstup ďalšieho programu. Príkladom filtrov sú napríklad find alebo sort.

Presmerovanie štandardného chybového výstupu:

Obvykle je štandardný chybový výstup priamo spojený so štandardným výstupom. Ak však spúšťate napríklad dávkové súbory môžte presmerovať štandardný chybový výstup do súboru, ktorý potom môžete ďalej spracovať.

Príklad presmerovania do súboru:

chkdsk /r 2> diskerrors.txt

Príklad presmerovania na štandardný výstup:

chkdsk /r > diskerrors.txt 2>&1

Zoznam presmerovaní:

  • command1 | command2 Sends the output of the first command to be the input of the second command.
  • command < [path]filename Takes command input from the specified file path.
  • command > [path]filename Sends output to the named file, creating the file if necessary or overwriting it if it already exists.
  • command >> [path]filename Appends output to the named file if it exists or creates the file and then writes to it.
  • command < [path]filename > [path]filename Gets command input from the specified file and then sends command output to the named file.
  • command < [path]filename >> [path]filename Gets command input from the specified file and then appends command output to the named file.
  • command 2> [path]filename Creates the named file and sends any error output to it. If the file exists, it is overwritten.
  • command 2>&1 filename Sends error output to the same destination as standard output.

Reťazenie a zoskupenie príkazov:

& príkaz1 & príkaz2 Vykoná príkaz1 a potom vykoná príkaz2.
&& príkaz1 && príkaz2 Vykoná príkaz2 ak príkaz1 skončil úspešne.
|| príkaz1 || príkaz2 Vykoná príkaz2 ak príkaz1 neskončí úspešne.
( ) (príkaz1 & príkaz2) && (príkaz3) Pomocou zátvoriek zoskupíte skupiny príkazov pre podmienené vykonanie založené na úspechu.
( ) (príkaz1 & príkaz2) || (príkaz3) Pomocou zátvoriek zoskupíte skupiny príkazov pre podmienené vykonanie založené na zlyhaní.

Príklady:

dir c:\working\logs\current.log && move current.log d:\history\logs

(hostname & ipconfig & netstat -a) > current_config.log