Toto je starší verze dokumentu!
Základy příkazové řádky
Úvod do příkazové řádky
Práce se soubory a adresářy
Práce s textem, vstupem a výstupem
V príkazovej riadke je bežný prípad, že potrebujete spracovať výstup nejakého príkazu. Taký klasický príklad je: máte súbor a hľadáte v ňom kľúčové slovo. Alebo máte adresár, a hľadáte kľúčové slovo v ktoromkoľvek súbore ktorý sa nachádza v spomínanom adresáre.
Na hľadanie kľúčových slov je najpoužívanejší príkaz grep. Teraz vás poprosím si pozrieť manuálovú stránku tohto príkazu ako aj nápovedu. (Úloha: ako to spraviť?)
Poďme si teraz skúsiť reálne použitie.
Naša úloha bude, že sa snažíme nájsť reťazec PATH v súbore /etc/bashrc.
$ grep PATH /etc/bashrc case ":${PATH}:" in PATH=$PATH:$1 PATH=$1:$PATH
Reťazec sme našli. Mohli by sme dostať aj čísla riadkov?
$ grep -n PATH /etc/bashrc 58: case ":${PATH}:" in 63: PATH=$PATH:$1 65: PATH=$1:$PATH
Kde všade môžeme ešte kľúčové slovo PATH nájsť v /etc?
$ grep -R PATH /etc/ grep: /etc/pki/tls/certs/ca.crt: Permission denied grep: /etc/pki/rsyslog: Permission denied grep: /etc/ssh/sshd_config: Permission denied grep: /etc/ssh/ssh_host_rsa_key: Permission denied grep: /etc/ssh/ssh_host_ecdsa_key: Permission denied grep: /etc/ssh/ssh_host_ed25519_key: Permission denied grep: /etc/ssh/sshd_config.rpmnew: Permission denied /etc/bashrc: case ":${PATH}:" in /etc/bashrc: PATH=$PATH:$1 /etc/bashrc: PATH=$1:$PATH Binary file /etc/udev/hwdb.bin matches /etc/csh.login: switch (":${PATH}:") …
Ako toto vlastne funguje?
Každý príkaz spustený v príkazovej riadke môže akceptovať vstup a produkovať výstup. Vstup akceptuje cez STDIN, takzvaný standard input. Vystúp produkuje do 2 streamov: štandartný výstup (STDOUT) a štandartný chybový výstup (STDERR).
Každý z týchto streamov má unikátny identifikátor: 0 pre stdin, 1 pre stdout a 2 pre stderr.
V príkazovej riadke je možné tieto vstupy a výstupy rôzne presmerovávať. Na presmerovanie sa používa operátor >. To znamená že môžeme napr. presmerovať chybový výstup do súboru:
$ grep -R PATH /etc/ 2>chyby /etc/bashrc: case ":${PATH}:" in /etc/bashrc: PATH=$PATH:$1 /etc/bashrc: PATH=$1:$PATH Binary file /etc/udev/hwdb.bin matches /etc/csh.login: switch (":${PATH}:") /etc/profile: case ":${PATH}:" in /etc/profile: PATH=$PATH:$1 /etc/profile: PATH=$1:$PATH /etc/profile:export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL /etc/profile.d/qt.sh:case :$PATH: in /etc/profile.d/qt.sh: *) PATH=$QTDIR/bin:$PATH ;;
Ako už vidíte, Permission denied chyby už nie sú vo výstupe, ale sú v súbore s názvom “chyby”.
Úloha: presmerujte obsah štandartného výstupu do súboru.
Môžete si klásť otázku, že ako niečo presmerovať do štandartného vstupu? Na túto operáciu používáme operátor | (roura). Funguje to tak, že zoberieme výstup z jedného príkazu a presmerujeme ho ako vstup do iného. Ako taký krásny príklad je, že keď sa snažíte nájsť špecifický prepínač v nápovede pre nejaký príkaz: ako zistím prepínač u príkazu grep ktorý vypne senzitivitu na veľké a malé písmena:
$ grep --help | grep case
Premenné prostredia
Kazdy linuxovy proces ma mnozinu premennych prostredia ktore su mu dostupne. Velmi lahko si ich mozeme vsetky vypisat pomocou prikazu env. Vy mozete tieto premenne lahko zadefinovat sami a vyuzivat ich v prikazovej riadke pomocou konstruktu $MENO_PREMENNEJ. Tak si podme napr. vypisat obsah premennej prostredia PATH:
echo $PATH
Lahko si mozeme zadefinovat vlastnu premennu a pouzit ju:
export TAJNY_SUBOR=/etc/bashrc
a nasledne v tomto tajnom subore nieco najst:
grep PATH $TAJNY_SUBOR
Ostatne dolezite prikazy Prejdime si teraz strucne ostatne dolezite prikazy: head - zobraz prvych 10 riadkov tail - zobraz poslednych 10 riadkov cat - vypis subor wc - spocitaj riadky, slova v subore sort - zorad vstup podla abecedy shuf - pomiesaj vstup tee - zapisuj vstup do suboru ako aj na standartny vystup Tvorba jednoducheho skriptu
Vsetko co sme doteraz robili mozeme uplne jednoducho zapisat do suboru a vykonat sekvencne:
vim nas-prvy-skript.sh
export TAJNY_SUBOR=/etc/bashrc grep PATH $TAJNY_SUBOR
a nasledne vykonat
bash nas-prvy-skript.sh
Zakerna uloha: napiste do shellu “cat” a nasledne “skuska” a enter. Dokaze niekto popisat ze co sa prave deje?
Úprava souború pomocí terminalového editoru
Jeden z najrozšírenejších a najviac používaných CLI textových editorov je vi. Editor vi je predinštalovaný na každom linuxovom systéme a poskytuje množstvo užitočných príkazov na editovanie súborov.
Prvé spustenie
Textový editor sa spúšťa pomocou príkazu vi. Ako argument[link na vysvetlenie argumentu] je mu predaný názov súboru ktorý sa chystáme upravovať.
Pokiaľ súbor s poskytnutým názvom neexistuje, vi vytvorí nový súbor v aktuálnom adresári. [link na vysvetlenie co je aktualny adresar]
Po spustení sa príkazový riadok nahradí náhľadom obsahu súboru. Vlnovky označujú prázdne riadky na konci súboru. Vľavo dolu sa zobrazí názov súboru, počet jeho riadkov a znakov alebo informácia o tom, že sa vytvoril nový súbor. Na tomto mieste sa budú zobrazovať aj informácie o iných vykonaných zmenách. V pravo dole je percentuálna alebo slovná reprezentácia pozície v dokumente.
Módy editora
Editor vi má tri používané módy - základný, insert a vizuálny. V základnom móde je konzola pripravená prijímať nové príkazy v podobe jednotlivých kláves alebo slovné príkazy v podobe reťazcov začínajúcich dvojbodkou. Každá klávesa môže mať svoj špecifický význam. Napríklad stlačením klávesy x sa odstráni písmeno na pozícii kurzora alebo stlačením u sa vrátime o krok späť (podobne ako <ctrl>+z v iných editoroch).
Zo základného módu sa stlačením i dostaneme do vkladacieho módu - insert. V tomto móde sa zapisuje nový text, tak ako sme zvyknutí z grafických textových editorov. Naspäť do základného/príkazového módu sa dostaneme stlačením klávesy <Esc>.
Tretí z používaných módov je vizuálny a spúšťa sa pomocou klávesy v. Tu je možné označiť časť textu a previezť na nej nejaký príkaz, napríklad skopírovanie do schránky. Návrat do základného módu opäť vykonáme pomocou <Esc>.
Navigácia v súbore v základnom móde
Napravo vidíme aktuálnu pozíciu kurzoru vo formáte riadok,(bajt-)stĺpec 0,0-1. Túto pozíciu a teda kurzor, je možné meniť pomocou šípok alebo kláves h, j, k, a l. Okrem toho existuje množstvo skratiek na zjednodušenie orientácie vo veľkých súboroch, napríklad:
- Presun kurzora na začiatok súboru - G
- Presun kurzora na koniec súboru - gg
- Skoč na riadok - <číslo riadku>G (napríklad 42G)
Príkazy začínajúce dvojbodkou
Editor vi umožňuje vykonávanie zložitejších výkonov pomocou krátkych interpretácií príkazov. Toto je užitočné napríklad keď je potrebné:
- zobraziť čísla riadkov - :set nu
- inak zmeniť nastavenie editora
- pozmeniť slovo alebo výraz na riadku - :s/brno/Brno/g
- a mnoho iných.
Návrat k príkazovému riadku (ukončenie vi)
A teraz to najdôležitejšie! Ako to všetko uložiť a vrátiť sa k príkazovému riadku. Na to nám slúžia príkazy začínajúce dvojbodkou v základnom móde:
- uloženie a návrat do CLI- :wq
- návrat do CLI bez uloženia - :q!
Ako sa stať kúzelníkom pri editovaní
Obsah toho krátkeho tréningu bol len základ. Editor vi a jeho vylepšený brat vim poskytuje mnoho nástrojov a rozšírení, ktorých osvojením si človek ľahko zrýchli a spríjemní svoje pracovné úkony. Balíček vim-enhanced, ktorý by mal byť súčasťou väčšiny linuxových distribúcií obsahuje mimo iného aj tutoriál v češtine (na dlhé zimné večery). Spúšťa sa na príkazovom riadku príkazom vimtutor. Na základné, nevyhnutné použitie ale stačí pamätať si postupnosť i, <zmeny>, <Esc> a :wq.