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
Terminál v Mac OS X
Obsah seriálu:
Tak nám zabili NetInfo, paní Müllerová
Jednou z novinek Leoparda, jež nepotěší, je to, že neustále omezovaná podpora geniálně navržené síťové databáze NetInfo dospěla do bodu nula: 10.5 NetInfo nepoužívá, a také samozřejmě nenabízí prostředky pro práci s ním. Pojďme si ukázat, co je k dispozici místo toho.
SIPS - Terminál není jen pro nadšence UNIXu
Článek o tom, že i webdesigner nebo člověk z DTP může používat příkazovou řádku.
Příkaz lsof a obsah sloupce NAME
V minulém dílu jsme si podrobně vysvětlili, co vlastně zobrazuje příkaz lsof ve sloupci FD; zbývá nám tedy už jen poslední "restík", jímž je sloupec NAME.
Co vlastně příkaz lsof vypisuje?
V dnešním pokračování věnovaném příkazu lsof se podíváme podrobněji na to, co příkaz lsof vypisuje na obrazovku. Už od prvého dílu, ve kterém jsme si o tomto příkazu řekli, víme, že je to řada sloupců, obsahujících různé informace o procesech a jejich otevřených kanálech; dnes si ukážeme, jak tyto sloupce do jisté míry řídit, a o jaké sloupce vůbec jde.
A jak to je se soubory?
V poslední řadě dílů se bavíme o procesech a o "zdrojích", jež využívají: řekli jsme si něco o využití procesoru a paměti, a nyní se podíváme na soubory. Především se budeme věnovat příkazu lsof ("LiSt Open Files").
Poslední poznámka k fstab
Minule jsme si popsali způsob, jak se v unixu standardně "montují" jiné disky na místo existujících složek: ukázali jsme si konkrétní příklad se složkou pro odkládací soubory správce virtuální paměti "/private/var/vm", ovšem stejný mechanismus lze použít i pro jakoukoli jinou složku (třeba domovskou či aplikační).
Změna odkládacího disku / fstab
Minule jsme si ukázali, jak změnit místo, kam Mac OS X (přesněji řečeno, jeho dynamický pager) zapisuje soubory, obsahující stránky odebrané procesům: stačilo změnit jediný řádek ve standardním startovacím skriptu /etc/rc. Tento přístup však s sebou nese jeden nepříjemný problém: skript /etc/rc "patří" dodavateli operačního systému, tj. firmě Apple; ta jej proto může kdykoli v rámci upgrade systému změnit.
Změna odkládacího disku
Tentokrát si řekneme, jakým způsobem se dá změnit místo, na kterém Mac OS X má odkládací soubory. Minule jsme se seznámili se základy mechanismu odkládání; víme také, že se o to stará tzv. dynamický pager — samostatný proces, spuštěný automaticky při startu systému.
Kam se stránky ukládají?
Základy virtuální paměti i práce s ní už máme za sebou; na rozloučenou s tímto tématem si ještě ukážeme, kam a jak se stránky, odebrané procesům, ukládají. Nejde jen o teoretické cvičení pro ty, koho zajímá, "co se uvnitř děje"; příště si také řekneme, jak místo ukládání odložených stránek změnit.
Nevychází nám dal a má dáti?
Minule jsme si vysvětlili, jak je možné, že se někdy přečte více stránek z disku, než se na něj uložilo: pageins může být více, než pageouts. Dnes se podíváme na jinou malou záhadu: pokud si totiž dáte práci posčítat hodnoty v různých sloupcích výpisu služby vm_stat, zjistíte, že "to nevychází".
Co to tedy všechno znamená?
V minulém dílu našeho seriálu jsme dokončili popis příkazu vm_stat, který - jako příjemný doplněk obecnějšího topu - nabízí velmi slušný vhled do toho, co se vlastně v systému, konkrétně ve správci virtuální paměti, zrovna děje. Na dnešek jsme si slíbili vysvětlení některých malých záhad z výpisu vm_statu.
Doplněk k topu: vm_stat
V několika minulých dílech našeho seriálu jsme se seznámili s voláním a s možnostmi příkazu top. Dnes si ukážeme ještě jeden jeho příjemný doplněk, který nabízí lepší přehled o celkovém stavu virtuální paměti a stránkování: příkaz vm_stat.
Ještě jednou top
S příkazem top a jeho účelem jsme se seznámili minule; dnes si o něm řekneme malinko víc: seznámíme se s některými jeho šikovnými přepínači.
Skutečný žrout paměti
Minule jsme si ukázali jednoduchý prográmek, který sice alokuje obrovské množství paměti, ale nijak ji nevyužívá. Díky tomu také nijak neomezuje běh ostatních programů, protože nepotřebuje skoro žádnou fyzickou paměť. Daleko horší to ale je v případě, kdy aplikace nejen alokuje spoustu paměti, ale skutečně ji také využívá.
Zpět k příkazu ps
Z toho, co jsme si ukázali v minulých dílech našeho seriálu, je zřejmé, že aplikace může svou prací s pamětí omezit ostatní a/nebo systém jako celek. Všechny potřebné informace o tom, co se se systémem a aplikacemi děje, nám opět nabídne příkaz ps.
A ještě jednou virtuální paměť
Minule jsme si vysvětlili základy virtuální paměti: ukázali jsme si, že kterýkoli proces může volně pracovat s kteroukoli adresou v adresovém prostoru, a správce paměti mu automaticky přidělí "kus" skutečné paměti, který bude prostřednictvím dané adresy dosažitelný. Co když však fyzická paměť dojde?
Virtuální paměť
Abychom si mohli správně vysvětlit jak virtuální paměť funguje, a co to vůbec je, musíme si nejprve ukázat jak vlastně programy s pamětí pracují a zavést několik nových pojmů.
Copak procesor, s pamětí je to horší
Minule jsme si ukázali příklad špatně napsaného programu, který využívá "příliš mnoho" procesoru (a řekli jsme si i jak takový program "zabít"). V praxi ovšem takovéhle programy většinou žádný problém neznamenají.
A k čemu že je "ps" dobré?
V několika minulých dílech jsme si ukázali, jak pracovat s příkazem ps; teď se podíváme na to, kdy a jak se nám to může hodit.
Příkaz ps: několik praktických přepínačů
Ačkoli v zásadě bychom vystačili s tím, co už o příkazu ps víme — mohli bychom si vždy požadované informace vyžádat prostřednictvím přepínače -o a seznamu klíčových slov, a výsledek uspořídat podle potřeby — ve většině případů existuje pohodlnější řešení: ps totiž pro ty nejčastěji využívané služby má speciální přepínače.
Další klíčová slova pro příkaz ps
V minulém dílu jsme se seznámili s některými klíčovými slovy, pomocí nichž si můžeme od příkazu ps vyžádat zobrazení některých konkrétních informací o procesech. Dnes se podíváme na další atributy procesů a jim odpovídající klíčová slova.
Informace o procesech
Minule jsme si orientačně vysvětlili co to je proces, a ukázali jsme si základy příkazu ps, pomocí kterého můžeme o procesech v systému získat podrobnější informace. Dnes se pustíme právě do těch informací: řekneme si, co systém o každém procesu ví, vysvětlíme si k čemu nám to může být dobré, a ukážeme si, jak si tyto informace od příkazu ps vyžádat.
Procesy
V bloku, věnovaném získávání informací o tom, co se to vlastně v našem Mac OS X děje, je asi nejvhodnější začít právě procesy. Nejprve bychom si měli vysvětlit co to vlastně je, a jaký je vztah mezi procesy a programy — dosud jsme oba pojmy používali volně skoro jako synonyma.
Rejstřík a přehled
Vzhledem k tomu, že jsme minule dokončili "první blok" našeho seriálu o příkazovém řádku, je asi načase uvést přehledný rejstřík, ve kterém budou odkazy na všechny příkazy, o kterých jsme se dosud bavili — a ovšem na díly, ve kterých je popisujeme a ve kterých se o nich zmiňujeme.
Příkazy exit a select
Dnes ukončíme naše povídání o skriptech; ukážeme si velmi důležitý příkaz exit, a nakonec si jako malý bonus přidáme příkaz select, který umožňuje velmi pohodlně sestavovat interaktivní skripty.
Příkaz case
Poslední z příkazů pro řízení průběhu scriptu, které si zde ukážeme, bude příkaz case. Ten umožňuje v některých případech mnohem pohodlnější větvení na více alternativ, než odpovídající skupina příkazů if/else.
Příkaz for a pomocné příkazy break a continue
Snad nejužitečnější příkaz cyklu je příkaz for, který dokáže procházet hodnoty z daného seznamu slov.
Jednoduchý cyklus
Po příkazu if, který jsme si ukázali v posledních dílech, se dnes podíváme na základní příkazy cyklu: while, until a repeat. Všechny mají stejný účel: opakovat podle potřeby vícekrát provádění seznamu (tj. požadovaného příkazu nebo jejich skupiny).
Podmínky pro práci se soubory
Minule jsme si ukázali základní podmínkové příkazy, využívané jako součást příkazu if. Dnes si doplníme několik dalších podmínek, jež umožňují bohatou a pohodlnou práci se soubory.
Speciální podmínkové příkazy
V minulém dílu našeho seriálu o využití příkazového řádku jsme se seznámili s příkazem if. Řekli jsme si také, že podmínkou, určující kterou z "větví" then či else shell provede a kterou přeskočí, je seznam — příkaz nebo řada příkazů, jejichž návratová hodnota je určující.
Příkaz if
Pomocí příkazu if můžeme větvit provádění skriptu: jestliže jsou třeba špatně zadané jeho vstupní parametry, chceme vypsat nápovědu; jestliže neexistuje archivační program gnutar, použijeme namísto něj tar... a podobně.
Základní příkazy pro skripty
Samozřejmě, že ve skriptech můžeme používat všechny příkazy shellu; existuje však několik speciálních příkazů, jež se mimo skripty používají jen výjimečně. Na ně se dnes a v několika dalších dílech podíváme podrobněj
Standardní proměnné shellu
Dnes se seznámíme s nejdůležitějšími z ostatních standardních proměnných shellu zsh
Další triky kolem polí...
Dnes budeme pokračovat v ukázkách co všechno se dá v zsh dělat s poli.
Pole hodnot
Shell umožňuje práci s proměnnými, které obsahují pole hodnot; v tomto dílu si ukážeme základní služby, určené pro takovéto využití.
Práce se jmény souborů
Minule jsme si ukázali několik obecných přepínačů, které lze použít při zjišťování hodnoty proměnné. U přepínačů zůstaneme, ale dnes se soustředíme na práci se soubory.
Práce s proměnnými
Proměnné shellu na rozdíl od běžných proměnných programovacích jazyků nabízejí velmi bohatou paletu služeb: můžeme si např. od proměnné, která obsahuje jméno souboru, přímo vyžádat příponu nebo naopak jméno bez přípony
Proměnné shellu, "dědění" hodnot
Ještě chvilku si budeme hrát s příkladem, ve kterém vypisujeme seznam argumentů příkazové řádky, a ukážeme si na jeho základě další důležitý rys práce s proměnnými: jak je to s jejich inicializací?
Skripty a proměnné: aritmetika
Základny práce s proměnnými jsou krajně jednoduché, a už je vlastně z minulých dílů našeho miniseriálu známe. Existuje ovšem předlouhá řada dalších fint a triků, které práci s proměnnými v shellu usnadňují; alespoň několik těch nejšikovnějších a nejdůležitějších si ukážeme.
Shellové skripty a argumenty
Jak víme, skripty lze připravovat pro kterýkoli program, který máme k dispozici — včetně vlastních programů a, jak si ukážeme dnes, dokonce včetně vlastních skriptů (tj. můžeme psát "meta-skripty", jež budou interpretovány naším vlastním skriptem!).
Pro skript může být shell cokoli!
Jak jsme si slíbili minule, dnes se podíváme podrobněji na to, jak psát skripty pro libovolné programy — vedle shellů to nejčastěji bývá sed nebo awk, které už oba známe.
Komentáře, a volba shellu
Samozřejmě, triviální skripty, se kterými jsme se seznámili minule, komentovat nebylo zapotřebí; přesto je vhodné se hned naučit, jak se do skriptů komentáře píší.
Scripty
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.
Skupiny a uživatelé
Každý uživatel může být členem kterékoli skupiny, nebo, chcete-li se na to dívat z druhé strany, kterákoli skupina může obsahovat libovolné množství uživatelů.
Jak je to se skupinami?
Systém přístupových práv unixu (a tedy i Mac OS X) je nám už vcelku jasný; zbývá jen poslední věc: vysvětlit si skupiny.
Vlastník, skupina, ostatní...
Minule jsme si ukázali, že práva jsou vždy určena trojicí přepínačů "r", "w" a "x" (z nichž poslední může kromě hodnot "ano" a "ne" také mít speciální hodnoty "s" pro spustitelné soubory nebo "t" pro složky).
Přístupová práva
Minule jsme si ukázali, co kterému uživateli patří a jak; dnes se povídáme na to, jakým způsobem systém hlídá a vynucuje, aby nikdo "nedělal co nemá".
Vlastnictví objektů
V minulém dílu našeho seriálu jsme si ukázali, co to je uživatel a uživatelské konto; víme kdo je "root", a umíme také mezi různými uživateli přepínat v Terminálu. Dokážeme také podle potřeby spouštět aplikace v rámci "rootovského" konta.
Co je to vlastně "uživatel"?
Jak jsme si slíbili minule, dnes si začneme povídat o snad poslední ze základních věcí, jíž jsme se dosud nezabývali: podíváme se na unixový systém přístupových práv a vlastnictví objektů.
Awk a příkazy
V našem postupném prokousávání se možnostmi příkazu awk jsme se konečně dostali k poslednímu z hlavních bloků — dnes se seznámíme s nejdůležitějšími příkazy, takže už budeme schopni využít téměř všechny možnosti příkazu awk
Obcování s ďáblem: Awk a funkce
Dnes se seznámíme s nejdůležitějšími ze standardních funkcí, jež awk nabízí.
Obcování s ďáblem 27: Awk a výrazy
Jak jsme si slíbili minule, nejprve se velmi stručně seznámíme s několika standardními proměnnými awk, a pak už se pustíme do výrazů.
Awk a proměnné
Minule jsme se zběžně seznámili se základními vlastnostmi awk; z příkazů, jimž rozumí, jsme však viděli jen nejzákladnější příkaz print. Dnes si ukážeme řadu dalších šikovných triků, které můžeme v awk skriptech používat.
Obcování s ďáblem: Další kouzla, aneb awk
Poté, co jsme se naučili ovládat dávkový editor sed, podíváme se na další užitečný příkaz - awk. V mnoha ohledech je podobný sedu, ale jeho síla spočívá ve zpracování textu.
Rozsáhlejší příklad se sedem
V tomto dílu se podíváme na praktické využití příkazu sed - jako názorná ukázka nám poslouží skript, který používám pro překlad ASCII textu do HTML.
Obcování s ďáblem - další finty s příkazem sed
Minule jsme se seznámili se základy příkazu sed; dnes se podíváme na některé jeho další vlastnosti — především možnost omezit platnost příkazu jen na některé řádky.
Zázraky ihned, nemožné na počkání: sed
Dnes si ukážeme nesmírně silný prostředek unixové příkazové řádky - dávkový editor sed. S jeho pomocí dokážeme sestavovat snadno takové editační skripty, pro které bychom jinak museli psát samostatné - a leckdy dost komplikované - aplikace
Obcování s ďáblem 21:K čemu je dobrý grep...
V několika předcházejících dílech jsme se zabývali regulárními výrazy. Teď se seznámíme s některými příkazy, jež s regulárními výrazy pracují, a umožňují nám jejich sílu využít. První grep
Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
Dnes uzavřeme tuto část teorie o používání UNIXu. Poslední finta regulárních výrazů, jíž se budeme podrobněji věnovat, jsou zpětné odkazy.
Obcování s ďáblem 19: Skládání regulárních výrazů
Ve dvou minulých dílech jsme se seznámili se základními kameny regulárních výrazů. Dnes pronikneme dále do tajů a vysvětlíme si další možnosti využití - skládání, opakování a další.
Obcování s ďáblem 18: Speciální regulární výrazy
Minule jsme se seznámili se základními regulárními výrazy, dnes si ukážeme několik speciálních regulárních výrazů:
Obcování s ďáblem 17: Regulární výrazy
Dnešní díl bude tak trošku teoretický. Namísto toho, abychom si ukázali nějaké konkrétní příkazy a jejich využití, budeme se zabývat regulárními výrazy. Časem ale uvidíte, že existuje dlouhá řada případů, kde je znalost regulárních výrazů k
nezaplacení.
Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
V dnešním dílu se rozloučíme s příkazem find; nejprve si však ukážeme ještě několik fint, které se často hodí.
Obcování s ďáblem 15: Příkaz find stokrát jinak
Se základy příkazu find a s jeho nejběžnějšími přepínači -name a -type jsme se seznámili minule. Dnes si ukážeme nejflexibilnější přepínač -exec, a naučíme se příkaz find opravdu používat.
Obcování s ďáblem 14: Vyšší škola hledání souborů
Minule jsme dokončili přehled základních služeb vlastního shellu, dnešní a několik dalších dílů věnujeme ukázkám některých častěji používaných příkazů. Příkaz find si určitě oblíbíte, zvlášť pokuď už máte plné zuby Sherlocka.
Obcování s ďáblem 13: Další triky
Dnes si ukážeme poslední fintu standardního výstupu; příště se už budeme věnovat konkrétním příkazům.
Obcování s ďáblem 11: Standardní vstup a výstup
V rozumném prostředí musí existovat způsob, jak mohou programy vzájemně spolupracovat. Dneska si vysvětlíme, jak pro komunikaci programů mezi sebou použivat standardní vstup a výstup
Obcování s ďáblem 10: Do fronty, pánové, do fronty!
Minule jsme se naučili spouštět více programů zároveň. Dnes si řekneme, jak si vyžádat postupné spuštění více programů, tak, aby byl další spuštěn, když ten předchozí skončí.
Obcování s ďáblem 9: Nové finty na programy
Spustit program již umíme, a také víme, že většina příkazů shellu jsou docela obyčejné programy. Jak je tomu ale s normálními aplikacemi?
Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
Možná vás překvapí, že spouštět programy už vlastně umíme - od začátku vlastně neděláme nic jiného!
Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
Čím více souborů, čím složitější systém, tím častěji se stává, že něco hledáme a nemůžeme najít.
Obcování s ďáblem 6: Pár zbývajících drobností
Se zástupci, aliasy a linky jsme se vyrovnali; dnes probereme několik dalších šikovných triků pro práci se soubory a se složkami. Jak uvidíte, hned první z nich souvisí právě se zástupci; proto jsme si je museli nechat až na teď.
Obcování s ďáblem 5 - Stále soubory, hlavně linky
Ačkoli o "práci se soubory" již mluvíme dost dlouho, dosud jsme se seznámili pouze s příkazy, vhodnými pro jejich prohlížení. Dnes se však již vrhneme na skutečnou "práci" - tj. kopírování, přejmenovávání, rušení a podobně.
Obcování s ďáblem 4 - Další práce se soubory
Minule jsme se naučili využívat základní "triky" shellu pro specifikaci souborů - hvězdičku, hranaté závorky a podobně. Dnes si o nich řekneme malinko více, a podíváme se i na pár dalších příkazů.
Obcování s ďáblem 3 - Práce se soubory
Minule jsme se jen tak "z rychlíku" seznámili s příkazy ls a cd, které nabízejí (velmi zhruba) podobné služby, jako okno Finderu: zobrazují složky a soubory. Dnes se na práci se soubory podíváme blíže.
Obcování s ďáblem 2 - základy
V druhém dílu seriálu už začneme s příkazovým řádkem pracovat a ukážeme si pár nejzákladnějších příkazů.
Obcování s ďáblem
Ačkoli příkazový řádek vyvolává v pravověrných uživatelích Maca nevolnost, vyplatí se s ním umět zacházet: zde si vysvětlíme jak.