2024-07-17 10:32 Doba čtení: 9 min

Jak spustit příkaz pomocí shellového skriptu v Linuxu

Způsoby spouštění příkazů v Linuxu pomocí skriptů

Linux, jakožto operační systém založený na textovém rozhraní, nabízí uživatelům rozsáhlou sadu nástrojů a možností. Mezi klíčové dovednosti v Linuxu patří automatizace úloh pomocí skriptů. Tyto skripty představují textové soubory obsahující posloupnost příkazů, které se provádí v daném pořadí.

Základní principy skriptování v shellu

Skripty v shellu jsou velice efektivním prostředkem pro automatizaci v Linuxu. Umožňují spojovat více příkazů do jednoho souboru a spouštět je jediným pokynem. To značně usnadňuje práci, šetří čas a umožňuje efektivně řešit komplexní operace.

Mechanismus skriptů spočívá v interpretaci příkazů v nich obsažených. V Linuxu existuje mnoho shellů, nejběžnější je Bash (Bourne Again Shell). Ačkoli skripty napsané pro jeden shell obvykle fungují i v jiných, mohou se vyskytovat drobné rozdíly v syntaxi.

Proč je skriptování v shellu tak užitečné?

  • Automatizace opakovaných úkolů: Můžete automatizovat rutinní úkony, jako je zálohování dat, monitorování systému nebo zpracování souborů.
  • Zjednodušení komplexních úloh: Složité procesy lze rozložit na menší, lépe zvládnutelné kroky, které se dají snadno seřadit do skriptu.
  • Garantované pořadí spouštění příkazů: Skripty zajišťují, že příkazy se provedou v předem určeném pořadí, čímž se eliminuje riziko chyb z manuálního zadávání.
  • Tvorba vlastních nástrojů: Můžete vytvářet vlastní nástroje a utility pro zefektivnění práce a automatizaci často prováděných úkonů.

Jak spouštět příkazy ze skriptů

Základy tvorby skriptů

Začíná se vytvořením textového souboru, který je skriptem. Každý skript by měl začínat řádkem:

#!/bin/bash

Tento řádek udává systému, který shell se má použít pro interpretaci skriptu. Následně se do skriptu zapisují požadované příkazy.

Použití příkazu exec

Příkaz exec umožňuje spustit nový proces a nahradit jím stávající proces. V kontextu skriptů to znamená, že po spuštění daného příkazu skript skončí.

#!/bin/bash

Spustí příkaz ls a ukončí skript

exec ls -l

Použití příkazu sh

S pomocí sh lze spustit shell s příkazem. Skript se provede a po dokončení se proces shellu ukončí.

#!/bin/bash
Spustí příkaz date a ukončí skript
sh -c "date"

Použití příkazu source

Příkaz source umožňuje spuštění příkazů ze skriptu v aktuálním prostředí. To je užitečné pro zpřístupnění proměnných a funkcí definovaných ve skriptu v aktuálním shellu.

#!/bin/bash
Spustí příkaz echo a nastaví proměnnou
source <(echo "echo 'Hello world!'" && echo "MY_VAR=test")
echo $MY_VAR

Spouštění na pozadí

Příkazy je možné spouštět na pozadí pomocí znaku ampersand (&). Díky tomu lze pokračovat v práci v shellu, zatímco se příkaz vykonává v pozadí.

#!/bin/bash
Spustí příkaz sleep na pozadí
sleep 10 &
echo "Příkaz běží na pozadí"

Práce s proměnnými

Skripty umožňují snadnou práci s proměnnými. Proměnné lze definovat uvnitř skriptu a používat je při spouštění příkazů.

#!/bin/bash
Nastavení proměnné
MY_FILE="text.txt"
Spuštění příkazu s použitím proměnné
cat $MY_FILE

Efektivní tvorba skriptů

  • Komentáře: Vkládejte komentáře do skriptů, abyste vysvětlili, co jednotlivé příkazy dělají. To ulehčí orientaci v kódu.
  • Testování: Důkladně otestujte skripty v testovacím prostředí před nasazením do produkce, aby se odhalily případné chyby.
  • Využívejte dostupné nástroje: Linux disponuje širokou škálou nástrojů pro práci se soubory, textem a dalšími, naučte se je efektivně používat.
  • Bezpečnost: Dbejte na bezpečnost a nepoužívejte skripty z nedůvěryhodných zdrojů. Zkontrolujte, zda neobsahují škodlivý kód.

Závěr

Shell skripty jsou velmi mocný nástroj pro automatizaci úloh v Linuxu. Umožňují spojovat příkazy do jednoho souboru a spouštět je jediným příkazem. Tím se ušetří čas a energie a zjednoduší se i složité operace.

Doporučuje se naučit se různé příkazy a nástroje v Linuxu. Existuje mnoho online materiálů, které pomohou s učením a pochopením skriptování v shellu.

Časté otázky (FAQ)

1. Jak se spouští skript?

V terminálu zadáním názvu souboru, například: ./muj_skript.sh

2. Jak se používají proměnné?

Proměnné se definují pomocí rovnítka (=), například: MOJE_PROM=hodnota. Pro použití proměnné v příkazu se použije znak dolar ($), například: echo $MOJE_PROM

3. Existují nástroje pro tvorbu skriptů?

Ano, například:

  • Nano: Jednoduchý textový editor.
  • Vim: Pokročilý textový editor.
  • GNU Screen: Nástroj pro práci s více okny v terminálu, umožňující spouštění a správu více skriptů současně.

4. Jak se ladí skripty?

Použijte příkaz set -x, který zobrazí každý spuštěný příkaz. Možné je i použití nástrojů pro ladění jako gdb.

5. Jak se přidávají komentáře?

Komentáře začínají znakem #. Všechno za tímto znakem na daném řádku se ignoruje.

6. Jak vytvořit skript spouštěný po restartu systému?

Použijte nástroj cron, což je plánovač úloh umožňující spouštění skriptů v určených intervalech.

7. Jak zjistit, zda skript běží?

Příkazem ps se zobrazí všechny spuštěné procesy. Pro konkrétní skript lze použít ps aux | grep "název_skriptu".

8. Jak zastavit skript?

Použijte příkaz kill, přičemž je potřeba znát ID procesu (PID) skriptu, které zjistíte pomocí příkazu ps. Například: kill -9 1234 (1234 je PID).

9. Kde hledat další informace o skriptech?

Informace lze hledat v manuálových stránkách k příkazům nebo na webových stránkách jako Stack Overflow, Linux.com nebo Google.

10. Jak se používají cykly a podmínky?

Skripty podporují cykly for a while pro opakované provádění příkazů a podmíněné příkazy if, else a elif pro řízení běhu programu.

Klíčová slova: skript, linux, bash, příkaz, automatizace, skriptování, programování, terminál, proměnná, funkce, cron, ladění, komentář, cyklus, podmínka, exec, sh, source, set -x, ps, kill, gdb, nano, vim, GNU Screen, Google, Linux.com, Stack Overflow

Petra Kovářová
Autor
Czechia

Sleduje mobilní technologie, Android/iOS a praktické návody pro uživatele.

Předchozí článek
Jak nainstalovat a nakonfigurovat VNC na Debian 11
Další článek
Použití nástroje Kubescape pro skenování zranitelností