Práca s príkazovým riadkom

Príkazové procesory 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.

Napriek tomu, že príkazový riadok je mocný nástroj, mnoho administrátorov ho nepoužíva. Pokiaľ ale máte viac serverov, prípadne potrebujete vykonať trocha zložitejšie úlohy a to čo najrýchlejšie, jeho použitiu sa nevyhnete. Pomôže vám vyhnúť sa množstvu problémov.

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 ďaší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 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

50 komentárov k “Práca s príkazovým riadkom”

  1. zdravim chcem sa spytat, v byvalej praci som casto pouzival na komunikaciu medzi kolegami prikaz „net send meno text“ a na ploche prijemcu sa objavila flash message, ale v tejto praci mi to nefunguje, kompy mame zosietovane ale stale neviem prist na problem, viete mi poradit prosim? dakujem

  2. Da sa restartovat – prikaz „shutdown /r“. Pre nudzovy rezim treba pri starte stlacit F8 a vybrat Safe Mode. Pravdu povediac, neviem o situacii, kedy by bolo potrebne spustat nudzovy rezim prikazom.

  3. no ked stlačim f8 mi to vypíše len hdd a cd rom…
    TO chcem viac menej iba preto,že dvd mi načíta medium iba v nudzovom režime…

    Dakujem

  4. Nebude to nahodou preto, lebo klavesa F8 pri stlaceni v BIOS-e voli bootovacie medium? Takze este raz. F8 treba stlacit pri starte OPERACNEHO SYSTEMU a nie pocitaca.

  5. Samozrejme ze ano. Existuje prikaz taskkill. Ako parameter je mozne pouzit nazov programu, napriklad:

    taskkill /IM notepad.exe

    pripadne PID programu:

    taskkill /PID 1234

  6. Vieme com. Pretoze ty ukoncujes tymto postupom nieco co neexistuje. notepad.exe nie je nazov procesu. A teraz ako by si mal postupovat. V prvom rade spustit prikaz z prikazoveho riadku a nie cez Start->Run, snad by ti toho vypisal viac. Ak to nepomoze, pouzi google, napis „xp tskil“l a urcite hned na prvom odkaze bude vsetko jasne… :)

  7. Do google samozrejme zadat „xp tskill“ (bez uvodzoviek). Samozrejme, prikaz taskkill ma trocha inu syntax ako tskill. T.j. pokial sa v jednom pouziva ako parameter „notepad.exe“ nemusi to nutne znamenat, ze to funguje presne tak isto aj v druhom programe. Preto si na prikazovom riadku napis „tskill /?“ a uvidis mozne parametre. Samozrejme, mohol by som ti rovno povedat, kde je problem, ale to by nebola taka zabava… :)

  8. tskill /? som uz dával ale bud som to tam dobre nepochopil alebo staci dat za parameter iba nazov procesu , skusal som tam dat aj napr. „explorer.exe“ ale aj PID procesu a nic sa nestalo, ja som si pozeral procesi v „Spravca uloh“ aj tie PID

  9. V tom pripade musis hladat problem medzi klavesnicou a stolickou… ;) Takto je to urcite funkcne:
    – spustis notepad
    – spustis Command prompt
    – v Command promt-e napises:
    tskill notepad
    – notepad je ukonceny
    Pokial ti to nefunguje, kde mas hladat chybu som ti napisal… :)

  10. Ahoj, nevies ako vo windows xp v command promt switchnut usera napriklad chcem ked si spustim u usera cmd pracovat ako admin bez potreby ho odhlasit dakujem

  11. Tak XP sa na tomto serveri urcite venovat nebudem, kedze uz niekolko rokov som ich nejak ani nevidel. Na Windows Server 2003 to je ale prikaz „runas“.

  12. Zdravim,
    chcem sa spytat, ci sa da ta rúra ( | ) pouzit aj na uz spusteny proces. Lebo ked dam Prikaz1 | Prikaz2, tak sa spusti novy Proces1 a novy Proces2. A ja by som potreboval, aby vystup z Prikazu1 isiel na std. vstup pre uz spusteny Proces2.

  13. Srdečné pozdravenie.
    Viete mi niekto pomôcť s problémom? Nefungujú mi internetové prehliadače, no skype ide. Pri hľadaní problému som zistil, že sa mi na notebooku nedá spustiť príkazový riadok a tak neviem diagnostikovať podľa návodu čo ďalej. Po zadaní cez Štart atď. sa akosi tvári že sa čosi deje no vráti sa späť bez akejkoľvek zmeny a riadok sa nezobrazí. :(
    Ď.

  14. Igor, nenapísal si, aký používaš OS(XP, alebo 2k3), pod akým účtom si prihlásený. A poznámka „sa akosi tvári že sa čosi deje“ nie je presná, prosím bližšie špecifikuj…

  15. prosim vas da sa cez prikazovy riadok vypnut brana firewall ked nemam admin prava? a ak hej tak napiste plz hned aj akym prikazom

  16. dobry den
    najskor by som sa chcel podakovat tvorcom tohto webu ktory my uz mnoho krat svojimi radami pomohol dakujem velmi pekne. mal by som jednu otazku. mam win server 2003 enterprise na nom gene6 ftp a mam jednoduchy .bat subor ktory spustenim prekopiruje zlozku ftp na iny disk /mam to ako zalohu/ a potreboval by som vediet aky prikaz je treba doplnit aby sa mi to spustalo v urcitu hodinu. este na srednej som to skusal podarilo sa to ale uz si na to nespomynam a na internete som tento prikaz nenasiel za pomoc vopred dakujem.

  17. mam trivialny problem ale neviem ho vyriešiť. ked spustim *.exe v prikazovom riadku tak mi hned zmizne okno a nevidim co tam bolo. Ako to možem zastaviť a spätne si ho prezrieť?

  18. Taka drobnost ale mozno potesi.. hodi zoznam beziacich procesov do txt s riadkom „na kopirovanie“ Vhodne pre vytvorenie batchu na zabitie procesov.. teda mozno sa vam zda byt kontraproduktivne .. ale ja niekedy vytvorim zoznam procesov ktore mi sice normalne bezia ale nie vzdy sa mi hodia.. ked potrebujem co najviac vykonu hodi sa mi zabit aj celeho explorera^^ [co samozrejme zabije aj vsetky child procesy cize vsetko.. ( taskkill /f /im „explorer.exe“ ) CTRL+SHIFT+ESC nahodi taskmanager~a kde cez novy proces mozte nahodit s5 explorera alebo spustit len proces ktory vas zaujima .. napr totalcmd, winamp, hru .. whatever
    __ten tasklist>>

    @echo taskkill /f /pid >!.txt && tasklist /svc >> !.txt && start !.txt

    _~ have a gr8 day

  19. mam otazocku, existuje vo win serv 2003 nejaky monitor loginov + ip z ktorych sa pristupovalo? ide o to ze na server pristupuje viacero ludi ako admin a mam podozrenie ze jeden z ludi pristupuje neopravnene.

  20. mam otazku…..poradite mi ? nejde mi spustit správca uloh
    :((( Stlačím CTRL + ALT + DEL a nič.Ani v ovladacom paneli neni.Dakujem.

  21. Zdravím,
    Nefungujú pri mi príkazy v príkazovam riadku, ak napíšem napr ipconfig napíše mi „není názvem vnitrniho ani vnejsiho prikazu“, ani help mi nejde. funguju iba zkladne typu cd

  22. Zdravim chcel som sa spytat ako preinstalujem Windows cez Bios ked tam nie je operacny system… a ako preinstalujem Windows ked tam je operacny system. Diky

  23. Potrebujem pomoc nejde mi prikazovy riadok no teda ide mi ale nejde mi zapisovat cez echo do suborov co mi predtym islo . Ani mi nenajde prikazy ping net atd

  24. Zdravím!

    Prihlásený ako administrátor som vytvoril ešte jedno konto s heslom /s právami administrátora/ a pomocou klávesy Windows + R a príkazu redegit som ho ukryl, takže na uvítacej obrazovke ho nevidno. Ako sa mám k nemu prihlásiť pri zapínaní PC, teda bez použitia iného konta? Skúsil som klávesu F8 a voľbu šípkami na núdzový režim s príkazovým riadkom. nabehla mi kopa riadkov, každý začínal slovom Loading a na konci asi po 25. riadku bol nápis čakajte. Ten potom zhasol a objavila sa klasická prihlasovacia obrazovka /len trochu roztiahnutá/ a bez toho ukrytého konta.

    Po stlačení F8 by som sa mal dáko dostať k možnosti pomocou klávesnice vyťukať meno používateľa a hesla a takto teda zadať meno a heslo ukrytého užívateľa. Viete mi s tým, prosím, poradiť?

  25. Mohol by mi niekto z múdrych v komunite, ale skutočne len erudovane, poradiť “ Ako Ethernetu v Sieťovej karte pridať platnú konfiguráciu protokolu ( IP ) ? Nech sa mi prosím vy jadrí len profesionál, ktorý tejto problematike rozumie !!

    Ľuboš

  26. Chcel by som sa spytat ci je mozne subor (.bat) s vopred urcenym PID. Ak to je mozne prosim aj o priklad prikazu. OS Win 7 Home Premium.

    (nebranim sa ani jednoduchym skriptom nerad by som vsak instaloval Ine programy)

  27. Dobrý deň , potrebovala by som pomoc za odpoveď vopred ďakujem takže ako môžem napr vymazať program cez tento príkazový riadok? (napr program system32) ?

  28. Zdravím Vás všetkých … Mám rovnaký problém ako Igor (25) vo Windows 10…
    Viete mi niekto pomôcť s problémom? Nefungujú mi internetové prehliadače, no skype ide. Pri hľadaní problému som zistil, že sa mi na notebooku nedá spustiť príkazový riadok a tak neviem diagnostikovať podľa návodu čo ďalej. Po zadaní cez Štart atď. sa akosi tvári že sa čosi deje no vráti sa späť bez akejkoľvek zmeny a riadok sa nezobrazí. :(

    Navyše sa nezobrazí menu po pravom kliku na ikonu Windows vľavom dolnom rohu …
    Ďakujem za radu …

  29. Dobrý deň, vytvoril som si prezentáciu cez PowerPoint7. Má dve časti: prvá „text + videá + výsledková časť“ a druhá album fotografii cez PPNT. Programom Xilisoft PowerPoint to Video Converter som obidva *.fptx súbory prekonvertoval na súbory *.mp4. Pre potreby spúšťania DVD z príkazového riadku som vytvoril word. dokument (sú v ňom vysvetlené podmienky spúšťania). V súbore sú aj vložené prepojenia na tie dva súbory. Programom arun.exe (stiahnutý z Internetu) som vytvoril spúšťateľné DVD, ktoré som napálil (Ashampoo Burning studio). U mňa na počítači to funguje aj ale na iných nevie spustiť tie súbory, pretože ich nenašiel. Neviem ako pripraviť tie súbory, aby sa dali spúšťať aj na iných PC. Alebo existuje nejaká jednoduchšia metóda alebo program, kde si program sám zistí z ktorého písmena napr. u mňa /:F a nastaví link podľa toho na akom písmene je DVD spúšťaný. Neskôr som sa dozvedel, že exe programy sa nemajú využívať ako príkazový riadok (malware). Napísal som celý román, dúfam že zrozumiteľný. Za radu ďakujem Rudolf Kollár.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *