Cvičení – vyzkoušení Bashe
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.
Pomocí příkazu
ls
zobrazíte seznam všech souborů a podadresářů v aktuálním adresáři:ls
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.
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
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ů.
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
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
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ář. Ať jste kdekoli, pokud vytisknete všechny skryté soubory a adresáře, uvidíte.
a..
vytisknete..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 užitečné později..bash_logout
je další speciální soubor Bash, který se čte a spouští pokaždé, když existuje přihlašovací prostředí. 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ů
Zkuste zadat tento příkaz, který obsahuje překlep (
203?
místo202?
):ls -a .azure/commands/203?*.log
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
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íte2
. Znovu stiskněte Enter a odešlete opravený příkaz.Použití klávesy Šipka nahoru několikrát v řádku vás přesune zpět více příkazů. Pomocí klávesy šipka dolů přejděte k novějším příkazům.
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.
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
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?
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 nejednoznačnost, Bash nic nezaplní. Pomocí klávesy Tab můžete dvakrát vytisknout všechny soubory a adresáře v dané cestě, které odpovídají zadaným písmenům.
Pusťte se do skutečného .log souboru v příkazovém adresáři. 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 jste už zadali nesprávné 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
.
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é.
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 ...
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.
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.
Ještě jednou to překontrolujte pomocí příkazu
pwd
:pwd
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.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$
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í.