Zpět na hlavní stránku

klikni na mě
   

Bash-příkazový interpret


 Bash (Bourne Again Shell)
 Bash je implicitním příkazovým interpretem operačního systému Linux.

 Pár poznámek na začátek.

-Příkaz v operačním systému Unix se skládá z písmen, čísel a znaků.
 Nikoliv však z MEZER.

-Systém je case-sensitive. To znamená, že rozlišuje malá a velká písmena.
 Z toho vyplývá, že např. příkaz ls a LS nebo Ls nebude brát jako stejný příkaz.

-Konbinace Ctrl+D se používa na ukončování většiny příkazů. Je to znak konce souboru
  /EOF end-of-file/

-Parametry (slova, písmena či znaky za příkazem) modifikují funkci příkazu.
 Speciálnim parametrům se říká options (volby) nebo switches (přepínače)

 Příkazy

 cat - Tento příkaz má několik funkcí:

       1,vrací původní řetězec napsaný uživatelem.
       příklad: [milan@localhost milan]$ cat  --- Enter
                Ahoj všichni ! ---- Ctrl+D
                bash: Ahoj všichni !
       2,spojuje soubory a zobrazuje je na standardním výstupu

 man - Zobrazuje manuálové stránky.Pokud chceme získat nápovědu např. o příkazu cat
        napíšeme: man cat.
        V nápovědě se listuje Page Up a Page Down nebo Spacebar.
        Pro ukončení slouží klávesa Q.

        Syntaxe (převzato z manuálových stránek)
        man [-acdfhkKtwW] [-m systém] [-p řetězec] [-C konfigurační soubor] [-M
        cesta] [-P stránkovač] [-S seznam_sekcí] [sekce] jméno ...


 ls - Slouží k prohledávání adresářů.
      Zobrazuje adresáře a soubory v adresáři, ze kterého zadáváme příkaz
      (aktuální adresář) nebo adresář ke kterému zadáme cestu.

      ls může mít tyto volby:
      ls [-abcdfgiklmnpqrstuxABCFGLNQRSUX1] [-w sloupců] [-T pozic] [-I vzor]

      Zobrazení obsahu aktuálního adresáře:
      [milan@localhost milan]$ ls
      bash: Desktop/  Documents/  Download/  evolution/  Mail/  quanta/  soubor/  tmp/

      Pokud v aktuálním adresáři není, pak se nezobrazí nic.
      Výsledek bude vypadat asi takto: [milan@localhost adresar]$ ls
                                       [milan@localhost adresar]$

      Zobrazení obsahu adresáře pomocí zadání cesty:
      /kde je cesta: /home/milan/Download  /
      [milan@localhost milan]$ ls /home/milan/Download
      Blue Fish/              Doom/           Obrázky/  Quake 2/     www/
      CoffeeCup HTML Editor/  Flash Plugins/  Psi/      Screem 0.6/

      Paramert -F rozlišuje obsah adresáře na adresáře, speciální soubory, programy
                a ostatní soubory.
                ukázka: [milan@localhost /]$ ls -F
                bin/   dev/  home/    lib/         mnt/  sbin/  Untitled1.html  var/


                -n vypíše počet adresářů a souborů (tj. celkem 40)
                 u každého adresáře vypíše práva, nejprve písmeny, pak číslicemi dále ukáže
                 datum a čas vzniku adresáře a na konec jméno adresáře
                 [milan@localhost milan]$ ls -n
                 celkem 40
                 drwxrwxr-x    3 501      501          4096 kvě 30 20:02 Desktop/
                 drwxr-xr-x    4 501      501          4096 kvě 29 19:38 Documents/
                 ...

                 a na konec co nám o příkazu ls říkají manuálové stránky:
                 LS(1)
                 JMÉNO
                 ls, dir, vdir - vypíše obsah adresářů
                 POUŽITÍ
                 ls [-abcdfgiklmnpqrstuxABCFGLNQRSUX1] [-w sloupců] [-T pozic] [-I vzor]

 pwd - print working directory, vypíše cestu k aktuálnímu adresáři,
       ukázka:[milan@localhost milan]$ pwd
              /home/milan

       poznámka z manuálové stránky:
       Pamatujte, že většina Unixových shellů poskytuje vestavěný  příkaz  pwd
       podobné  funkce,  takže  prostý  příkaz  pwd  zadaný  interaktivně bude
       obvykle provádět vestavěnou verzi a nikoli tento příkaz.

 cd - zajišťuje pohyb mezi adresáři
      ukázka:
      [milan@localhost milan]$ ls
      Desktop/  Documents/  Download/  evolution/  Mail/  Obrazky/  quanta/
      [milan@localhost milan]$ cd /home
      [milan@localhost home]$ ls
      lost+found/  milan/  petra/
      [milan@localhost home]$ cd
      [milan@localhost milan]$ ls
      Desktop/  Documents/  Download/  evolution/  Mail/  Obrazky/  quanta/

      zde je ukázán jeden ze způsobů použití příkazu cd
      nejprve jsem si nechal vypsat pro kontrolu obsah aktuálního adresáře
      pomocí příkazu ls
      v dalším řádku (cd /home) jsem se přesunul do adresáře home, který je nad
      aktuálním adresářem (milan)
      zadal jsem ls a mohu adresáře na této úrovni (je zde i adresář milan ze kterého
      jsem přišel)
      dalším zadáním příkazu cd bez jakékoliv voleb se vrátím do domovského
      adresáře milan
      ls jsem zadal pro kontrolu, že je tomu skutečně tak

      V příkazu cd se cesta k adresáři zadává jako ABSOLUTNÍ CESTA nebo jako
      RELATIVNÍ CESTA.

      Absolutní cesta začíná vždy znakem / a obsahuje celou cestu k požadovanému
      adresáři. (tj. všechny adresáře, které jsou na této cestě)
      ukázka:
      [root@localhost /]# cd /home/milan/Documents/Milanova\ stránka/
      [root@localhost Milanova stránka]#

      zde jsem za příkazem cd vypsal celou cestu až k požadovanému adresáři,
      to je celkem jasné, proč jsem ale použil u dvojslovného názvu Milanova stránka zápisu
      /Milanova\ stránka/ ?

      Podívejme se co by se stalo kdybych zadal cestu se skutečným názvem adresáře:

      [root@localhost root]# cd /home/milan/Documents/Milanova stránka
      bash: cd: /home/milan/Documents/Milanova: No such file or directory

      bash nám píše, že soubor nebo adresář se jménem Milanova může najít,
      pokud nezadáme dvojslovný název adresáře Milanova stránka jako
      /Milanova\ stránka/ bude bash považovat zadaný název pouze za jednoslovný,
      tedy za adresář se jménem Milanova.

      Relativní cesta je brána vzhledem k aktuálnímu adresáři směrem dolů.
      dejme tomu, že se chceme dostat z domovského adresáře root do adresáře koš,
      který je na cestě: Desktop/Koš směrem dolů vzhledem k adresáři root,
      pomocí relativní cesty to můžeme udělat dvěma způsoby:

      1, Postupně
      [root@localhost root]# ls
      Desktop/  Documents/  Download/  evolution/  Mail/  Obrazky/  quanta/
      [root@localhost root]# cd Desktop
      [root@localhost Desktop]# ls
      Koš/  Můj adresář
      [root@localhost Desktop]# cd Koš
      [root@localhost Koš]#

      2, Jedním zadáním příkazu
      [root@localhost root]# cd Desktop/Koš
      [root@localhost Koš]#

      Při zadávání relativní cesty za příkaz cd uvádíme rovnou jméno adresáře,viz 1.
      (kam se chceme dostat v adresářové struktuře přímo pod aktuální adresářem)
      nebo cestu od aktuálního adresáře k požadovanému adresáři (směrem dolů) viz 2.
      ale vždy bez znaku /

      cd    přepne do aktuálního domovského adresáře (viz výše ukázku)

      cd .. přepne do nadřazeného adresáře (tj. do adresáře který je o jednu úroveň výš
            nad aktuálním adresářem

      cd /  přepne do kořenového adresáře z kteréhokoliv místa v adresářové struktuře

 mkdir - make directory, pomocí tohoto příkazu se vytváří adresáře,
                 mkdir může vytvářet jeden nebo více adresářů najednou a to
                 buď v aktuálním adresáři nebo v kterémkoliv jiném adresáři
                 za použití absolutní nebo relativní cesty

                 mkdir  [-p]  [-m práva] [--parents] [--mode=práva] [--help] [--version]
                 adresář...

                 vytvoření jednoho adresáře v aktuálním adresáři:

                 [root@localhost milan]# ls
                 Desktop/  Documents/  Download/  evolution/
                 Mail/  Obrazky/  quanta/
                 [root@localhost milan]# mkdir adresář
                 [root@localhost milan]# ls
                 adresář/  Desktop/  Documents/  Download/  evolution/
                 Mail/  Obrazky/  quanta/

                 vytvoření více adresářů v aktuálním adresáři:

                 [root@localhost milan]# ls
                 Desktop/  Documents/  Download/  evolution/
                 Mail/  Obrazky/  quanta/
                 [root@localhost milan]# mkdir adresář1 adresář2
                 [root@localhost milan]# ls
                 adresář1/  Desktop/  Documents/  Download/  evolution/
                 adresář2/  Mail/  Obrazky/  quanta/

                 bash pozná příkaz mkdir a to, co je za mezerou, bere jako jméno adresáře,
                 který má vytvořit a každou další mezeru za kterou najde nějaký
                 řetězec bere jako jméno adresáře, který má vytvořit

                 vytvoření více adresářů za použití absolutní cesty:
                 [root@localhost home]# mkdir /home/milan/Obrazky/adresář1
               /home/milan/Obrazky/adresář2
                 [root@localhost home]# ls  /home/milan/Obrazky
                 adresář1/              Galaxie26.jpg*  Galaxie6.jpg*
                 adresář2/              Galaxie27.jpg*  Galaxie7.jpg*  Huddle2.jpg*
                 černá plocha*          Galaxie28.jpg*  Galaxie8.jpg*  Huddle3.jpg*

                 vytvoření více adresářů za použítí relativní cesty:
                 [root@localhost milan]# mkdir Obrazky/gifs/adresář1
               Obrazky/gifs/adresář2
                 [root@localhost milan]# ls Obrazky/gifs
                 adresář1/                   linux-logo.gif*     openlogo-1000.jpg*
                 adresář2/                   Linux-logo2.gif*    ORFEUS-SPAS.in.Space*
                 biglogo.gif*                linux-logo3.gif*    redhat.gif*

 rmdir - tento příkaz se používá k odstraňování adresářů,
          funguje velmi podobně jako příkaz mkdir,
          pokud chceme odstranit nějaký adresář, pak musíme být v adresářové struktuře
          o jednu úroveň nad ním,(ukázka 1)
          adresář musí být prázdný, jinak příkaz odmítne splnit svou funkci,
          (ukázka 2)
          pokud adresář není prázdný, musíme nejprve odstranit všechny soubory,
          např. příkazem rm viz dále

          ukázka 1
          [root@localhost adresář]# rmdir adresář
          rmdir: `adresář': No such file or directory

          ukázka 2:
          [root@localhost gifs]# rmdir adresář
          rmdir: `adresář': Directory not empty

          volby příkazu rmdir:
          rmdir [-p] [--parents] [--help] [--version] adresář...

 cp - příkaz sloužící ke kopírování souborů,
      pozor! tento příkaz je schopen přepsat soubory bez jakékoliv výstrahy
      či upozornění,

      výpis z manuálových stránek:
      1,cp [volby] zdroj cíl
      2,cp [volby] zdroj... adresář
        Volby:
        [-abdfilprsuvxPR]        [-S       přípona-záložního-souboru]

      příkaz cd lze několika způsoby (jak je vidět z výpisu)

      1,první řetězec za příkazem cp je jméno souboru, který se má kopírovat
        (je to tzv. zdroj, zdrojový soubor, source file)
        druhý řetězec je soubor, který má být kopií prvního souboru
        (je to tzv. cíl, cílový soubor, destination file)

        ukázka:
        [root@localhost adresář]# ls -n
        celkem 0
        [root@localhost adresář]# cp /home/milan/Obrazky/gifs/linux3.gif obrazek
        [root@localhost adresář]# ls -n
        celkem 20
        -rwxr-xr-x    1 0        0           20021 čen  4 13:52 obrazek*

        zde jsem zadal za příkaz cp absolutní cestu k souboru linux3.gif
        (příkaz cp je schopen podle situace akceptovat i relativní cestu
        nebo manipulaci v rámci aktuálního adresáře)
        a přejmenoval ho na obrazek,
        (to, co je za mezerou, bere jako název nový název pro kopírovaný soubor)

        pokud nechceme měnit jméno souboru, pak stačí zadat:
        [root@localhost adresář]# cp /home/milan/Obrazky/gifs/linux3.gif .
        [root@localhost adresář]# ls -n
        celkem 40
        -rwxr-xr-x    1 0        0           20021 čen  4 14:06 linux3.gif*
        -rwxr-xr-x    1 0        0           20021 čen  4 13:52 obrazek*

        cílový soubor jsem nahradil .

      2,cp může kopírovat soubory i do jiného adresáře než aktuálního
        a kopírovaných adresářů může být i víc než jeden

        ukázka:
        [root@localhost gifs]# cp linux6.gif linux7.gif linux8.gif adresář
        [root@localhost gifs]# ls adresář
        linux3.gif*  linux6.gif*  linux7.gif*  linux8.gif*  obrazek*

        v tom to případě bere příkaz cp všechny řetězce oddělené mezerou za soubory,
        které má kopírovat kromě posledního, ten považuje za adresář, kam má tyto soubory
        zkopírovat

        pozor! pokud by se už v adresáři jménem adresář už nacházel soubor se stejným
        jménem jako kopírováný soubor (např. linux7.gif), pak ho bez milosti přepíše
        a původní soubor bude nenávratně ztracen

 rm - odstraňuje soubory, používáni tohoto příkazu vyžaduje opatrnost jinak snadno
              příjdete o svá data !

              poznámka z manuálových stránek:
              Pro soubory, ke kterým uživatel nemá právo zápisu, se bude příkaz rm  v
              případě,  že  standardní vstup je terminál a nejsou zadány volby -f ani
              --force, ptát uživatele, jestli chce soubor  zrušit.  Jestliže  odpověď
              nezačíná znaky `y' nebo `Y', příslušný soubor nebude smazán.

              ukázka:
              [root@localhost gifs]# rm adresář/linux6.gif
              rm: remove regular file `adresář/linux6.gif'? y
              [root@localhost gifs]# ls adresář
              linux3.gif*  linux7.gif*  linux8.gif*  obrazek*

              může mazat více souborů najednou:
              [root@localhost adresář]# rm linux3.gif linux7.gif linux8.gif
              rm: remove regular file `linux3.gif'? y
              rm: remove regular file `linux7.gif'? y
              rm: remove regular file `linux8.gif'? y
              [root@localhost adresář]# ls
              obrazek*

              to, že se mě bash na smazání každého souboru zeptal, není pravidlem
              a záleží na nastavení vaší konzole
              (klidně se vás nemusí zeptat vůbec na nic a rovnou příkaz provede)

 mv - přesouvá soubory,
      (zkopíruje soubor na určené místo a zdrojový soubor smaže)

      1,mv [volby] zdroj cíl
      2,mv [volby] zdroj... adresář

      Volby:
      [-bfiuv] [-S přípona-záložního-souboru]

      1,pokud je druhým parametrem jméno souboru, pak mv zdrojový soubor přejmenuje

      ukázka:
      [root@localhost adresář]# ls
      Ilustrace
      [root@localhost adresář]# mv Ilustrace Obrázek
      [root@localhost adresář]# ls
      Obrázek

      2,pokud je druhým parametrem jméno adresáře, pak soubor do tohoto adresáře přesune:
      [root@localhost adresář]# mv Obrázek /home/milan
      [root@localhost adresář]# ls /home/milan
      Desktop/    Download/   Mail/    Obrazky/  soubor/
      Documents/  evolution/  Obrázek  quanta/   tmp/

      pozor! pokud je v adresáři, do kterého je soubor přemisťován již soubor,
      stejného jména, pak bude přepsán (podobně jako u příkazu cp)

      existuje jedna možnost aby vás příkazy cp, rm a mv informovali o své činnosti
      bez ohledu na nastavení vaší konzole:

      je to volba -i

      ukázka:
      [root@localhost milan]# rm -i Obrázek
      rm: remove regular file `Obrázek'? y

 Ještě pár praktických příkazů na konec

 su - 1,super user, super uživatel, po zadání tohoto příkazu budete vyzváni
      k zadání hesla root, potom budete mít superuživatelská práva (např. vypnout
      počítač přímo z konzole, vstup do všech adresářů a mnoho dalších...)
      2,pomocí su se můžete přihlásit jako jiný uživatel

      ukázka 1:
      [milan@localhost adresář]$ su
      Password:
      [root@localhost adresář]#

      při zadávání hesla se nic nezobrazuje, zůstává ve stejném adresáři

      ukázka 2:
      [milan@localhost adresář]$ su petra
      Password:
      [petra@localhost adresář]$

      zde po su následuje uživatelské jméno a pak heslo tohoto uživatele

 exit - ukončení konzole, pokud jste přihlášen jako super uživatel, nebo jako
        jiný uživatel, pak ukončí tento režim

        ukázka:
        [root@localhost adresář]# exit
        exit
        [milan@localhost adresář]$


 shutdown -h now, poweroff - příkazy sloužící k vypnutí počítače přímo z konzele,
                                k této činnosti musíte mít super uživatelská práva

 startx, xinit - po zadání jednoho z těchto příkazů se přepnete z textového režimu do
                  GUI (graphic user interface, grafické rozhraní)

      Tak a to je vše, co se týká základních příkazů příkazového interpetu BASH.
      Odhaduji, že je to tak 1% informací ,které jsou o BASHy potřeba vědět, abychom
      využili jeho schopností naplno.
      Ale toto minimum je slušný základ, se kterým se můžete směle pustit do objevování BASHe.
      Přeji hodně zdaru.

      Vše, co jsem na této stránce uvedl, jsem také na své konzoli vyzkoušel a to, co je
      uvedeno v ukázkách jsou zkopírované výpisy z BASHe.
Nahoru
Na hlavní stránku