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
Mohli by sme dostat aj cisla riadkov?
$ grep -n PATH /etc/bashrc 58: case „:${PATH}:“ in 63: PATH=$PATH:$1 65: PATH=$1:$PATH
Kde vsade mozeme este klucove slovo PATH najst v /etc?
$ grep -R PATH /etc/ grep: /etc/pki/tls/certs/2015-RH-IT-Root-CA.pem: Permission denied grep: /etc/pki/tls/certs/newca.crt: Permission denied grep: /etc/pki/tls/certs/oracle_ebs.crt: Permission denied grep: /etc/pki/rsyslog: Permission denied grep: /etc/systemd/system/multi-user.target.wants/centos.service: No such file or directory 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}:“) …
Toho ale je, podme si prejst samotny vystup. (len ustne)
Ako toto vlastne funguje?
Kazdy prikaz spusteny v prikazovej riadke moze akceptovat vstup a produkovat vystup. Vstup akceptuje cez STDIN, takzvany standard input. Vystup produkuje do 2 streamov: standartny vystup (STDOUT) a standartny chybovy vystup (STDERR).
Kazdy z tychto streamov ma unikatny identifikator: 0 pre stdin, 1 pre stdout a 2 pre stderr.
V prikazovej riadke je mozne tieto vstupy a vystupy rozne presmerovovat. Na presmerovanie sa pouziva operator >. To znamena ze mozeme napr. presmerovat chybovy vystup do suboru: $ 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 uz vidite, Permission denied chyby uz nejsu vo vystupe, ale su v subore “chyby”.
Uloha: presmeruje obsah standartneho vystupu do suboru.
Mozete si klast otazku, ze ako nieco presmerovat do standardneho vstupu? Na tuto operaciu pouzivame operator | (roura). Funguje to tak, zo zoberieme vystup z jedneho prikazu a presmerujeme ho ako vstup do ineho. Ako taky krasny priklad je, ze ked sa snazite najst specificky prepinac v napovede pre nejaky prikaz: ako zistim prepinac u prikazu grep ktory vypne senzitivitu na velke a male pismena:
$ grep –help | grep case
Premenne 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.