Cvičení – vyzkoušení Bashe

Dokončeno

Na vlastním počítači s Linuxem můžete spustit příkazy Bash místně. Pokud máte přístup k serverům se systémem Linux, můžete na ně vzdáleně přejít a spustit tam příkazy Bash. Ale nikdo nechce experimentovat s živým produkčním systémem, zejména v prvním dni v Northwind.

V této lekci použijete Azure Cloud Shell napravo jako terminál Linuxu. Azure Cloud Shell je prostředí, ke které můžete přistupovat prostřednictvím webu Azure Portal nebo na adrese https://shell.azure.com. Do počítače nebo přenosného počítače nemusíte nic instalovat.

Seznamte se s Cloud Shellem

Pomocí příkazů Bash, se kterými jsme se seznámili, nejprve prozkoumáme, co je v Cloud Shellu.

  1. Pomocí příkazu ls zobrazíte seznam všech souborů a podadresářů v aktuálním adresáři:

    ls
    
  2. Zobrazený výstup by měl vypadat nějak takto:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive je podadresářem vašeho aktuálního adresáře. Jedná se o připojenou sdílenou složku, která se uchovává, pokud používáte Cloud Shell ve vlastním účtu. Právě teď ho používáte v sandboxu Microsoft Learn.

  3. Moment, co je ale aktuální adresář? Pojďme pomocí pwd příkazu zjistit. Je to zkratka pro tisk pracovního adresáře. pwd Vytiskne dlouhou cestu k adresáři, ve kterém se právě nacházíte.

    pwd
    
  4. Měl by se zobrazit výstup podobný tomuto:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Tento výstup znamená, že se nacházíte v adresáři s názvem yourname uvnitř adresáře s názvem home v kořenovém adresáři linuxového systému souborů.

  5. Vypadá to, že v našem aktuálním adresáři toho moc není. Pojďme použít příznak Bashe k vytištění všech skrytých souborů a adresářů, abyste mohli překontrolovat správnost.

    ls -a
    
  6. Ouha! Tento výstup nám ukázal mnohem víc položek v tomto adresáři, než jsme původně očekávali.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Co to bylo za soubory a podadresáře? Některé soubory jsou soubory servisní, které umožňují fungování Cloud Shellu. Pojďme se podívat na několik dalších.

    • . odkazuje na aktuální adresář a .. odkazuje na nadřazený adresář. Když vytisknete všechny skryté soubory a adresáře, vytisknou se bez ohledu na to, kde se nacházíte, adresáře . a ...
    • .bash_history je speciální soubor Bashe, do kterého se ukládají všechny příkazy, které zadáte do prostředí. Bash si pamatuje historii příkazů, což je velmi užitečné, jak uvidíme později.
    • .bash_logout je další speciální soubor Bashe, který se přečte a spustí vždy, když existuje prostředí přihlášení. Superuživatelé Linuxu ho můžou upravit a přizpůsobit tak prostředí.
    • .bashrc je důležitý konfigurační soubor Bashe, který se spouští při každém spuštění nového prostředí. Pokud se rozhodnete tento soubor otevřít a podívat se na něj, buďte opatrní při provádění změn, protože mohou mít nezamýšlené důsledky.

Vyvolání historie a automatické dokončování příkazů

Když zadáváte složité příkazy, jako je tento, snadno uděláte chybu:

ls -a .azure/commands/202?*.log

Bash naštěstí nabízí několik funkcí, které vám pomůžou.

Vyvolání předchozích příkazů

  1. Zkuste zadat tento příkaz, který obsahuje překlep (203? místo 202?):

    ls -a .azure/commands/203?*.log
    
  2. Měl by se vám zobrazit tento výstup, který vás upozorní, že neexistují žádné soubory odpovídající danému vzoru:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. Namísto zadávání celého příkazu znovu a opravy chyby můžete vyvolat dříve zadané příkazy pomocí kláves šipka nahoru a šipka dolů. Zkuste použít klávesu šipka nahoru a znovu vyvolat nesprávný příkaz. Potom ho pomocí klávesy šipka vlevo opravte tak, že poslední 3 nahradíte 2. Znovu stiskněte Enter a odešlete opravený příkaz.

    Když klávesu šipka nahoru stisknete několikrát po sobě, vrátíte se zpět o několik příkazů. Pomocí klávesy šipka dolů přejděte k novějším příkazům.

  4. Teď by se měl zobrazit výstup podobný tomuto. Uvidíte, že příkaz fungoval správně a zobrazil se seznam souborů odpovídajících danému vzoru.

    .azure/commands/2020-01-29.21-56-35.login.103.log
    .azure/commands/2020-01-29.21-56-38.account_set.112.log
    

Automatické dokončování

Řekněme, že si chcete přečíst obsah jednoho ze souborů, které jste právě vyhledali. Můžete použít příkaz cat (zkratka pro „concatenate“ (zřetězit)) k vytištění obsahu souboru na obrazovku.

  1. Pokud chcete tento příkaz použít, měli byste použít úplný název souboru, například:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Je to ale dlouhý text a snadno v něm uděláte chybu. Místo toho můžete použít základní funkci automatického dokončování v Bashi, která udělá většinu práce za vás. Zkuste zadat:

    cat .a
    

    Potom stiskněte klávesu Tab. Co se stane?

  3. V příkazu by se měla zobrazit zbývající část slova „azure/“:

    cat .azure/
    

    Pokračujte v psaní začátků slov a pomocí tabulátoru je automaticky dokončujte. Mějte na paměti, že pokud existuje nějaká nejednoznačnost, Bash nic nevyplní. Můžete dvakrát stisknout klávesu Tab a Bash vytiskne všechny soubory a adresáře v zadané cestě, které odpovídají písmenům, která jste už zadali.

  4. Zkoušejte to, dokud se nedostanete ke skutečnému souboru .log v adresáři příkazů. Potom stiskněte Enter a použijte příkaz cat k vytištění jeho obsahu na obrazovku. Může vypadat přibližně takto:

    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity
    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
    

    Mějte na paměti, že pokud už jste zadali špatné písmeno, Bash nebude schopen správně odhadnout, jaké písmeno jste chtěli zadat.

Použití man

Právě jsme použili příkaz cat, ale zatím toho o něm moc nevíte. Vyzkoušejte příkaz man k vyvolání dalších informací o příkazu cat.

  1. Zadejte následující příkaz, pomocí kterého lépe pochopíte, co je cat a jak se používá:

    man cat
    

    Ano, do prostředí jste zadali „man cat“. Příkazy Bash mohou být tajemné i vtipné.

  2. Měl by se zobrazit výstup podobný tomuto:

    CAT(1)                                       User Commands                                       CAT(1)
    
    NAME
           cat - concatenate files and print on the standard output
    
    SYNOPSIS
           cat [OPTION]... [FILE]...
    
    DESCRIPTION
           Concatenate FILE(s) to standard output.
    
           With no FILE, or when FILE is -, read standard input.
    
           -A, --show-all
                  equivalent to -vET
    
           -b, --number-nonblank
                  number nonempty output lines, overrides -n
    
           -e     equivalent to -vE
    
    ...
    
  3. Pomocí šipek nahoru a dolů procházejte stránku manuálu a zadáním q ji ukončete.

Změna adresářů

Pojďme si procvičit ještě jeden příkaz Bash: cd.

Při používání prostředí se vždycky nacházíte uvnitř nějakého adresáře – stejné je to se složkami v počítači nebo na Macu. Pokud chcete změnit složky, použijte příkaz cd (change directory (změnit adresář)).

Je to jednoduché. Ale pojďme si to trochu procvičit.

  1. Nejprve zadejte tento příkaz, abyste se ujistili, že jste na správném místě:

    cd ~
    

    Tento příkaz vás přesunul zpět do vašeho speciálního domovského adresáře v prostředí, pokud jste tam už předtím nebyli.

  2. Ještě jednou to překontrolujte pomocí příkazu pwd:

    pwd
    
  3. Měl by se zobrazit výstup podobný tomuto:

    /home/yourname
    

    ~ je další speciální znak v Bashi, který odkazuje na tento domovský adresář. Pomocí ~ můžete odkazovat na umístění /home/yourname bez ohledu na to, kde v prostředí se nacházíte.

  4. Pojďme se přepnout do adresáře, ve kterém jsou uložené soubory protokolu (byli jsme v něm dříve):

    cd .azure/commands/
    

    Celý příkaz můžete zadat sami nebo můžete pomocí klávesy Tab použít automatické dokončování.

    Měli byste teď vidět, že řádek, kde zadáváte příkazy, vypadá jinak. Zobrazuje, kde v prostředí se nacházíte:

    yourname@Azure:~/.azure/commands$
    
  5. Zkuste použít speciální syntaxi .. a přesunout se o jeden adresář výše:

    cd ..
    

    Teď byste měli být ve struktuře adresáře o jednu úroveň výše a váš příkazový řádek by měl vypadat takto:

    yourname@Azure:~/.azure$
    

Skvělá práce! Podnikli jste první kroky k tomu, abyste se stali odborníky na Bash. Pokračujme v učení.

Kontrola znalostí

1.

Na jaký adresář byste přepnuli, pokud jste zadali cd . příkaz Bash?