Shellový skript

Shellový skript (tiež shell skript, angl. shell script) je počítačový program určený na spustenie v unixovom shelli, teda v príkazovom interpreteri.[1] Rôzne dialekty shellových skriptov sa považujú za jazyky príkazov. K typickým operáciám, ktoré shellové skripty vykonávajú, patrí práca so súbormi, spúšťanie programov a výpis textu. Skript, ktorý pripraví prostredie, spustí program a vykoná potrebné upratovanie alebo záznam do denníka (logovanie), sa v angličtine nazýva wrapper (obal).
Pojem sa používa aj všeobecnejšie na označenie automatizovaného režimu práce so shellom operačného systému. Rôzne operačné systémy používajú pre tieto funkcie vlastné pomenovania. Všetky unixové systémy obsahujú aspoň jeden shell podľa normy POSIX.[2]
Vlastnosti
[upraviť | upraviť zdroj]Komentáre
[upraviť | upraviť zdroj]Komentáre shell ignoruje. Zvyčajne sa začínajú znakom mriežky (#) a pokračujú až do konca riadka.[3]:5
Voliteľný skriptovací jazyk
[upraviť | upraviť zdroj]Takzvaný shebang (alebo hash-bang) je osobitný druh komentára, podľa ktorého systém určí, aký interpreter má súbor vykonať. Shebang musí byť na prvom riadku súboru a začínať sa znakmi „#!“.[3]:5 V unixových operačných systémoch sa znaky za predponou „#!“ interpretujú ako cesta k spustiteľnému programu, ktorý bude skript interpretovať.[4][5]:241
Skratky
[upraviť | upraviť zdroj]Shellový skript môže poskytnúť pohodlnú obmenu systémového príkazu, pri ktorej sa osobitné nastavenia prostredia, prepínače príkazu alebo dodatočné spracovanie výstupu uplatnia automaticky, a to tak, že nový skript sa stále správa ako úplne bežný unixový príkaz.
Príkladom je verzia príkazu ls na výpis súborov s kratším názvom l, ktorá sa bežne uloží do používateľovho adresára bin ako /home/pouzivatel/bin/l a má vopred nastavenú predvolenú sadu prepínačov.
#!/bin/sh
LC_COLLATE=C ls -FCas "$@"
Prvý riadok tu pomocou shebangu určuje, ktorý interpreter má vykonať zvyšok skriptu, a druhý riadok vypíše zoznam s prepínačmi pre označenie typu súboru, výpis v stĺpcoch, všetky súbory (žiadny nevynechá) a veľkosť v blokoch. Nastavenie LC_COLLATE=C určuje predvolené poradie triedenia tak, aby sa nezlučovali veľké a malé písmená a aby sa skryté súbory (angl. dotfiles, súbory s názvom začínajúcim bodkou) nepremiešali s bežnými názvami súborov v dôsledku toho, že sa interpunkcia v názvoch ignoruje (skryté súbory sa zvyčajne zobrazujú iba pri použití prepínača ako -a). Výraz "$@" spôsobí, že všetky parametre zadané príkazu l sa odovzdajú ako parametre príkazu ls, takže všetky bežné prepínače a ďalšia syntax, ktorú ls pozná, sa dajú naďalej používať.
Používateľ potom môže na najčastejšie používaný krátky výpis jednoducho použiť l.
Okrem toho, že skripty poskytujú predvolené nastavenia pre príkaz, umožňujú aj automaticky spustiť viac príkazov pri jednom vyvolaní skriptu. Nasledujúci skript, ll, pred spustením výpisu iba vymaže z terminálu všetok ostatný text.
#!/bin/sh
clear
ls -al "$@"
Rovnako ako v predchádzajúcom príklade toto volanie ls -al vypíše súbory a adresáre v adresári, z ktorého sa skript spúšťa, alebo v adresároch zadaných na príkazovom riadku za ll, ktoré sa automaticky dosadia za "$@". Prepínače -la tu spôsobia, že sa zobrazí „celý“ (angl. all) obsah adresára v „dlhom“ (angl. long) formáte.
Dávkové spracovanie
[upraviť | upraviť zdroj]Shellové skripty umožňujú, aby sa viacero príkazov, ktoré by sa inak zadávali ručne na príkazovom riadku, vykonalo automaticky, bez čakania na to, kým používateľ spustí každý krok postupnosti. Napríklad v adresári s tromi súbormi zdrojového kódu v jazyku C možno namiesto ručného zadávania štyroch príkazov potrebných na zostavenie výsledného programu vytvoriť skript pre shelly vyhovujúce norme POSIX, tu nazvaný build a uložený v tom istom adresári, ktorý ich skompiluje automaticky:
#!/bin/sh
echo 'compiling...'
cc -c foo.c
cc -c bar.c
cc -c qux.c
cc -o myprog foo.o bar.o qux.o
echo 'done.'
Skript umožní používateľovi uložiť upravovaný súbor, pozastaviť editor, jednoducho spustiť ./build, čím vytvorí aktualizovaný program, otestovať ho a vrátiť sa do editora. Neskôr však skripty tohto typu nahradili nástroje ako make, ktoré sa špecializujú na zostavovanie programov.
Zovšeobecnenie
[upraviť | upraviť zdroj]Jednoduché dávkové úlohy nie sú pri ojedinelých úlohách nezvyčajné, no použitie cyklov, podmienok a premenných shellu dáva používateľom oveľa väčšiu flexibilitu. Skript pre POSIX sh, ktorý prevádza obrázky vo formáte JPEG na obrázky PNG, pričom názvy obrázkov sa zadávajú na príkazovom riadku – aj pomocou zástupných znakov – namiesto toho, aby boli vymenované v skripte, sa dá vytvoriť takýmto súborom, uloženým zvyčajne napríklad ako /home/pouzivatel/bin/jpg2png:
#!/bin/sh
# set $img to each of the jpgs in the command arguments
for img in "$@"; do # for each given image...
# use ${img%.jpg} to get $img w/o the .jpg
png=${img%.jpg}.png # filename for successful PNG
tmp=tmp.png # filename before sure it worked
echo "converting '$img'..."
# Use ImageMagick's "convert" to write our new PNG
# image into our $tmp file - which may fail!
if convert "$img" "$tmp" ; then # if it works...
# convert worked (since we're in here)
# (this script assumes "mv" always succeeds)
mv "$tmp" "$png" # rename tmp file to target png
echo "converted $img to $png"
else
# convert failed (since we're in here)
# tell the user about it
echo "conversion to $png failed, result in $tmp"
exit 1 # exit, the 1 indicates an error
fi # the end of the "if" test construct
done # the end of the "for" loop
echo 'all conversions successful'
# now the script exits with 0 (default) showing success
Príkaz jpg2png potom možno spustiť na celý adresár plný obrázkov JPEG jednoducho zadaním /home/pouzivatel/bin/jpg2png *.jpg.
Programovanie
[upraviť | upraviť zdroj]Mnohé moderné shelly poskytujú aj rôzne vlastnosti, ktoré sa inak vyskytujú iba vo vyspelejších programovacích jazykoch na všeobecné použitie, napríklad riadiace konštrukcie, premenné, komentáre, polia, podprogramy a podobne. Vďaka nim je možné písať ako shellové skripty aj pomerne zložité aplikácie. Stále ich však obmedzuje to, že väčšina jazykov shellu nemá alebo takmer nemá podporu dátových typov, tried, vlákien, zložitej matematiky a ďalších bežných vlastností plnohodnotných jazykov a že sú spravidla oveľa pomalšie ako kompilovaný kód alebo interpretované jazyky navrhnuté s dôrazom na rýchlosť.
Pri programovaní v shelli sú užitočné aj programy sed, awk a Perl.[5]:74 Perl a Tcl majú k dispozícii aj knižnice na tvorbu grafického rozhrania.
Typické jazyky shellov
[upraviť | upraviť zdroj]Rodina Bourne shellu
[upraviť | upraviť zdroj]Štandardný jazyk shellu podľa normy POSIX, „sh“, vychádza z pôvodného Bourne shellu (sh). Ten sa už bežne nepoužíva, ale nasledujúce programy implementujú jazyk tejto rodiny a zostávajú rozšírené:
- Almquist shell (
ash), reimplementácia Bourne shellu, ktorú napísal Kenneth Almquist.[6]- BusyBox, súbor malých programov, ktorý sa často vyskytuje vo vstavaných systémoch, obsahuje verziu
ash, ktorá v takých systémoch zvyčajne slúži ako jedinýsh. - Debian Almquist shell (
dash), odnož shellu ash z NetBSD, ktorú vytvoril projekt Debian ako rýchlejšiu náhradubashv skriptoch na inštaláciu balíkov.[7] Obsahuje niektoré užitočné rozšírenia, napríkladlocal.[8]
- BusyBox, súbor malých programov, ktorý sa často vyskytuje vo vstavaných systémoch, obsahuje verziu
- GNU Bash (
bash), shell projektu GNU kompatibilný s normou POSIX. Prináša množstvo nových funkcií vrátane mnohých z ksh.[9] - Z shell (
zsh), shell s liberálnou licenciou a mnohými rozšíreniami. V predvolenom nastavení nie je veľmi kompatibilný s Bourne shellom, obsahuje však príkazemulatena kompatibilitu s mnohými inými shellmi.
Medzi kedysi populárne shelly patria:
- Pôvodný Bourne shell (
sh), ktorý mal mnoho variantov pod mnohými rôznymi licenciami a s rôznymi rozšíreniami.- Old shell (
osh), „reimplementácia štandardného interpretera príkazov zo šiestej edície systému UNIX“[10]
- Old shell (
- KornShell (
ksh), shell odvodený od Bourne shellu, ktorého autorom je David Korn; výrazne ovplyvnil neskoršie shelly. - pdksh, klon ksh vydaný ako voľné dielo.
Bourne shell bol v niektorých ohľadoch ovplyvnený jazykom ALGOL 68, konkrétne pri voľbe konštrukcií riadenia toku: if ~ then ~ elif ~ then ~ else ~ fi, case ~ in ~ esac.[11][12]
Iné unixové shelly
[upraviť | upraviť zdroj]Už nie sú populárne, ale sú historicky významné:
- Tenex C Shell (
tcsh) a jeho predchodca C shell (csh) - Tcl shell (
tclsh)
Shelly C a Tcl majú syntax riadenia toku dosť podobnú syntaxi rovnomenných programovacích jazykov. (Druhý z nich je v skutočnosti založený na interpreteri Tcl a poskytuje celý jazyk Tcl.)
Novšie shelly, ktoré nevychádzajú z Bourne shellu a bežne sa používajú v unixových systémoch a systémoch UNIX:
- Nushell (
nu) - xonsh (
xonsh), shell založený na jazyku Python; jeho jazyk je nadmnožinou jazyka Python 3.[13] - Fish (
fish), ktorý nie je kompatibilný s normou POSIX.[14] - PowerShell (
pwsh)
(Nushell, xonsh a PowerShell sú multiplatformové aj mimo unixových systémov: fungujú natívne aj vo Windows.)
Iné shelly príkazového riadku
[upraviť | upraviť zdroj]Mnohé programovacie jazyky majú interaktívne prostredie REPL (angl. read–eval–print loop), ktoré možno používať ako shell. Patria k nim napríklad prostredia pre Python, Ruby, C, Javu, Perl, Pascal, Rexx a ďalšie. Rôzne shelly spolu s nástrojmi ako awk, sed a grep a jazykmi BASIC, Lisp, C a ďalšími prispeli k vzniku programovacieho jazyka Perl.[15]
Štandardným shellom systému Microsoft Windows je cmd.exe, ktorý má len základné skriptovacie možnosti. Čiastočne je kompatibilný so svojím ešte jednoduchším predchodcom COMMAND.COM.
Takzvané vzdialené shelly, napríklad
- Remote Shell (
rsh) - Secure Shell (
ssh)
sú v skutočnosti iba nástroje na spustenie zložitejšieho shellu na vzdialenom systéme a samy nemajú vlastnosti shellu.
Iné skriptovacie jazyky
[upraviť | upraviť zdroj]Mnohé výkonné skriptovacie jazyky, napríklad Rexx, Python, Perl a Tcl, vznikli na riešenie úloh, ktoré sú pre tradičné shellové skripty príliš rozsiahle, zložité alebo opakujúce sa, a pritom sa vyhýbajú réžii spojenej s kompilovanými jazykmi, ako sú C alebo Java.[16]
Hoci sa o rozdiele medzi skriptovacími jazykmi a vyššími programovacími jazykmi na všeobecné použitie často diskutuje, skriptovacie jazyky sa zvyčajne vyznačujú tým, že sa interpretujú, majú zjednodušenú syntax a používajú sa najmä na automatizáciu úloh, koordináciu systémových operácií a písanie takzvaného glue code (kódu, ktorý prepája komponenty).[17]:6 Aj keď skriptovacie jazyky ako Python, Rexx alebo JavaScript podporujú preklad do bajtkódu alebo na zvýšenie výkonu používajú kompiláciu just-in-time (JIT), stále sa bežne nazývajú „skriptovacie jazyky“ pre ich historické spojenie s automatizáciou, jednoduchými nástrojmi a skriptovacími prostrediami, a nie s vývojom samostatných aplikácií.
Skriptovanie je formou programovania. Kým „skriptovanie“ môže zdôrazňovať jednoduchú automatizáciu zameranú na konkrétnu úlohu, širší pojem „programovanie“ zahŕňa skriptovanie aj vývoj softvéru v kompilovaných alebo štruktúrovaných jazykoch. Skriptovanie teda spočíva v písaní kódu, ktorý počítaču prikazuje vykonať konkrétne úlohy, a tým spĺňa základnú definíciu programovania.[17]:5–6
Životný cyklus
[upraviť | upraviť zdroj]Shellové skripty často slúžia ako počiatočná fáza vývoja softvéru a neskôr sa často prevádzajú na inú implementáciu, najčastejšie do jazykov Perl, Python alebo C. Riadok shebang umožňuje úplne skryť tento implementačný detail vnútri skriptu, namiesto toho, aby bol viditeľný ako prípona názvu súboru, a umožňuje plynulú reimplementáciu v inom jazyku bez akéhokoľvek vplyvu na koncových používateľov.
Hoci súbory s príponou „.sh“ sú zvyčajne nejakým druhom shellového skriptu, väčšina shellových skriptov príponu názvu súboru nemá.[18][19][20][21] Aby sa shellový skript dal spustiť zadaním jeho názvu ako príkazu, musí mať súbor nastavené oprávnenie na spustenie (angl. execute): shell pri hľadaní príkazu v adresároch premennej PATH spúšťa iba spustiteľné súbory.[6]
Výhody a nevýhody
[upraviť | upraviť zdroj]Jednou z najväčších výhod písania shellových skriptov je, že príkazy a syntax sú presne rovnaké ako pri priamom zadávaní na príkazovom riadku. Programátor nemusí prechádzať na úplne inú syntax, ako by musel, keby skript písal v inom jazyku alebo keby použil kompilovaný jazyk.
Napísať shellový skript je často oveľa rýchlejšie ako napísať ekvivalentný kód v iných programovacích jazykoch. Medzi mnohé výhody patrí jednoduchý výber programov a súborov, rýchly štart a interaktívne ladenie. Shellový skript môže zabezpečiť postupnosť krokov a rozhodovanie okolo existujúcich programov a pri stredne veľkých skriptoch je výhodou absencia kompilácie. Interpretované spúšťanie uľahčuje vpísať do skriptu ladiaci kód a znova ho spustiť, aby sa chyby našli a opravili. Aj používatelia, ktorí nie sú odborníkmi, môžu pomocou skriptov prispôsobiť správanie programov a shellové skripty poskytujú aj určitý obmedzený priestor na paralelné spracovanie viacerých procesov.
Na druhej strane je programovanie v shelli náchylné na drahé chyby. Neúmyselné preklepy ako rm * .html (namiesto zamýšľaného rm *.html) sú v komunite používateľov Unixu povestné; jediná medzera navyše zmení príkaz, ktorý maže súbory s príponou .html, na príkaz, ktorý vymaže všetky súbory v adresári.[22] Podobné problémy môžu z príkazov cp a mv urobiť nebezpečné zbrane a nesprávne použitie presmerovania > môže vymazať obsah súboru.[23]
Ďalšou významnou nevýhodou je pomalé vykonávanie a potreba spustiť nový proces takmer pre každý vykonaný príkaz shellu. Ak sa úloha skriptu dá splniť zostavením rúry (angl. pipeline), v ktorej väčšinu práce vykonajú efektívne filtrovacie príkazy, spomalenie sa zmierni, no zložitý skript je zvyčajne o niekoľko rádov pomalší ako bežný kompilovaný program, ktorý vykonáva rovnakú úlohu.
Problémom je aj kompatibilita medzi rôznymi platformami. Larry Wall, autor jazyka Perl, v známom výroku napísal, že „je ľahšie preniesť shell ako shellový skript“ (angl. It's easier to port a shell than a shell script), čím narážal na nekonzistentné správanie programov príkazového riadka v rôznych systémoch.[24]
Podobne zložitejšie skripty môžu naraziť na obmedzenia samotného skriptovacieho jazyka shellu; tieto obmedzenia sťažujú písanie kvalitného kódu a rozšírenia, ktorými rôzne shelly zmierňujú problémy pôvodného jazyka shellu, môžu problémy ešte zhoršiť.[25]
Mnohé nevýhody niektorých skriptovacích jazykov vyplývajú z chýb v návrhu syntaxe jazyka alebo jeho implementácie a nemusí ich nevyhnutne spôsobovať použitie textového príkazového riadka; existuje viacero shellov, ktoré používajú iné programovacie jazyky shellu alebo dokonca plnohodnotné jazyky, napríklad Scsh, ktorý používa jazyk Scheme.
Interoperabilita skriptovacích jazykov
[upraviť | upraviť zdroj]Mnohé skriptovacie jazyky majú podobnú syntax a vlastnosti, pretože dodržiavajú normu POSIX, a viaceré shelly ponúkajú režimy, ktoré napodobňujú iné shelly alebo zachovávajú kompatibilitu s nimi. Skripty napísané pre jeden shell tak často fungujú v inom s minimálnymi zmenami.
Napríklad Bash podporuje veľkú časť syntaxe pôvodného Bourne shellu a ponúka režim vyhovujúci norme POSIX na zlepšenie prenositeľnosti. Bash však obsahuje aj množstvo rozšírení, ktoré v norme POSIX nie sú a ktoré sa bežne nazývajú bashizmy (angl. bashisms). Hoci tieto vlastnosti rozširujú možnosti skriptovania, môžu znížiť kompatibilitu s inými shellmi, ako je dash alebo ksh.
Skript, ktorý používa vlastnosti špecifické pre určitý shell, môže mať na prvom riadku zodpovedajúci shebang (#!), aby operačný systém na spustenie skriptu použil určený interpreter (napr. /bin/bash). To však nestačí, ak sa nová vlastnosť pridá do shellu bez zmeny jeho názvu alebo ak niekto skript spustí ručne (napr. sh foo.sh).
Skript môže tiež zistiť, v ktorom shelli beží, a skončiť skôr, než sa použijú chýbajúce vlastnosti, napríklad:
#!/bin/bash
die() { printf '%s\n' "$1" >&2; exit 1; }
if [ "$BASH_VERSINFO" -lt 4 ]; then
die "Not bash 4 or above. Need bash 4 or above."
fi
# This is a bashism, specifically supported only by bash 4.0+.
declare -A dictionary
# ... rest of script
V uvedenom príklade sú úvodné riadky skriptu napísané v čistom shelli podľa normy POSIX. Keď skript spustí iný shell ako bash, premenná $BASH_VERSINFO nebude nastavená; tým sa podmienka splní a skript skončí skôr, než sa dostane k nekompatibilnému riadku. Keď skript spustí bash starší ako verzia 4.x, rovnakú podmienku splní číselné porovnanie (-lt). (Príkaz declare -A deklaruje asociatívne pole, vlastnosť, ktorá je v bashi nová od verzie 4.0 a v predchádzajúcich verziách sa nevyskytuje.)
Shellové skripty v iných operačných systémoch
[upraviť | upraviť zdroj]Softvér na zabezpečenie interoperability, ako je Cygwin, MKS Toolkit, Interix (predtým súčasť balíka Microsoft Windows Services for UNIX), Hamilton C shell a UWIN (AT&T Unix for Windows), umožňuje spúšťať unixové shellové programy v systémoch založených na Windows NT, hoci niektoré funkcie nemusia byť plne podporované na starších platformách MS-DOS a Windows 95.
Skriptovacie jazyky sú zo svojej podstaty rozšíriteľné. V Unixe a ďalších systémoch vyhovujúcich norme POSIX sa na rozšírenie možností shellových skriptov pri spracovaní reťazcov a čísel používajú awk a sed. Jazyky Tcl, Perl, Rexx a Python majú knižnice na tvorbu grafického rozhrania a dajú sa použiť na naprogramovanie funkcií a procedúr pre shellové skripty, ktoré sú úzkym hrdlom z hľadiska rýchlosti (C, Fortran, jazyk symbolických inštrukcií a pod. sú ešte oveľa rýchlejšie), a na doplnenie funkcií, ktoré jazyk shellu nemá, ako sú sokety a iné možnosti pripojenia, náročné spracovanie textu, práca s číslami, ak ich volajúci skript nepodporuje, samomodifikujúci sa kód (angl. self-modifying code), techniky ako rekurzia, priamy prístup k pamäti, rôzne druhy triedenia a ďalšie, ktoré sú v hlavnom skripte ťažké alebo nemožné. Visual Basic for Applications a VBScript možno použiť na ovládanie a komunikáciu s tabuľkovými procesormi, databázami, skriptovateľnými programami všetkých druhov, telekomunikačným softvérom, vývojovými nástrojmi, grafickými nástrojmi a ďalším softvérom, ku ktorému je prístup cez Component Object Model.
Referencie
[upraviť | upraviť zdroj]- ↑ KERNIGHAN, Brian W.; PIKE, Rob. The UNIX Programming Environment. [s.l.] : Prentice Hall, Inc., 1984. Dostupné online. ISBN 0-13-937699-2. Kapitola 3. Using the Shell, s. 94. (po anglicky)
- ↑ ROBBINS, Arnold; BEEBE, Nelson H. F.. Classic Shell Scripting. [s.l.] : O'Reilly Media, 2005. Dostupné online. ISBN 978-0-596-00595-5. S. 6. (po anglicky)
- 1 2 JOHNSON, Chris. Pro Bash Programming: Scripting the Linux Shell. [s.l.] : Apress, 2009. Dostupné online. ISBN 978-1-4302-1997-2. (po anglicky)
- ↑ exec(3p) – POSIX Programmer's Manual [online]. [cit. 2026-10-15]. Dostupné online. (po anglicky)
- 1 2 KOCHAN, Stephen G.; WOOD, Patrick H.. Unix Shell Programming. [s.l.] : Sams Publishing, 2003. Dostupné online. ISBN 9780672324901. (po anglicky)
- 1 2 sh(1) – NetBSD Manual Pages [online]. man.netbsd.org, [cit. 2026-10-15]. Dostupné online. (po anglicky)
- ↑ KRAWETZ, Neal. Ubuntu: Powerful Hacks and Customizations. [s.l.] : John Wiley & Sons, 2011. ISBN 9781118080382. S. 178. (po anglicky)
- ↑ 10. Files [online]. Debian Policy Manual, [cit. 2026-10-15]. Dostupné online. (po anglicky)
- ↑ GNU Bash [online]. GNU Operating System, [cit. 2026-10-15]. Dostupné online. (po anglicky)
- ↑ osh – manned.org [online]. manned.org, [cit. 2026-10-15]. Dostupné online. Archivované 2025-06-03 z originálu. (po anglicky)
- ↑ Unix Shells By Example, s. 7 – 10.
- ↑ MCILROY, M. D.. A Research Unix Reader: Annotated Excerpts from the Programmer's Manual, 1971–1986 [online]. Bell Labs (CSTR 139), 1987, [cit. 2026-10-15]. Dostupné online. (po anglicky)
- ↑ Xonsh – Python-powered shell [online]. [cit. 2026-10-15]. Dostupné online. (po anglicky)
- ↑ The case for fish [online]. waitwhat.sh, [cit. 2026-09-04]. Dostupné online. (po anglicky)
- ↑ WALL, Larry; CHRISTIANSEN, Tom; ORWANT, Jon. Programming Perl. 5. vyd. [s.l.] : O'Reilly Media, 2012. ISBN 9781449303587. S. Preface. (po anglicky)
- ↑ FLANAGAN, David. JavaScript: The Definitive Guide. [s.l.] : O'Reilly Media, 2020. ISBN 9781491952023. S. 2. (po anglicky)
- 1 2 LUTZ, Mark. Learning Python. 5. vyd. [s.l.] : O'Reilly Media, 2013. ISBN 9781449355739. (po anglicky)
- ↑ ROBBINS, Arnold; HANNAH, Elbert; LAMB, Linda. Learning the vi and Vim Editors. [s.l.] : O'Reilly Media, Inc., 2008. Dostupné online. ISBN 9781449313258. S. 205. (po anglicky)
- ↑ EASTTOM, Chuck. Essential Linux Administration: A Comprehensive Guide for Beginners. [s.l.] : Course Technology/Cengage Learning, 2012. ISBN 978-1435459571. S. 228. (po anglicky)
- ↑ KUMARI, Sinny. Linux Shell Scripting Essentials. [s.l.] : Packt Publishing Ltd, 2015. ISBN 9781783552375. S. 2. (po anglicky)
- ↑ TAYLOR, Dave; PERRY, Brandon. Wicked Cool Shell Scripts, 2nd Edition: 101 Scripts for Linux, OS X and UNIX Systems. [s.l.] : No Starch Press, 2016. Dostupné online. ISBN 9781593276027. S. 5. (po anglicky)
- ↑ SHOTTS, William. The Linux Command Line. [s.l.] : No Starch Press, 2019. Dostupné online. ISBN 9781593279523. S. 29. (po anglicky)
- ↑ ALBING, Carl; VOSSEN, JP; NEWHAM, Cameron. Bash Cookbook. [s.l.] : O'Reilly Media, 2007. Dostupné online. ISBN 9780596526788. S. 52–53. (po anglicky)
- ↑ WALL, Larry. Finding the last arg [online]. diskusná skupina comp.unix.shell (archív The Unix Heritage Society), 1991-01-04, [cit. 2023-01-05]. Dostupné online. (po anglicky)
- ↑ CHRISTIANSEN, Tom. Csh Programming Considered Harmful [online]. . Dostupné online. (po anglicky)
Pozri aj
[upraviť | upraviť zdroj]Externé odkazy
[upraviť | upraviť zdroj]- Shell Programming na anglických Wikiknihách (po anglicky)
- An Introduction To Shell Programming – Greg Goebel (po anglicky)
- UNIX / Linux shell scripting tutorial – Steve Parker (po anglicky)
- Shell Scripting Primer – Apple (po anglicky)
- Free Unix Shell scripting books (po anglicky)
- Beginners/BashScripting – Ubuntu Linux (po anglicky)
Zdroj
[upraviť | upraviť zdroj]Tento článok je čiastočný alebo úplný preklad článku Shell script na anglickej Wikipédii. Tento článok je čiastočný alebo úplný preklad článku Shellový skript na českej Wikipédii.