====== Bash (Bourne Again SHell) ====== **Bash** je vylepšená verze původního Unixového shellu (sh). Byl vytvořen v rámci projektu [[GNU]] Brianem Foxem v roce 1989. Dnes je výchozím shellem pro většinu linuxových distribucí a klíčovým nástrojem pro správce systémů, vývojáře a [[DevOps]] inženýry. ===== 1. Základní principy fungování ===== Bash funguje v cyklu **REPL** (Read-Eval-Print Loop): 1. **Read:** Přečte příkaz, který uživatel napsal. 2. **Eval:** Vyhodnotí příkaz (expanze proměnných, wildcards, hledání cesty k programu). 3. **Print:** Spustí program a vypíše výsledek na standardní výstup. 4. **Loop:** Čeká na další příkaz. ===== 2. Klíčové funkce Bashe ===== ==== Příkazová runda (Piping & Redirection) ==== Jednou z největších sil Bashe je schopnost propojovat jednoduché programy do složitých řetězců: * **Standardní výstup (STDOUT):** ''ls > soubory.txt'' (zapíše výpis do souboru). * **Roura (Pipe):** ''cat data.txt | grep "Chyba" | wc -l'' (přečte soubor, najde řádky s chybou a spočítá je). ==== Expanze a Wildcards ==== * **Hvězdička (*):** Zastupuje libovolný počet znaků (např. ''rm *.log'' smaže všechny logy). * **Dolar ($):** Přístup k proměnným (např. ''echo $USER''). ===== 3. Programování v Bashi (Bash Scripting) ===== Bash skripty umožňují automatizovat opakující se činnosti. Skript je v podstatě textový soubor se seznamem příkazů. ==== Struktura skriptu ==== Každý skript by měl začínat tzv. **Shebangem**, který říká systému, jaký interpret použít: #!/bin/bash # Toto je komentář echo "Zálohuji data..." tar -czf zaloha.tar.gz /home/uzivatel/dokumenty echo "Záloha hotova." ==== Logické konstrukce ==== Bash podporuje podmínky, cykly a funkce: * **Podmínky:** ''if [ $a -gt $b ]; then ... fi'' * **Cykly:** ''for i in {1..5}; do echo $i; done'' ===== 4. Uživatelské přizpůsobení ===== Chování Bashe lze ovlivnit v konfiguračních souborech: * **.bashrc:** Spouští se pro každý nový terminál. Zde se definují **aliasy** (zkratky). * **.bash_profile:** Spouští se při přihlášení uživatele. **Příklad aliasu:** ''alias ll='ls -la --color=auto' '' ===== 5. Srovnání s jinými shelly ===== ^ Shell ^ Charakteristika ^ | **sh** | Původní Bourne shell, velmi jednoduchý, dnes se používá pro čistou kompatibilitu. | | **Bash** | Standard, bohaté funkce, skvělý pro interaktivní práci i skripty. | | **Zsh** | Modernější, populární na macOS, pokročilé doplňování příkazů (plugin Oh My Zsh). | | **Fish** | Extrémně uživatelsky přívětivý, barevný, ale není plně kompatibilní s Bashem. | ===== 6. Proč je Bash nepostradatelný? ===== 1. **Správa serverů:** Většina cloudových instancí se spravuje vzdáleně přes SSH právě pomocí Bashe. 2. **[[CI/CD]] Pipelines:** Automatizační skripty v GitLabu nebo GitHub Actions jsou často psány v Bashi. 3. **Rychlost:** Často je rychlejší napsat jednořádkový příkaz v Bashi než hledat funkci v grafickém rozhraní. --- > **Tip pro začátečníky:** Naučte se klávesovou zkratku **Tab**. Bash za vás automaticky doplní názvy souborů a příkazů, což dramaticky zrychluje práci. //Související: [[Linux]], [[I/O]], [[DevOps]], [[Python]]//