Obcování s ďáblem 13: Další triky - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Jaký fotograf/ka získal/a cenu za nejpopulárnější příspěvek v Nikon Photo Contest?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



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):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Dotaz

Autor: Lukas Kalista Muž

Založeno: 20.10.2001, 22:05
Odpovědí: 0

Mel bych jeden dotaz k jedne z drivejsich lekci - mazani souboru. Narazil jsem na problem, ze potrebuji smazat vetsi mnozstvi souboru, ktere jsou ovsem v GUI zamcene (nevim proc, ale tohle se obcas u nekterych souboru ze stareho systemu stava). Klasickym smazanim to nejde, netusim, jestli existuje nejaka alternativa k mazani s Altem pod OS 9 a v prikazove radce se mi to take nepovedlo. A to ani s prikazem "rm -rf soubor" s pravy roota...

Odpovědět na příspěvek

RE: Dotaz

Autor: oc Muž

Založeno: 24.10.2001, 17:58

V 10.1 uz by to melo jit (nezkousel jsem, informace z doslechu), jde o prasarnu HFS+, ktera byla v 10.0 spatne obslouzena.

Tyhle blaznive haefeskove atributy jsou primo spravovat prikazem SetFile; dostaneme se k nemu pozdeji.

oc

Odpovědět na příspěvek

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: