logo

Úvod do Linux Shell a Shell Scripting

Pokud používáme jakýkoli hlavní operační systém, nepřímo interagujeme s skořápka . Při spuštění Ubuntu, Linux Mint nebo jakékoli jiné distribuce Linuxu komunikujeme s shellem pomocí terminálu. V tomto článku probereme linuxové shelly a shell skriptování, takže než pochopíme shell skriptování, musíme se seznámit s následující terminologií:

  • Jádro
  • Shell
  • Terminál

Obsah

Co je to jádro?

Jádro je počítačový program, který je jádrem operačního systému počítače, s úplnou kontrolou nad vším v systému. Spravuje následující prostředky systému Linux –



  • Správa souborů
  • Řízení procesu
  • I/O management
  • Správa paměti
  • Správa zařízení atd.

Často se mýlí, že Linus Torvalds vyvinul OS Linux, ale ve skutečnosti je zodpovědný pouze za vývoj linuxového jádra.

Kompletní systém Linux = Kernel + GNU systémové utility a knihovny + další skripty pro správu + instalační skripty.

Co je Shell?

Shell je speciální uživatelský program, který poskytuje uživateli rozhraní pro používání služeb operačního systému. Shell přijímá od uživatelů příkazy čitelné pro člověka a převádí je na něco, čemu jádro rozumí. Jedná se o interpret příkazového jazyka, který provádí příkazy čtené ze vstupních zařízení, jako jsou klávesnice nebo ze souborů. Shell se spustí, když se uživatel přihlásí nebo spustí terminál.

c++ dělicí řetězec
Linux Shell

Linux Shell

Shell je obecně rozdělen do dvou kategorií –

  • Shell příkazového řádku
  • Grafický shell

Shell příkazového řádku

K prostředí Shell mohou uživatelé přistupovat pomocí rozhraní příkazového řádku. Speciální program nazvaný Terminál v Linuxu/macOS nebo Příkazový řádek v OS Windows slouží k zadání pro člověka čitelných příkazů, jako je cat, ls atd., a poté se spustí. Výsledek se poté zobrazí na terminálu uživateli. Terminál v systému Ubuntu 16.4 vypadá takto –

linuxový příkazový řádek

linuxový příkazový řádek

Na výše uvedeném snímku obrazovky ls příkaz s -l volba je provedena. Zobrazí seznam všech souborů v aktuálním pracovním adresáři ve formátu dlouhého výpisu.
Práce s shellem příkazového řádku je pro začátečníky trochu obtížná, protože je těžké si zapamatovat tolik příkazů. Je velmi silný; umožňuje uživatelům ukládat příkazy do souboru a provádět je společně. Tímto způsobem lze snadno automatizovat jakýkoli opakující se úkol. Tyto soubory se ve Windows obvykle nazývají dávkové soubory a Shell Skripty v systémech Linux/macOS.

Grafické shelly

Grafické shelly poskytují prostředky pro manipulaci s programy založenými na grafickém uživatelském rozhraní (GUI) tím, že umožňují operace, jako je otevírání, zavírání, přesouvání a změna velikosti oken, stejně jako přepínání fokusu mezi okny. Windows OS nebo Ubuntu OS lze považovat za dobrý příklad, který poskytuje GUI uživateli pro interakci s programem. Uživatelé nemusí zadávat příkazy pro každou akci. Typické GUI v systému Ubuntu –

GUI Shell

GUI Shell

seznam písem v gimpu

Pro systémy Linux je k dispozici několik shellů, jako např.

  • BASH (Bourne Again SHell) – Jedná se o nejpoužívanější shell v systémech Linux. Používá se jako výchozí přihlašovací prostředí v systémech Linux a v macOS. Lze jej nainstalovat i na OS Windows.
  • CSH (C SHell) – Syntaxe C shellu a jeho použití jsou velmi podobné programovacímu jazyku C.
  • KSH (Korn SHell) – Korn Shell byl také základem pro standardní specifikace POSIX Shell atd.

Každý shell dělá stejnou práci, ale rozumí různým příkazům a poskytuje různé vestavěné funkce.

Co je to terminál?

Program, který je zodpovědný za poskytování rozhraní uživateli, aby mohl přistupovat k shellu. V zásadě umožňuje uživatelům zadávat příkazy a zobrazovat výstup těchto příkazů v textovém rozhraní. V terminálu se spouštějí velké skripty, které jsou napsány za účelem automatizace a provádění složitých úkolů.


Pro přístup k terminálu jednoduše vyhledejte v terminálu vyhledávacího pole a dvakrát na něj klikněte.

otevřený terminál

alya manasa

Zde se můžete podívat, jak vypadá terminál Red Hat Linuxu.

terminál

Shell skriptování

Shelly jsou obvykle interaktivní, což znamená, že přijímají příkazy jako vstup od uživatelů a spouštějí je. Někdy však chceme provádět hromadu příkazů rutinně, takže musíme pokaždé zadat všechny příkazy do terminálu.

Protože shell může také přijímat příkazy jako vstup ze souboru, můžeme tyto příkazy zapsat do souboru a spustit je v shellu, abychom se vyhnuli této opakované práci. Tyto soubory se nazývají Shell skripty nebo Shell programy . Skripty prostředí jsou podobné dávkovému souboru v systému MS-DOS. Každý skript shellu je uložen s `.sh` přípona souboru, např. myscript.sh.

Skript shellu má syntaxi stejně jako jakýkoli jiný programovací jazyk. Pokud máte nějaké předchozí zkušenosti s jakýmkoli programovacím jazykem, jako je Python, C/C++ atd. Bylo by velmi snadné s ním začít.

Skript shellu obsahuje následující prvky –

  • Klíčová slova Shell – if, else, break atd.
  • Shell příkazy – cd, ls, echo, pwd, touch atd.
  • Funkce
  • Kontrolní tok – if..then..else, case and shell loops etc.

Proč potřebujeme shell skripty?

Existuje mnoho důvodů, proč psát skripty shellu:

  • Aby se zabránilo opakované práci a automatizaci
  • Správci systému používají skriptování shellu pro rutinní zálohování.
  • Monitorování systému
  • Přidání nových funkcí do shellu atd.

Některé výhody shell skriptů

  • Příkaz a syntaxe jsou přesně stejné jako ty přímo zadané v příkazovém řádku, takže programátoři nemusí přecházet na úplně jinou syntaxi
  • Psaní shellových skriptů je mnohem rychlejší
  • Rychlý start
  • Interaktivní ladění atd.

Některé nevýhody shell skriptů

  • S náchylností k nákladným chybám může jediná chyba změnit příkaz, což může být škodlivé.
  • Pomalá rychlost provádění
  • Návrhové chyby v syntaxi nebo implementaci jazyka
  • Nehodí se pro velké a složité úkoly
  • Na rozdíl od jiných skriptovacích jazyků poskytují minimální datovou strukturu. atd.

Jednoduchá ukázka skriptování shellu pomocí Bash Shell

Pokud pracujete na terminálu, něco, co procházíte hluboko v adresářích. Pak pro příchod několika adresářů v cestě musíme provést příkaz jako je tento, jak je uvedeno níže, abychom se dostali do adresáře python:

příkaz sed
přejděte do adresáře python:

přejděte do adresáře python:

Je to docela frustrující, tak proč ne, můžeme mít nástroj, kde stačí zadat název adresáře a můžeme na něj přímo skočit, aniž bychom museli spouštět cd../ příkaz znovu a znovu. Uložte skript jako skok.sh

bash
# !/bin/bash # A simple bash script to move up to desired directory level directly function jump() {  # original value of Internal Field Separator  OLDIFS=$IFS  # setting field separator to '/'  IFS=/  # converting working path into array of directories in path  # eg. /my/path/is/like/this  # into [, my, path, is, like, this]  path_arr=($PWD)  # setting IFS to original value  IFS=$OLDIFS  local pos=-1  # ${path_arr[@]} gives all the values in path_arr  for dir in '${path_arr[@]}'  do  # find the number of directories to move up to  # reach at target directory  pos=$[$pos+1]  if [ '' = '$dir' ];then  # length of the path_arr  dir_in_path=${#path_arr[@]}  #current working directory  cwd=$PWD  limit=$[$dir_in_path-$pos-1]  for ((i=0; i; i++))  do  cwd=$cwd/..  done  cd $cwd  break  fi  done }>

Prozatím nemůžeme spustit náš shell skript, protože nemá oprávnění. Musíme to udělat spustitelným zadáním následujícího příkazu –

$ chmod +x cesta/k/našemu/souboru/skok.sh

Nyní, abychom to zpřístupnili při každé relaci terminálu, musíme to vložit .bashrc soubor.

.bashrc je shell skript, který Bash shell spouští, kdykoli je interaktivně spuštěn. Účelem souboru .bashrc je poskytnout místo, kde můžete nastavit proměnné, funkce a aliasy, definovat naši výzvu a definovat další nastavení, která chceme použít, kdykoli otevřeme nové okno terminálu.

Nyní otevřete terminál a zadejte následující příkaz:

ankita dave

$ echo source ~/cesta/k/našemu/souboru/jump.sh>> ~/.bashrc

Nyní otevřete svůj terminál a vyzkoušejte novou funkci skoku zadáním následujícího příkazu-

$ skok dir_name

stejně jako níže uvedený snímek obrazovky:

skok dir_name

skok dir_name

Závěr

V tomto článku jsme se dozvěděli o základních částech linuxových systémů: o jádru, které vše řídí, o shellu, který nám umožňuje interakci s operačním systémem, a o terminálu, našem rozhraní pro zadávání příkazů. Prozkoumali jsme příkazový řádek a grafické shelly, jako je BASH, a pochopili jsme, že terminál je místo, kde zadáváme naše příkazy. Článek představil skriptování shellu, způsob, jak automatizovat úlohy pomocí jednoduchých skriptů, a rozebral výhody a nevýhody jejich použití. Praktický příklad demonstroval vytvoření skriptu pro rychlou navigaci v adresáři. Nakonec jsme viděli, jak zajistit, aby skript fungoval a byl přístupný v každé terminálové relaci. Tento článek je průvodcem pro začátečníky, jak porozumět a používat linuxové shelly a skriptování v shellu. linux je dobrý jazyk, je napsán v jazyce linux