Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Scripty
11. dubna 2002, 00.00 | Dneškem jsme se dostali ze začátečnické úrovně "terminálových zelenáčů" mezi pokročilé: všechny základy už známe, takže se můžeme začít učit používat skripty.
Dneškem jsme se dostali ze začátečnické úrovně "terminálových zelenáčů" mezi pokročilé: všechny základy už známe, takže se můžeme začít učit používat skripty.O co vůbec jde? Základní myšlenka je velmi jednoduchá: jestliže nějaké pořadí příkazů (ne nutně jen přímo v shellu, totéž se týká třeba awk nebo sedu) provádíme často, je hloupé, abychom se s nimi pokaždé znovu psali: namísto toho je uložíme do textového souboru nazvaného skript, a ten "spustíme"; unix se už sám postará o to, aby se ve skutečnosti spustil správný program (shell, awk, sed,...) a aby dostal zadané příkazy ke zpracování.
Nejprve pár příkladů
Vůbec nejjednodušší možný skript je jeden jediný řádek, který voláme dost často na to, aby se nám nechtělo jej psát pokaždé znovu (zkušení unixoví borci vědí, že na to je obvykle šikovnější alias, ale o těch si povíme až jindy).
Dejme tomu, že často pakujeme nějaký projekt — u mne to může být třeba aplikace HexEditor — na /tmp pro odeslání e-mailem, tedy bez generovaných souborů a bez složek CVS, a že už nás přestalo bavit pořád vypisovat odpovídající příkazový řádek. Nic jednoduššího: prostě jej přesně tak jak je uložíme do textového souboru, a nastavíme právo 'x' (spouštění):
1 /tmp> cat > test
gnutar czvf /tmp/HexEdit.tar.gz ~/Projects/Applications/HexEditor --exclude build --exclude CVS
^D
2 /tmp> chmod a+x test
3 /tmp>
Od té chvíle můžeme test používat přesně stejně, jako jakýkoli jiný program:
4 /tmp> ./test
gnutar: Removing leading `/' from absolute path names in the archive
Users/ocs/Projects/Applications/HexEditor/
...
Users/ocs/Projects/Applications/HexEditor/readme.txt
5 /tmp>
Je samozřejmé, že můžeme do skriptu napsat řádků libovolně mnoho; jednotlivé řádky se pak budou provádět postupně. Můžeme také využívat všechny finty a triky, které jsme se naučili: takto např. náš triviální skript rozšíříme, aby nám do složky /Backups uložil kopii vytvořeného archivu, v jejímž jméně je navíc zapsán čas a datum archivace:
13 /tmp> cat > test
gnutar czvf /tmp/HexEdit.tar.gz ~/Projects/Applications/HexEditor --exclude build --exclude CVS
cp /tmp/HexEdit.tar.gz "/Backups/HexEdit of `date`.tar.gz"
^D
14 /tmp>
Tento skript nejprve — stejně jako minulý — zavolá archivaci, a potom výsledek zkopíruje do složky /Backups (a jako součást nového jména použije výstup programu date).
A co dále?
Samozřejmě, skripty toho dokáží mnohem více: můžeme v nich používat proměnné, můžeme dokonce do značné míry programovat (tj. větvit provádění skriptu podle výsledků předchozích akcí, volat příkazy v cyklu, a podobně)... na to na všechno se ale podíváme až v příštích dílech našeho seriálu.
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová