Skriptování shellu je důležitou součástí automatizace procesů v Linuxu. Skriptování vám pomůže zapsat posloupnost příkazů do souboru a poté je provést.
To vám ušetří čas, protože nemusíte znovu a znovu psát určité příkazy. Denní úkoly můžete provádět efektivně a dokonce je naplánovat na automatické provádění.
Můžete také nastavit určité skripty, které se mají spustit při spuštění, jako je zobrazení konkrétní zprávy při spuštění nové relace nebo nastavení určitých proměnných prostředí.
Aplikace a použití skriptování jsou četné, tak se pojďme ponořit.
V tomto článku se dozvíte:
- Co je to bash shell?
- Co je to bash skript a jak ho poznáte?
- Jak vytvořit svůj první bash skript a spustit jej.
- Základní syntaxe skriptování shellu.
- Jak zobrazit naplánované skripty systému.
- Jak automatizovat skripty plánováním prostřednictvím úloh cron.
Nejlepší způsob, jak se učit, je cvičit. Velmi vám doporučuji, abyste pokračovali v používání Replit. K běžícímu linuxovému shellu můžete přistupovat během několika minut.
Úvod do Bash Shell
Příkazový řádek Linuxu poskytuje program zvaný shell. V průběhu let se program shellu vyvíjel, aby vyhovoval různým možnostem.
Různí uživatelé mohou být nakonfigurováni pro použití různých shellů. Většina uživatelů však dává přednost tomu, aby zůstala u aktuálního výchozího prostředí. Výchozí shell pro mnoho linuxových distribucí je GNU Bourne-Again Shell (bash). Bash je následován Bourne shellem (sh
).
Když poprvé spustíte shell, použije spouštěcí skript umístěný v .bashrc
nebo .bash_profile
soubor, který vám umožňuje přizpůsobit chování shellu.
Když je shell používán interaktivně, zobrazuje $
když čeká na příkaz od uživatele. Říká se tomu prompt shellu.
[username@host ~]$
Pokud shell běží jako root, výzva se změní na #
. Výzva shellu superuživatele vypadá takto:
[root@host ~]#
Bash je velmi výkonný, protože může zjednodušit určité operace, které je obtížné efektivně provádět s GUI. Pamatujte, že většina serverů nemá grafické uživatelské rozhraní a je nejlepší naučit se používat možnosti rozhraní příkazového řádku (CLI).
Co je to Bash Script?
Bash skript je řada příkazů zapsaných v souboru. Ty jsou čteny a prováděny programem bash. Program se provádí řádek po řádku.
Můžete například přejít na určitou cestu, vytvořit složku a vytvořit v ní proces pomocí příkazového řádku.
Stejnou sekvenci kroků můžete provést uložením příkazů do bash skriptu a jeho spuštěním. Skript můžete spustit libovolný počet opakování.
Jak poznáte Bash Script?
Přípona souboru .sh
.
Podle konvencí pojmenování končí bash skripty .sh
. Bash skripty však mohou běžet naprosto v pořádku i bez sh
rozšíření.
Skripty začínají úderem bash.
Skripty jsou také označeny shebang
. Shebang je kombinací bash #
a bang !
sledoval cestu bash shell. Toto je první řádek skriptu. Shebang řekne shellu, aby to provedl přes bash shell. Shebang je prostě absolutní cesta k interpretovi bash.
Níže je uveden příklad příkazu shebang.
#! /bin/bash
Cesta bash programu se může lišit. Později uvidíme, jak to identifikovat.
Práva k provedení
Skripty mají spouštěcí práva pro uživatele, který je spouští.
Prováděcí právo je reprezentováno x
. V níže uvedeném příkladu má můj uživatel rwx
(číst, zapisovat, spouštět) práva pro soubor test_script.sh

Barva souboru
Spustitelné skripty se zobrazují v jiné barvě než zbytek souborů a složek.
V mém případě se skripty s právy provádění zobrazují zeleně.

Jak vytvořit svůj první skript Bash
Vytvořme jednoduchý skript v bash, jehož výstupem je Hello World
.
Vytvořte soubor s názvem hello_world.sh
touch hello_world.sh
Najděte cestu ke svému bash shellu.
which bash

V mém případě je cesta /usr/bin/bash
a zahrnu to do shebangu.
Napište příkaz.
Budeme echo
„ahoj světe“ do konzole.
Náš skript bude vypadat nějak takto:
#! usr/bin/bash
echo "Hello World"
Upravte soubor hello_world.sh
pomocí libovolného textového editoru a přidejte do něj výše uvedené řádky.
Poskytněte svému uživateli práva k provádění.
Upravte oprávnění k souboru a povolte spuštění skriptu pomocí příkazu níže:
chmod u+x hello_world.sh
chmod
upravuje stávající práva souboru pro konkrétního uživatele. Přidáváme +x
uživateli u
.
Spusťte skript.
Skript můžete spustit následujícími způsoby:
./hello_world.sh
bash hello_world.sh
.
Zde je výstup:

Základní syntaxe skriptování Bash
Stejně jako jakýkoli jiný programovací jazyk se i bash skriptování řídí sadou pravidel pro vytváření programů srozumitelných pro počítač. V této části budeme studovat syntaxi bash skriptování.
Jak definovat proměnné
Proměnnou můžeme definovat pomocí syntaxe variable_name=value
. Chcete-li získat hodnotu proměnné, přidejte $
před proměnnou.
#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name

Tux je také jméno maskota Linuxu, tučňáka.

Aritmetické výrazy
Níže jsou uvedeny operátory podporované bash pro matematické výpočty:
Operátor | Použití |
---|---|
+ | dodatek |
- | odčítání |
* | násobení |
/ | divize |
** | umocnění |
% | modul |
Uveďme si několik příkladů.

Číselné výrazy lze také vypočítat a uložit do proměnné pomocí níže uvedené syntaxe:
var=$((expression))
Zkusme příklad.
#!/bin/bash
var=$((3+9))
echo $var

Zlomky nejsou správně vypočteny pomocí výše uvedených metod a nejsou zkráceny.
Pro výpočty v desítkové soustavě , můžeme použít bc
příkaz k získání výstupu na určitý počet desetinných míst. bc
(Bash Calculator) je kalkulačka příkazového řádku, která podporuje výpočet až do určitého počtu desetinných míst.
echo "scale=2;22/7" | bc
Kde scale
definuje počet desetinných míst požadovaných ve výstupu.

Jak číst vstup uživatele
Někdy budete muset shromáždit uživatelské vstupy a provést příslušné operace.
V bash můžeme převzít uživatelský vstup pomocí read
příkaz.
read variable_name
Chcete-li uživatele požádat o vlastní zprávu, použijte -p
vlajka.
read -p "Enter your age" variable_name
Příklad:
#!/bin/bash
echo "Enter a numner"
read a
echo "Enter a numner"
read b
var=$((a+b))
echo $var

Logické operátory numerického srovnání
Porovnání se používá ke kontrole, zda se příkazy vyhodnotí jako true
nebo false
. K porovnání dvou tvrzení můžeme použít níže uvedené operátory:
Operace | Syntaxe | Vysvětlení |
---|---|---|
Rovnost | číslo1 -ekv číslo2 | je num1 rovno num2 |
Větší než rovno | číslo1 -ge číslo2 | je num1 větší než rovno num2 |
Větší než | číslo1 -gt číslo2 | je num1 větší než num2 |
Je menší než rovno | číslo1 -le číslo2 | je num1 menší než rovno num2 |
Méně než | číslo1 -lt číslo2 | je num1 menší než num2 |
Nerovná se | číslo1 -ne číslo2 | je num1 nerovná se num2 |
Syntaxe :
if [ conditions ]
then
commands
fi
Příklad :
Porovnejme dvě čísla a najdeme jejich vztah:
read x
read y
if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi
Výstup:

Podmíněná prohlášení (rozhodování)
Podmínky jsou výrazy, které se vyhodnotí jako booleovský výraz (true
nebo false
). Ke kontrole podmínek můžeme použít if
, if-else
, if-elif-else
a vnořené podmínky.
Struktura podmíněných příkazů je následující:
if...then...fi
prohlášeníif...then...else...fi
prohlášeníif..elif..else..fi
if..then..else..if..then..fi..fi..
(Vnořené podmínky)
Syntaxe :
if [[ condition ]]
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
K vytvoření smysluplných srovnání můžeme použít AND -a
a NEBO -o
také.
Níže uvedené prohlášení se překládá jako:If a
je větší než 40 a b
je menší než 6.
if [ $a -gt 40 -a $b -lt 6 ]
Příklad :Pojďme najít typ trojúhelníku čtením délek jeho stran.
read a
read b
read c
if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL
elif [ $a == $b -o $b == $c -o $a == $c ]
then
echo ISOSCELES
else
echo SCALENE
fi
Výstup :
Testovací případ č. 1

Testovací případ č. 2

Testovací případ č. 3

Opakování a přeskakování
Cykly For vám umožňují provádět příkazy určitý počet opakování.
Opakování s čísly:
V níže uvedeném příkladu se smyčka bude opakovat 5krát.
#!/bin/bash
for i in {1..5}
do
echo $i
done
Opakování s řetězci:
Můžeme také procházet řetězce.
#!/bin/bash
for X in cyan magenta yellow
do
echo $X
done

Během smyčky
Zatímco cykly kontrolují podmínku a opakují se, dokud podmínka nezůstane true
. Potřebujeme poskytnout příkaz čítače, který zvýší čítač pro provádění řídicí smyčky.
V níže uvedeném příkladu (( i += 1 ))
je příkaz čítače, který zvyšuje hodnotu i
.
Příklad:
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done

Čtení souborů
Předpokládejme, že máme soubor sample_file.txt
jak je uvedeno níže:

Můžeme číst soubor řádek po řádku a tisknout výstup na obrazovku.
#!/bin/bash
LINE=1
while read -r CURRENT_LINE
do
echo "$LINE: $CURRENT_LINE"
((LINE++))
done < "sample_file.txt"
Výstup:

Jak provádět příkazy se zpětnými tiky
Pokud potřebujete do skriptu zahrnout výstup složitého příkazu, můžete tento příkaz napsat do zadních znamének.
Syntaxe:
var=` commands
`
Příklad :Předpokládejme, že chceme získat výstup seznamu přípojných bodů pomocí tmpfs
jejich jménem. Můžeme vytvořit příkaz takto:df -h | grep tmpfs
.
Abychom jej zahrnuli do bash skriptu, můžeme jej uzavřít do zadních znamének.
#!/bin/bash
var=`df -h | grep tmpfs`
echo $var
Výstup:

Jak získat argumenty pro skripty z příkazového řádku
Skriptu je možné při spuštění zadat argumenty.
$@
představuje pozici parametrů počínaje jedničkou.
#!/bin/bash
for x in $@
do
echo "Entered arg is $x"
done
Spusťte to takto:
./script arg1 arg2

Jak automatizovat skripty plánováním přes úlohy cron
Cron je nástroj pro plánování úloh přítomný v systémech podobných Unixu. Úlohy můžete naplánovat tak, aby se spouštěly denně, týdně, měsíčně nebo v určitou denní dobu. Automatizace v Linuxu silně závisí na úlohách cron.
Níže je uvedena syntaxe pro plánování cronů:
# Cron job example
* * * * * sh /path/to/script.sh
Zde *
reprezentovat představuje minuty, hodiny, dny, měsíce, dny v týdnu.
Níže je několik příkladů plánování úloh cronu.
PLÁNOVÁNÍ | PLÁNOVANÁ HODNOTA |
---|---|
5 0 * 8 * | V 00:05 v srpnu. |
5 4 * * 6 | V neděli ve 4:05. |
0 22 * * 1-5 | Ve 22:00 každý den v týdnu od pondělí do pátku. |
O cronu se můžete podrobně dozvědět v tomto příspěvku na blogu.
Jak zkontrolovat existující skripty v systému
Používání crontab
crontab -l
uvádí již naplánované skripty pro konkrétního uživatele.

Použití příkazu find
find
příkaz pomáhá najít soubory na základě určitých vzorů. Protože většina skriptů končí .sh
, můžeme použít vyhledávací skript takto:
find . -type f -name "*.sh"
Kde,
.
představuje aktuální adresář. Podle toho můžete změnit cestu.-type f
označuje, že typ souboru, který hledáme, je textový soubor.*.sh
říká, že mají odpovídat všem souborům končícím na.sh
.

Pokud si chcete přečíst o příkazu find podrobně, podívejte se na můj další příspěvek.
Zabalení
V tomto tutoriálu jsme se naučili základy skriptování shellu. Podívali jsme se na příklady a syntaxi, které nám mohou pomoci napsat smysluplné programy.
Jaká je vaše oblíbená věc, kterou jste se z tohoto tutoriálu naučili? Dejte mi vědět na Twitteru!
Zde si můžete přečíst mé další příspěvky.
Pracovní vektor vytvořený makrovektorem - www.freepik.com