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
Obcování s ďáblem 13: Další triky
18. října 2001, 00.00 | Dnes si ukážeme poslední fintu standardního výstupu; příště se už budeme věnovat konkrétním příkazům.
Dnes si ukážeme poslední fintu standardního výstupu; příště se už budeme věnovat konkrétním příkazům.
Předání výstupu shellu
Se standardním výstupem v unixových shellech existuje ještě jeden kouzelný trik: můžeme jej předat přímo shellu, aby jej zařadil do příkazového řádku! Stačí takový příkaz zapsat mezi dvojici obrácených apostrofů.
Vzpomeňte si na určování standardních složek, ve kterých se vyhledávají programy — v osmém dílu jsme to dělali takhle:
292 a/b/c> PATH=$PATH:/tmp/a/b/c
Co kdybychom však chtěli přidat k cestě právě aktuální adresář? Samozřejmě, mohli bychom si jej zobrazit příkazem pwd a pak jej opsat (nebo, trochu lépe, převzít pomocí schránky a příkazů Copy a Paste); unixové shelly však nabízejí pohodlnější řešení:
164 /tmp> PATH=$PATH:`pwd`
Tento příkaz nejprve spustí příkaz pwd, a jeho výstupem pak nahradí celou konstrukci `pwd`. Výsledný příkazový řádek pak provede.
(Nezapomeňte, že práce s proměnnými shellu je v různých shellech různá — v tcsh bychom museli pro stejný účel použít příkaz "setenv PATH $PATH\:`pwd`".)
Ukažme si ještě jeden složitější příklad, při kterém se zároveň seznámíme se dvěma novými příkazy:
Dejme tomu, že bychom rádi archivovali nějaká data do souboru, jehož jméno bude pro lepší orientaci obsahovat datum a čas archivace. Pro vlastní vytvoření archivu nám poslouží skvěle příkaz gnutar ve formátu
gnutar -czf <jméno archivu> <archivovaná data>
jak ale zařídit, aby jméno archivu obsahovalo dnešní datum? Pozorný čtenář už jistě tuší, jak na to, zvláště pamatuje-li si, jak jsme v jedenáctém dílu použili příkaz date — ten prostě zobrazí datum a čas:
167 /tmp> date
Mon Oct 15 23:44:37 CEST 2001
168 /tmp>
Řešení ovšem nebude tak úplně jednoduché, jak by se na první pohled mohlo zdát. Příkaz gnutar totiž dvojtečku interpretuje speciálním způsobem; proto ji nemůžeme použít ve jménech archivů, jež příkazem gnutar vytváříme. Prozatím, abychom si zjednodušili práci, bude lepší se zbavit i mezer.
Na takovou práci je ideální standardní příkaz tr (TRanslate): ten umí načíst standardní vstup, všechny určené znaky zaměnit jinými, a výsledek odešle na standardní výstup. V nejjednodušší podobě má dva argumenty: znaky, které se mají měnit, a znaky, jež se mají použít namísto nich. Chceme-li tedy třeba zaměnit dvojtečku tečkou a mezeru podtržítkem, můžeme použít příkaz "tr ': ' '._'".
Nyní už je jasné i řešení:
169 /tmp> gnutar -czf archiv`date | tr ': ' '._'`.tar.gz qq
170 /tmp> ls -l ar*
-rw-r—r— 1 ocs wheel 29226 Oct 16 00:12 archivTue_Oct_16_00.12.39_CEST_2001.tar.gz
171 /tmp>
To by na chvíli mohlo stačit!
Ačkoli pořád ani zdaleka neznáme všechny triky a možnosti, jež shelly nabízejí, máme už docela slušnou průpravu k tomu, abychom mohli s výhodou používat řadu nejrůznějších příkazů.
V příštích pokračováních našeho seriálu se proto soustředíme na konkrétní příkazy: naučíme se vyhledávat soubory příkazem find, vysvětlíme si regulární výrazy a ukážeme si možnosti příkazů grep a sed, naučíme se upravovat výstup příkazem awk, a mnoho dalšího.
Jeden příkaz si ale popíšeme hned teď: jedná se o příkaz man, který zobrazí popis jakéhokoli jiného příkazu. Prostě zadáte "man <jméno příkazu>", a dozvíte se všechny potřebné detaily.
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á