A když si omylem smažete data, nezapomeňte si smazat i zálohu

Odešel mi počítač. Tedy – čistě technicky – on vlastně vůbec neodešel. Odešel totiž jen jeho pevný disk. Počítač (notebook, abych byl přesný) je jinak v poměrně dobrém stavu. Pomineme-li skutečnost, že některé klávesy vypadávají a jiné vydávají zvuk jak psací stroj. A také USB konektory jsou za ty roky docela vyviklané. A pochopitelně, baterka už slouží spíš jenom jako těžítko, aby notebook neklouzal po stole. A obrazovka má rozlišení menší, než podprůměrný smartphone.

Zkrátka a dobře, notebook je spíše jen zastaralý morálně, než že by byl reálně nefunkční. A že mi po téměř 10 letech přišel pomalý, bylo zapříčiněno z naprosto drtivé většiny pouze a jenom tím, že pro mě je zcela běžné mít trvale otevřený prohlížeč s desítkami záložek/stránek (tabů, rozumíme si?). A takové množství stránek s logicky nemá šanci vejít najednou do RAM, a tudíž si systém většinu z nich musí trval odkládat na pevný disk. A nasávat stovky megabytů dat z HDD (ano HDD, notebook je 10 let starý, vzpomínáte?) při každém přepnutí záložky pak prostě trvá. (A pokud člověk kromě prohlížeče otevřel i něco jiného, často se do paměti nevešel web ani jeden, a dlouhé čekání tak nastávalo pokaždé při přepnutí okna.)

Obrazovka notebooku s rozepsaným článkem
Notebook ještě zvládl napsání tohoto článku, i když v značně improvizovaných podmínkách

Když jsem jej, z důvodů, které budu vysvětlovat v následujících odstavcích, nastartoval z flash disku (pomocí live instalačního disku distribuce xubuntu), ukázalo se, že vlastně šlape celkem slušně. Nemít paměť trvale obsazenou desítkami prohlížečových záložek, a nutnost téměř trvale přelévat stovky megabytů mezi pamětí a diskem, vlastně vyřešilo ten hlavní problém s výkonem. Dokonce jsem byl vyloženě překvapen, odhlášení a znovupřihlášení (které si vyžádala nějaká změna nastavení), celé proběhlo jen v mžiku oka (včetně zavření a znovuotevření spuštěných aplikací).

Když on vlastně při zavření prohlížeče vůbec nebyl pomalý. Chvíli mi fakt bylo líto, že bude muset odejít do křemíkového nebe.

Ale já se dnes nechci chlubit tím, jak jsou operační systémy s linuxovým jádrem skvělé, svižné a nenáročné. To konekoneckonců velmi výstižně zvládl sám jeho autor. Chtěl bych vám tady povědět příběh o zálohování, o strachu z jeho nedostatečnosti a tom, jaké fatální následky to nakonec vlastně může mít. Jak již totiž bylo zmíněno, odešel mi disk, a to je přesně ten moment, kdy se člověk modlí k bohu Gigovi, tedy patronovi všech záloh.

Správce úloh: Procesor: 3%, Paměť: 35%, SWAP: 0%.
Při otevření jen několika málo stránek v prohlížeči si najednou počítač brumlá na volnoběh.

Zálohuješ? Ano, jistě, samozřejmě, …

Trocha teorie na úvod: zálohování má jedno jedinné pravidlo: Zálohujete nedostatečně. Nezálohujete dostatečně často, nezálohujete všechno potřebné, nemáte zálohy záloh a jejich zálohy (a nebo jejich zálohy) a další hromada neduhů, která by vydala na samosatný článek. To na úvod víme asi tak všichni.

Já, člověk, který obecně nerad kupuje jak hardware, tak i software, a tudíž vlastním pouze jeden externí disk a žádné placené cloudové uložiště, mám tedy poměrně svázané ruce se zálohováním svého počítače. Moje zálohování tak vlastně obnáší jen čas od času disk připojit a spustit skriptík, který rsync -cuje vybrané složky z počítače na něj. (Pochopitelně, některé kriticky důležité věci mám i porůznu v cloudech, ale to je spíše důsledek než záměr.) A to s tím, že tuto zálohu jsem prováděl obzvláště, když jsem věděl, že mám na disku provedené větší množství změn (např. vytřídění fotek, dokončení nějakého mého projektíku a podob.).

A pak to přišlo. Skoro

Tento systém fungoval poměrně bezproblémově (to česky řečeno znamená, že nebyla potřeba ze zálohy nic obnovovat, takže systém, který je jinak poměrně nedostatečný, neměl příležitost své slabiny ukázat světu). Změna nastala někdy před Vánoci, když se mi, poté, co pár dní pár věcí v počítači nefungovalo úplně jak mělo, objevila v konzoli při některé z činností hláška: „File system is read only“.

Bylo mi celkem jasné o co jde: Disk, nejslabší článek řetězu mého počítače, začíná selhávat. Poučen minulostí jsem systém restartoval a nastartoval z flashky výše zmíněné xubuntu. Tím pádem je možné celý disk „odmountovat“ (softwarově odpojit) a provést na něm kontrolu a opravu chyb. A samozřejmě, ještě předtím zazálohování – pro případ, že by se nezadařilo.

Takovou zvláštní vlastností linuxových systémů je, že vy si klidně můžete smazat celý disk (pro zájemce: sudo rm -rf /) a počítač poměrně vesele poběží dál. Takže se vám klidně může stát, že vám odejde disk a vy to zjistíte až po pár dnech.

Oprava disku proběhla celkem bez problémů. A jak se ukázalo, problém se s periodou několika málo týdnů vracel zpět. To znamenalo přesně dvě věci: Zaprvé, přeinstalování softwarových balíků, které se při opravě poškodily, jsem si zautomatizoval do jednoduchého skriptíku, takže oprava disku se posléze stala celkem rutinnou („restartuj, spusť jeden příkaz, restartuj, spusť druhý příkaz, přihlaš se a funguj jak normálně“). A zadruhé: začal jsem uvažovat o koupi nového počítače.

Ale pak to spadlo úplně

Chtěl jsem si proto rychle dokončit pár rozpracovaných věcí a ze stavu „uvažuji o koupi nového počítače“ se překlopit do stavu „jsem rozhodnutý koupit si nový počítač“ a následně „kupuji si nový počítač“. A stejně jako v Jak jsem (nena)psal bakalářku: To se nakonec nikdy nestalo.

A tak jsem, konkrétně (a zcela přesně) před provedením git commit opět uviděl onu hlášku o uzamčení souborového systému. Tentokrát se oprava nespokojila s prostým proběhnutím a odstraněním nepoužívaných inod. Nyní se na disku objevilo dokonce i několik konfliktů (tj. jeden soubor byl zapsán na dvě místa či naopak – jedno místo na disku se tváří, že obsahuje vícero souborů).

A zde začíná série špatných rozhodnutí a chyb, která vyústila ve ztrátu značného množství dat.

Proč v reálném životě sakra nefunguje Ctrl+Z?

Vystrašen tím, že můj systém (a data v něm) teď aktuálně mohou vypadat asi jako slepenec Arnoldů J. Rimmerů z nepovedené snahy o vytvoření ohromného množství kopií sebe sama, rozhodl jsem se zůstat nastartovaný v systému z flashky, abych zabránil dalším škodám a provést finální zálohu. Vlastně se tím připravit na to, že disk může kdykoliv odejít. (Jinými slovy, přestat jej úplně používat, aby nebylo nic, co bych jeho nečekaným selháním ztratil.)

Nicméně, při dalším průzkumu se ukázalo, že to byla poměrně zbytečná obava; vetšina konfliktů znamenala pouze a jen to, že číslo inod některých souborů se nastavil na nulu či jedničku, a soubory, kterých se to týkalo byly vesměs buďto jen manuálové soubory a nebo soubory v koši. (To se poté později potvrdilo: po restartu zpět do „mého“ systému na disku, naběhl bez sebemenších problémů, dokonce i bez potřeby opravovat poškozené balíky.)

Fantóm Opery

Každopádně, tohoto krizového režimu jsem využil k tomu, abych provedl rozsáhlejší zálohu obsahu disku. Bohužel, jedny z nejdůležitějších dat, která jsem chtěl zazálohovat, byly právě ty ony otevřené (a v poslední době navštívené) stránky v prohlížeči, které dozajista nemalou měrou přispěly k uspíšenému konci životnosti disku. A to je věc, která prostým překopírováním souborů prostě udělat nejde. (I když, je fakt, že kdybych si do nového počítače – či jen do xubuntu – překopíroval celou složku s daty prohlížeče a prohlížeč spustil, je docela vysoká šance, že by data načetl jako svá vlastní a můj export by bylo možné provést i tímto způsobem. Škoda, že mě to nenapadlo dřív…)

Před nějakou dobou jsem si na to vytvořil poměrně roztomilý nástroj (podrobně je popsán v: Export historie prohlížeče: proč to dělat jednoduše, když to jde složitě?). Jenže pro jeho využití je potřeba mít před sebou onen prohlížeč otevřený. A to v době, kdy jsem se připravoval na to, že disk nepřežije ani start systému, natož pak spuštění prohlížeče s desítkami záložek, nějaká snaha o provedení exportu standardní cestou nepřipadala vůbec v úvahu.

„Už dlouho jsem si neexportoval historii prohlížeče. O víkendu to musím udělat.“

já, přesně dva dny před tímto incidentem

Agent s povolením klikat

Nicméně, abych si ušetřil alespoň restart systému, vymyslel jsem trik: V systému, který běží z flashky, si vytvořím nového uživatele, ale řeknu mu, že jeho domovský adresář je totožný s domovským adresářem mého uživatele v počítači. Díky tomu se tak budu moct normálně přihlásit pod tímto novým uživatelem a pracovat s mými daty v počítači, jako byly mé vlastní – a přitom bez potřeby restartu, který by disk mohl dorazit.

Pro jistotu jsem se nového uživatele rozhodl založit přes grafické nabídky. Vypadalo to, že jde o čas a na experimenty s příkazovou řádkou nebyl čas a riziko překlepů a chyb z nepozornosti veliké. A právě proto jsem přesně jednu takovou udělal.

Jedno ze základních pravidel IT říká, že pokud nějaká činnosti či operace proběhla moc rychle, je to pozdeřelé a většinou to nevěstí nic dobrého. Většinou. Asi tak v 0,1% případů to totiž bývá přesně naopak.

Když jsem totiž zvolil domovský adresář nového uživatele, vyskočil na mě dialog o pár odstavcích, který mě varoval, že tento adresář už existuje, jestli ho opravdu chci nastavit a bla bla bla… Dialog jsem jen letmo prolétl očima a zvolil „Ano“. Poté se objevilo obligátní „vyčkejte, probíhá provádění změn“. Dávalo mi to naprostý smysl! Změnil jsem uživatele, který vlastní statisíce souborů, takže se u každého z nich musí tato informace zapsat, přece. Ne?

Ne, ne. Ten dialog se mě snažil varovat, že pokud chci takto nastavit složku novému uživateli, musí být prázdná. A pokud není, bude prázdnou učiněna. (Přiznávám, kdybych se nad tím zastavil a ten dialog si 3x po sobě přečetl, nejspíš by mi došlo, jakou možnost zvolit. Vždyť ale on ten dialog vyloženě zmiňuje „pokud se bojíte ztráty dat, zvolte raději …“, bohužel měl na mysli jiná data než já.)

Dialog varující před smazáním souborů.
Dialog varující před smazáním souborů. A jak byste jej pochopili vy?

A tak se stalo, co se stalo. Domovský adresář na mém pevném disku, tedy všechny mé soubory, byly do posledního smazány. To samo o sobě je průšvih. Existují ovšem způsoby, jak jej zvrátit. Tady se asi objevila další chyba: kdybych byl býval uživatele zakládal přes příkazovou řádku, pravděpodobně by se kromě vyprázdnění jeho domovského adresáře nevytvářely žádné další soubory. Bohužel, vytvořením uživatele přes grafické prostředí automaticky vede k vytvoření základního nastavení (vytvoření složky pro Plochu, Dokumenty a podob.). Už jen to o další malý kousek snížilo šanci, že se historii prohlížeče (ale spolu s tím spoutu dalších dat, o kterých jsem neměl ani ponětí, že bych si je měl zazálohovat) už nikdy nepodaří zachránit.

Nepropadejte panice

Zde jsem ovšem zpanikařil. Vidina toho, že všechna moje data už neexistují v mém počítači, a jedinné místo, kde jsou k nalezení, je 10 let starý externí disk, mě poměrně vyděsila a tak jsem prakticky okamžitě po tomto zjištění rozhodl začít urychleně zálohu obnovovat s vidinou: „když už jsem si smazal všechno nezazálohované, velmi nerad bych přišel i o to zazálohované“.

Že jsi celou tu dobu měl někde na novém, svižném několika terrabytovém disku několikanásobně duplikovanou bitovou kopii celého rozbitého disku, pro případ, že se něco semele, a tento příběh je jen takové veselé povídání o nezávazném experimentování, že? A nebo snad ne?

Zde se asi pro kontext hodí doplnit střípek informace, že při finálním zálohování došlo k nějaké, poměrně hrubé závadě (osobně typoval bych zaškbrtnutí v napájení disku způsobeného vadným USB konektorem či kabelem), která vyústila v to, že se – nyní už i externí – disk poškodil. A při snaze jej opravit mi systém (resp. fsck) řekl něco na způsob: „Sorry jako, tak tohle nedám. Tahle chyba je tak fatální, že to musíš připojit k nějakýmu počítači s Windows a nechat to opravit je“.

Naštěstí se mi podařilo nějaký počítač s Windows oživit a disk celkem lehce opravit. Ale jistě pochopíte, že to na stresu a strachu ze ztráty dat rozhodně neubralo. Ba naopak.

A tak jsem tedy spustil kopírování mých dat ze zálohy na externím disku zpět do počítače. Asi po půl hodině a necelé stovce GB přenesených dat mi došlo, že já bych se vlastně mohl pokusit obnovit některé ze smazaných souborů, před tím, než si je přepíši obnovením zálohy.

A tak jsem uvažoval, co bych si asi tak mohl ještě zkusit zachránit. Ale považoval jsem to za předem prohrané, protože – obnovit jde jen soubory, nikoliv složky či celou adresářovou strukturu – a já, když už bych něco potřeboval zachránit, tak by o rozhodně nebyl jeden jedinný soubor, ale celá složka. I v tom jsem nakonec chyboval.

Po asi půl hodině kopírování jsem si ještě jednou vzpomněl na můj článek o exportu historie prohlížeče. Jedna kapitola se věnuje trošku postrannímu tématu – tomu, jak vlastně celý ten složitý postup exportu je možné s určitou nepřesností obejít jedním SQL dotazem nad jedním SQLite souborem.

Vyhlašujeme pátrání po souboru neznámého jména, střední velikost, přípona žádná

A tak jsem se pustil do hledání právě tohoto souboru. Teoreticky to triviálně: spusť program foremost a s jeho pomocí vyhledej všechny obnovitelné soubory a nech je obnovit. Z nich vyber jen soubory typu „SQLite databáze“. Z nich vyber ty, které obsahují databázi požadovaného schématu (věděl jsem, že musí obsahovat tabulku „favicons“). Pomocí mého nástroje vyexportuj (alespoň část) historii z tohoto souboru. A je hotovo!

První zádrhel nastal hned v prvním kroku. Program foremost nezná soubory typu „SQLite databáze“. Ty bylo potřeba ručně dodeklarovat (naštěstí nic složitého, stačilo jen specifikovat čím soubor začíná, tj. magic number, což je veřejně známá věc).

Druhým problémem bylo, že foremost obnovuje buďto všechny soubory všech známých typů, nebo jen určité zvolené typy (JPG, docx, ZIP, …). Bohužel, možnost obnovení zvolených typů se nevztahuje na ručně deklarované typy, takže jsem musel bohužel obnovit úplně všechny soubory. S ohledem na to, že na externím disku, který byl pochopitelně jediným možným cílovým zařízením, už tak ležela záloha více než poloviny mého počítače, a k tomu ještě nějaké smetí k tomu (které fakt nebyl čas uklízet), docela jsem se toho obával. Z logiky věci – zachraňovat data z 400GB disku na disk, kde je volných necelých 100GB, matematicky nevychází i kdyby se podařilo souborů zachránit jenom čtvrtinu.

K mému překvapení to ovšem po pár hodinách nezhavarovalo na tom, že by se disk zaplnil zombie fotkami a tunami dávno smazaných PDFek z dob studí, nýbrž na skutečnosti, že se naplnil maximální počet souborů ve složce. Nevadí, tak u toho zkrátka budu muset sedět, sledovat to, a čas od času pomazat všechny obnovené fotky a videa, dokumenty, ZIPy, a zkrátka všechno, co nejsou databáze SQLite.

Externí disk může mít v každé složce maximálně šedesát pět tisíc pět set třicet šest souborů. Neptejte se mě jak to vím, prostě to vím.

Druhý problém, jak se ukázalo, se jala být skutečnost, že na disku je celá řada souborů, které začínají stejně jako databáze SQLite, nýbrž SQLite databází nejsou. V jednu chvíli to dokonce vypadalo, že nějaká aplikace (osobně se domnívám, že právě prohlížeč) má na každý databázový soubor jeden soubor textový, obsahující informaci o tom, v jakém formátu ta databáze je (to celkem dává smysl, než aby aplikace zkoumala co to je za typ databáze, podívá se do odpovídajícího pomocného souboru a ví to ihned).

Takže když jsem se zaradoval, že se mi podařilo zachránit již pár stovek SQLite databází během prvních pár minut, ukázalo se, že jen možná 1% jsou skutečné databázové soubory. Doplnil jsem si tedy jednoduchý filtřík, který odmazával soubory, které nejsou SQLite databáze, i když se tak pro foremost tvářily.

Z nižsích desítek opravdových SQLite databází jsem poté už jen průběžně filtroval ty, které (ne)obsahují kýženou tabulku/tabulky a dostal jsem se k jednotkám souborů. Současně jsem ale dále procházel disk a hledal další, pro případ, že by nějaký takový soubor byl umístěný někde vzadu.

Říká se, že když poskytnete skupince opic ideální podmínky k životu a do výběhu jim dáte neomezený zdroj papírů a tužek, za pár miliard let čistou náhodou sepíší celé dílo Shakespeara. Tak nějak jsem se cítil, když se mi při čtení dat z disku najednou změnil titulek okna na nějaké smetí. V těch miliardách bytů dat se totiž vyskytla escape sekvence na změnu titulku okna. Ano, někde na mém disku se nachází série znaků „\033]0;“ a „\007“.

Toto celé trvalo několik málo dní, při kterém procedura v různých stádiích spadla právě z důvodu přeplění výstupního adresáře. Takže jsem se nakonec s prohledáváním ani nedostal na úplný konec disku. Nicméně, dle prvotního průzkumu to vypadalo, že soubor, který hledám, už jsem dávno našel. Jak by si člověk domyslel – prohlížeč je jedna z prvních věcí, kterou člověk v počítači spouští, takže dává smysl, že jeho soubory budou „někde na začátku disku“, než se stihne zaplnit ostatními daty.

Na pitevně

Pátrání po zemřelém souboru jsem tedy ukončil a jal se prověřit kandidáty. Bohužel, žádný z nalezených souborů nebyl bez poškození. U jednoho namátkou vybraného jsem si vylistoval jeho obsah, a po pár megabytech dat jsem narazil na poměrně jasný a srozumitelný text nějakého konfiguračního souboru pro grafické prostředí (ale těžko říct, dost možná někde mezi těmi nečitelnými daty byl i nějaký PDF dokument z mé snahy o obnovení zálohy).

Nečitelná data SQLite souboru najednou obsahují něco, co vypadá podezřele jako konfigurační soubor
Nečitelná data SQLite souboru najednou obsahují něco, co vypadá podezřele jako konfigurační soubor

Poměrně nešťasten a vědoma toho, že je zle, jsem z povinnosti vyzkoušel pár „osvědčených“ triků, jak zachránit rozbitou SQLite databázi. Pochopitelně, žádný z nich není stavěný na to, že vám někdo přepíše kus souboru něčím úplně jiným, takže naprosto bez úspěchu.

Zkusil jsem také sáhnout po řešení ze světa Microsoft Windows. Našel jsem totiž nějaký „zaručeně 100% funkční SQLite prográmek na opravu poškozené databáze“. No, skutečnosti, že odkaz na stažení vedl na stažení úplně jiného prográmku (a ten „reálný“ odkaz byl kdesi dole v rožku malým písmem) a že po stažení a spuštění toho pravého, aplikace vypadala úplně jinak, než v návodu, přeskočím, protože na to už jsem ve světě Microsoftích technologií tak nějak zvyklý.

A jak to dopadlo? Jednoduše: Ten skvělý, profesionální a 100% funkční prográmek nedokázal z databáze vytáhnout ani seznam tabulek v ní obsažený. Tedy něco, co bez problému zvládl i výchozí klient SQLite. Na neúspěch jsem byl připravený, ale tato pointa mě vyloženě pobavila.

Na pohřbu je každý generál

A tak tu teď sedím, koukám na 8 zachráněných SQLite databází, z nichž některé patrně obsahují nějaké informace o mnou naposledy navštívených stránkách, ale notně poškozené, takže bez přímé cesty, jak z nich tyto informace dostat. Ustoupil jsem z toho, že bych rád měl kompletní zálohu celé historie prohlížeče. Stalo se pro mě přijatelné získat jen seznam naposledy navštívených stránek a data jejich posledních návštěv. Nakonec to vypadá, že – budu-li mít štěstí – podaří se mi získat alespoň pár webových adres několika navštívených webů v poslední době.

Rád bych se podíval na standart SQLite a na formát jeho databázového souboru. V ideálním případě se mi podaří přesně identifikovat přepsanou část a, řekněme, vyprázdnit ji. Sice přijdu o některá data (v ideálním případě by se však netýkala samotného sezanamu webů, ale např. cookies), ale mohlo by se mi podařit databázi zprovoznit a umožnit tak její export.

Jak je vidět, i prostý výpis poškozeného databázového souboru stále obsahuje nějaká "reálná" data (webové adresy).
Jak je vidět, i prostý výpis poškozeného databázového souboru stále obsahuje nějaká „reálná“ data (webové adresy).

Ale domnívám se, že nejspíš stejně zkončím u toho, že celý soubor prostě prohledám na výskyty všeho, co začíná znaky „http“ a to si prostě někam uložím. Operační systém unix (a to zdědil i jeho pravnuk Linux) vznikl za účelem vyhledávání textů, takže by to myslím byla celkem vkusná tečka za celým tímto příběhem.

Závěrem

Co říci závěrem? Zálohujte! A ještě bych dodal: Zálohujte! A na závěr: Zálohujte!

Tento příběh naštěstí nedopadl tak špatně. Vlastně by se dalo říci, že dopadl dobře (ale to nemohu, protože ještě zálohu nemám v novém počítači). Co jsem se tímto snažil vypíchnout je skutečnost, že i když má člověk to nejdůležitější (myšleno třeba 99%) zazálohováno, a octne se v ohrožení, že záloha ani toho jednoho procenta už nebude možná, nesmí za žádnou cenu panikařit.

Jak se ukázalo, počítač (či disk) nebyl v tak špatném stavu, aby nemohl ještě pár dní fungovat vesměs normálně dále. Měl jsem tedy (s velkou pravděpodobností) dostatek prostoru na to, si v klidu dozálohovat zbylé 1% dat. Ale šok z toho, že „počítač kleknul“ a obavy z rizika, že selže i záloha zbylých 99%, zabránily jinak běžnému odstupu, nadhledu a racionálnímu vyhodnocení situace. Je to přirozené – člověk se dostane pod palbu emocí a v takové situaci si prostě nedokáže říct: „Hm, je to blbý, ale teďka už to raděj vypnu a do zítřka promyslím, co s tím. Teďka bych určitě jen napáchal víc škody než užitku.“

A přesně na toto se snažím upozornit. Osobně doufám, že se nikdo do podobné situace nikdy nedostane, ale když už ano tak: zachovejte klid. A pokud jde opravdu o život, svěřte počítač do rukou odborníků, čím dřív, tím líp. Těch pár stovek za to přece stojí, ne? Vždyť jde přece o život.

A víte, co je na tom všem nejlepší? Že si toto někdo někdy bude číst zcela určitě poté, co do vyhledávače vložil frázi typu: „pomoc klekl mi počítač jak z něj zachránit data“ a jediné, co mu v této situaci tento článek dá bude to, že mu řekne: „jo, je to tak, jsi trouba, měl sis všechno pořádně zálohovat“.

RIP Lenovo „Lenny“ Thinkpad E520, 2012 – 2022

Bash a shellové skripty v Linuxu

Pro pochopení, Bash je jeden z několik unixových shellů. Myslím, že ten nejrozšířenější a nejznámější. Podporuje i některé konstrukce, které z něj však dělají plnohodnotný programovací jazyk určený k psaní skriptů (kromě samotných příkazú). Unixových skriptů. Hlavu bych za to nedal, ale je to něco jako DOSovské BAT soubory. Stejně jako ty DOSovské skripty lze i ty Unixácké snadno spouštět (a samozřejmě také upravovat) a oproti jiným programovacím jazykům umožňují rejpat se v celém počítači, od souborů na pevném disku až po datum a čas. Bashové skripty jsou totiž primárně tvořeny většinou linuxovými příkazy.

Takovéto skripty by nám v celku k ničemu nebyly (asi těžko bychom vytvářeli soubor s názvem „Zadejte váš věk:“ a pak jej pomocí příkazu ls (výpis obsahu adresáře) nechali vypsat na obrazovku, jakožto oznámení obsluze, aby zadala svůj věk), tak nám kromě pánaboha při tvorbě skriptů pomáhají základní příkazy jazyka Bash. Toto není návod na psaní skriptů (toho je plný internet – obzvláště linuxácké portály) a tak zmíním například příkaz echo (=ozvěna; co mu zadáte jako parametr, to vám vrátí na obrazovku – klasický vypisovací příkaz) a jeho protějškem je příkaz read. Tyto příkazy se nastavují klasickými „pomlčkovými“ parametry, takže echo -n "Jméno: " díky prvnímu parametru po vypsání textu neprovede odřádkování.

Pořád bychom toho asi ani moc nenapsali. Samozřejmě, že Bash umí i podmínky a cykly. Zajímavě funguje příkaz if – parametr podmínka se nevkládá do kulaté závorky jako v Céčku, ale do hranaté (a navíc je ohraničen mezerami). Na tom by nebylo nic až tak moc zvláštní, avšak zvláštností je to, že ona hranatá závorka je ve skutečnosti program (myslím, že ve skutečnosti je to symbolický odkaz na program test, ale to vcelku nehraje roli) jemuž dáváme parametry (například [ -e "Martin.txt" ] zjištuje, jestli soubor Martin.txt existuje.

Kromě těchto standartních vlastností umí i další. Kupříkladu velice šikovnou pomůckou jsou roury. Ty umí vzít výstup jednoho příkazu a poslat je rourou na vstup druhého. Takže příkazem calc provedeme nějaký složitější výpočet (Bash umí jen základní pětici matematických operací, zbytek se musí řešit jinak, což je celkem nevýhoda) a výsledek tohoto výpočtu pošleme na vstup mkdir a on nám vytvoří složku s názvem o dané číselné hodnotě jakoby v jednom příkazu a bez nějakého ukládání do proměnných. Naprosto úžasnou funkcí bashe je však snadné ukládání do souborů. Prostě výstup souboru přesměrujete do ‚názvu souboru‘ a ono to tam pošle. Nejsou třeba žádné inicializace souborů, kontroly existence a tak (ale musíte mít k zápisu do souboru patřičná přístupová práva).

Je třeba si uvědomit, že v linuxu to buďto vyjde a nebo ne a pak je to v … na konci roury (obrazně řečeno). Každý příkaz vždy vrací číselnou hodnotu. Je-li nulová, pak vše proběhlo v pořádku. Je-li nenulová, pak byla někde chyba. K chybě patří i třeba překlep v zápisu parametrů, takže když při zápisu podmínky do hranaté závorky zapomenete oddělit název příkazu [ od jeho parametrů, vyhodnotí podmínku vždy jako nepravdivou, což programátorovi může ze začátku dělat problémy.

Abych to nějak shrnul, v Bashi se člověk opravdu vyblbne. Kdo je magor jako já, může si klidně napsat skript, který po připojení foťáku k počítači jej automaticky namountuje ( mount – příkaz, který po hardwarovém připojení zařízení jej připojí i softwarově), vytvoří v počítači složku s názvem dnešního data a zkopíruje tam všechny nové fotky a přitom vám bude v průběhu kopírování zobrazovat kolik ještě procent a času zbývá.

Napříkald můj kamarád si vytvořil program, který odešle zadaná klíčová slova na images.google, stáhne jeden z nelzeneách obrázků a nastaví vám jej jako pozadí plochy. Skript má 3 řádky (1.- odeslání požadavku na images.google.cz a vybrání obrázku, 2.-stažení obrázku, nastavení jako pozadí).

Já osobně v Bashi programuji raděj, než třeba v klasickém C. Jeden z důvodů je ten, že skripty není třeba kompilovat, jsou přímo připraveny ke spuštění, a druhak díky tomu, že syntaktické chyby, které vám kompilátor (myslím ten klasický, konzolový – gcc ) vyplivne jenom jako číslo řádku a stručný popis, kterému stejně málokdo porozumí. V Bashi se vám tato hláška objeví až přímo za chodu, takže přesně víte občas i víte, kde chybu hledat.

Bash prostě dokáže ušetřit čas, je to jazyk, který se hodí, prostě si můžete pěkně pohrát s celým systémem a to my Linuxáci máme přece tak rádi!

Zde je článek o mém skriptu C write ‚n‘ run, vývojovém prostředí pro jazyk C v textové konzoli.

Simutrans

logo Simutrans
logo Simutrans

Simutrans je dopravně-strategický simulátor, jejímž cílem je vybudovat dopravní impérium (simu=simulátor, trans=tranzit, doprava). Jistě si nyní vzpomínáte na legendární Transport Tycoon, zezačátku se jemu Simutrans velice podobalo, avšak dnes, si myslím, že jej mnohonásobně překonalo. Kdy hra vznila není přesně známo, avšak jedny z prvních verzí byly vydány ještě před rokem 2005. Jedním z mnoha plus je také to, že je dostupná asi v 15 jazycích (vč. češtiny nebo čínštiny :-). Princip hry tedy spočívá ve stavbě dopravní infrastruktury a to dvou druhů.



město na zátoce


mtrojměsto na jezeře


hotová hra

První je osobní doprava (ve skutečnosti se sem řadí doprava cestujících a pošty), kde prostě ve městě (uprostřed lesa to ve hře nemá význam), případně u nějaké turistické atrakce (hrad, zámek, klášter, vysílač, atd.) nebo továrny (i tady dojíždějí lidé do práce) postavíte nějaký druh stanice (zastávka, vlaková stanice, zastávka nadzemní železnice, přístav, letiště), postavíte nějaký příslušný depot (vozovnu, loděnici, hangár, …), koupíte příslušný dopravní prostředek, nastavíte mu tzv. jízdní plán, což je seznam stanic, kde má zastavovat, a vozidlo vyšlete na trasu. Jak tak jezdí, vždycky někdo přistoupí, někdo vystoupí, a tak pořád dokola.

Ukázkové video o Simutrans

Druhým způsobem je nákladní doprava. Tady už je to komplikovanější, protože doprava zboží musí mít určitá pravidla. Nemůžete tedy očekávat od od ropné rafinerie, aby si převzala dva vagóny palet piv (i když ve skutečnosti by se to určitě stalo :-), nebo aby v autosalónu prodávali kuřata, neboť jim je právě přivezli. Prostě vám hra vygeneruje určité odvětví průmyslu, pokud je jich více, tak se mohou částečně prolínat (kompletní schéma nákladní dopravy zde). A každá továrna má dáno smluvně komu bude dodávat a kolik procent ze své produkce (bohužel naplatí, že např. každý kravín bude dodávat každému potravinářskému závodu a každé konzervárně). Postup budování spojení je podobný jako u osobní dopravy, akorát než sestavíte jízdní plán, musíte se nejdříve podívat, kam se dané zboží bude vyvážet. U vlaků se mohou kombinovat různé vagony, čehož se dá využít, obvzláště např. pokud jezdí dva vlaky téměř souběžnou trasu a oba jezdí poloprázdné, tak se vagóny z druhého přesunou k prvnímu, lokomotiva se prodá (nebo může zůstat zaparkovaná v depu), upraví se jízdní plán a problém je vyřešen.



zácpa autobusů s poshetrou v čele


11 tisíc lidí na nádraží


souměrné město jako Washington D. C.

Po spuštění hry se vám objeví okno, kde si nastavíte patřičné parametry nové hry (velikost mapy, výšku hor, členitost terénu, počet měst, množství průmyslu, počet památek, rok začátku hry, případně tzv. bezčasou hru, a další), nebo si samozřejmě můžete načíst předem uloženou hru. Pokud jste si zvolili hru s časem, pak se vám s ubíhající dobou zobrazují nová vozidla, a naopak ty stará se jeví pod kolonkou „zastaralá“ (každé vozidlo má tato data nadefinovaná). Poté vám hra náhodně rozmístí dané stavby (městské stavby ve městech spolu s některými odběrateli zboží-obchody, čerpací stanice, …) a můžete začít s budováním vaší továrny na peníze, zvané doprava.

Pokud se vrátím do minulosti a zavzpomínám si na první verzi simutransu, kterou jsem hrál, a srovnám ji s dnešní nejnovější, tak je to asi jako kočka a slon. Už počínaje grafikou nastala zmněna. Ty dřívější verze byly označovány PAK64, což znamená, že hrana jednoho čtverce na mapě (tzn. 1 budova, ale také všechny cesty jsou široké 1 čtverec) byla veliká právě 64 pixelů. Dnes už se používá pouze(až na různé verze pro PDA) PAK128, tedy každý čtverec je 4 krát větší, což značně zlepšilo detaily hry (např. nápisy na budovách).

Další, a to obrovské zlepšení nastalo ohledně druhů dopravy. Jedna obyčejná silice, jedna obyčejná autobusová zastávka, jedna nakládací rampa, silniční depo, to samé u železnice, pak ještě přístav a doky. K tomu patřil silniční a železniční tunel a pár mostů. Dnes silnic existuje šest druhů (polní, štěrková, dlážděná, asfaltová, betonová, americká dálnice, dálnice) plus městská, kterou můžete stavět pouze pokud hrajete za firmu „veřejné stavby“ (normálně jste „člověk“). Zastávek také mnoho druhů, stejně tak i mostů, k tomu ještě semafory, jednosměrky, značky vymezující dálnici (místa, kam smí vozidla pouze s maximální rychlostí vyšší než 80 kmh-1), a podob. Přibyla také nadzemní železnice, tramvaje, letadlová doprava a v nejnovější verzi i trolejbusy. Vše je samozřejmě výrazně rozlišeno cenově.



zácpa z cisteren


obrovské překladiště silnice-železnice-voda


železniční tříproudovka

Výhodou simutrans je také to, že si může manipulovat s knihovnami vozidel téměř jak je vám libo. Nejčastěji se však vytvářejí nová vozidla a budovy, kterými se tvůrci chlubí na internetu a zpříjemňují si tak hru. Často jsou vytvářeny nám známé vozy jako lokomotivy Škoda, vlak Pendolino, autobus Praga, nebo Karosa, a další. Já sám jsem vytvořil tramvajový vůz Tatry T3 a žlutý autobus Student Agency. v plánu jsem měl i takové dopravní prostředky, jako UFO, ponorka, pošťák a další.

Novější verze obsahují i spoustu dalších výhod. Práci velice usnadňují „grafy“ (barevné proužky) nad názvy stanic, které udávají kolik daného nákladu (cestujících, pošty a zboží) v dané stanici čeká na svůj spoj. Pokud nastala chyba se spojením, stanice se rychle přeplní, čehož si člověk díky proužkům ihned všimne a situaci začne řešit. V nejnovějších verzích se objevil tzv. Underground mód (česky podzemní mód). Po přepnutí do tohoto módu můžete budovat stanice, křižovatky, přejezdy a další objekty v podzemí (prostřednictvím tunelů). Hodí se to hlavně pro budování metra, nebo pro síťě obchvatů a dlouhých podjezdů (ve starších verzích se tunely nemohly křížit). Tunely jsou však drahé a tak se moc nepoužívá (pokud necheatujete ;-). Další zlepšení vzniklo ohledně továren na mapě. Zde se každá zobrazí čtverečkem různé barvy, který se dá zvětšit a po přejetí se zobrazí název a čáry, které udávají kam (ke kterým odběratelům) je potřeba zboží z této továrny dopravit.

Dříve, pokud jste chtěli cheatovat, stračilo si otevřít konfigurák simuconf.tab a a řádek starting_money:30000000 upravit na mnohem vyšší hodnotu (vaše hotovost byla ukládána 32 bitově, 1 bit byl znaménko, takže jste mohli získat až neuvěřitelných 2 147 483 648$). Ještě nikdy se mi to nepodařilo utratit :-). Dnes je situace ulehčená, že si všechny údaje v tomto souboru uložené můžete pohodlně nastavit soustavou formulářů.

Další zajímavostí je třeba, že hra zatím moc nerozlišuje vlakové a tramvajové koleje, takže se vám klidně centrem města prohání plně naložené nákladní vlaky (nebo si místo tramvají koupit třeba Shinkanseny).



pletenec dálnice a železnice


jednoduchá dálniční křižovatka


zámořské viadukty a totálně přeplněné zastávky

Pokud už vás přestane bavit budovat silnice a železnice, osobní a nákladní, … (bohužel hra nemá žádné mise nebo multiplayer) můžete si aktivovat konkurenční hráče. Ti si nejdříve spočítají kolik zboží (cestujících, pošty) kam má namířeno, kolik je bude stát výstavba silnice nebo železnice a koupě vozidla a pak buď postaví nebo nepostaví. Pokud ano, počítejte s tím, že nastane krutý boj o kšeft. Někdy vám ale může pomoct, třeba tím, že laciné a nevýnosné zboží (hlavně suroviny) přenecháte konkurenci a vy si slíznete smetánku v podobě aut, piv, jídel, betonu, nábytku, knih a podobně.

Závěrem bych řekl, že simutrans je hra, která se nezalíbí každému, ale mě radikálně změnila moje mínění ohledně počítačových her, a navzdory velmi jednoduché grafice a zvukům, tak si jej zahraji občas i dnes. Pokud zvažujete, tak určitě navštivte Simutrans.eu →, asi jediné české stránky, které se věnují aktuálně nejnovějším verzím.

SuperTuxKart

logo Supertuxkart
logo Supertuxkart

SuperTuxKart je velice zábavná hra, jak již vyplývá z jejího názvu, vytvořená pro operační systém Linux. Jednou větou řečeno, jedná se o super hru, ve které jezdí (mimo jiné) Tux v malých motokárách (anglicky kart).

Menu výběru trati
Menu výběru trati

Trať Racetrack
Trať Racetrack

Co více psát? Na hře, a obecně na veškeré linuxové tvorbě se mi líbí takové teplo, které na mě sálá. Všechno je takové pozitivní, příjemné, milé, a když se má stát něco špatného, tak i to v sobě má něco dobrého (toto můžete pozorovat i u Simutrans). Když mě předjede Mozilla, nebo EvilTux, tak bych normálně nadával, ale u SupertuxKart si řeknu, no dobře, hold tudle trať neumím ale s úsměvem na tváři. Úsměv mi mrzl, až když jsem nemohl nějaký level udělat i několik hodin, ale to jen proto, že jsem strašný nervák a i nepatrná blbost mě dokáže k smrti vytočit.

Ukázkové video

Navíc se tvůrcům hry podařilo skloubit strašně moc odvětví dohromady, o což já se marně snažím velmi dlouho. Stejně tak, jak si můžete zajet závod na klasickém závodním okruhu, tak se také můžete projet v amazonském pralese, na hřbitově, na mléčné dráze, na pláži nebo jen na zasnežené hoře. Navštívíte také neznámou planetu XR591, kaňón, nebo dálniční přivaděč.

Trať Snow mountain. Jste-li v nouzi nejvyšší, zavolejte si Tuxe na pomoc!
Trať Snow mountain. Jste-li v nouzi nejvyšší, zavolejte si Tuxe na pomoc!

Trať Mléčná dráha
Trať Mléčná dráha

Jak jsem psal, závodiště jsou opravdu komplexně zaměřená, od jednoduchých okruhů, až po opravdu těžké a dlouhé klikaté tratě.

Nechybí ani power-upy ve formě dárků, které vám například umožní vrhnout bowlingovou kouli s nadějí, že zasáhne některého ze soupeřů, nejrychlejšímu soupeři nasadit na pár sekund kotvu, nebo vypustit kalužku zvláštní růžové lepkavé kapaliny, které každého, kdo přes ni přejede zbrzdí na minimální rychlost.

Trať: Pevnost magma. GNU se dívá na jeden z portrétů krále Tuxe
Trať Pevnost magma. GNU se dívá na jeden z portrétů krále Tuxe, kterými je celá pevnost vyzdobena

A vítězem se stává... Tučňák!
A vítězem se stává... Tučňák!

Kromě dárečků můžete také sebrat slupku od banánu, která na vás kupříkladu umístí časovanou bombu, nebo onu kotvu nasadí vám. Nechybí ani láhve s nitrem.

Prostě SupertuxKart je pro mě skvělou relaxací. Za poslechu velice zajímavé hudby, a shlédnutí jednoduché (až primitivní) grafiky se občas se zasním, že bych třeba taky někdy mohl naprogramovat podobnou hru.

Video z mé oblíbené trati – Pevnost Magma

Pouze bych dodal, že SuperTuxKart najdete v repozitářích software Ubuntu a dokonce existuje i verze pro Windows, ale tak se mi tak příšerně seká, že jsem na ní neujel ani jedno kolo a šla do koše.

Nebojte se příkazové řádky

  1. K čemu je příkazová řádka?
  2. Příklad první – instalace programu
  3. Příklad druhý – složité nastavení
  4. Porovnání Terminálu a Grafického prostředího v praxi
  5. Další „programy“ a jejich protějšky
  6. Pár slov na závěr

Příkazová řádka je nedílnou součástí Unixových operačních systémů. Mnoho lidí však stále tvrdí, že to k ničemu. Oproti Windows, kde příkazová řádka slouží jen jako doplnění funkce a málokdo ji používá, Linuxová příkazová řádka je silný pilíř, na kterém stojí celý operační systém.

Dalším pozitivem Shellu (tak se říká linuxové příkazové řádce) je ten fakt, že pokud máte například linuxový server (a že jich je!), takže nač zbytečně plýtvat jeho výkonem pro grafické prostředí, které stejně použijete třeba jen jednou za týden, takže ani není snaha některé serverové příkazy přetvářet do grafického režimu (a některé ani nejdou).

Příklad první – instalace programu

Někde, myslím, že někde na stránkách Ubuntu, jsem našel velice zajímavý argument pro příkazovou řádku. Představte si, že si chcete nainstalovat nějaký program. Spustíte Centrum Softwaru, naťukáte název programu, počkáte, až se vám najde, kliknete na Nainstalovat, zadáte heslo a už to jede.

Nebo kliknete na ikonku Terminálu (já jako správný linuxák ji mám vždy po ruce na hlavním panelu, avšak už ji nepoužívám, protože jsem se naučil klávesovou zkratku Ctr+Alt+T) a napíšete:

Nebo, pokud jste hodně líní, tak si ten příkaz prostě zkopírujete z toho článku, který právě čtete a z pravidla tam někde bude. Zmáčknete Enter, a zadáte heslo a už to jede.

Kolik času jste ušetřili?

Příklad druhý – složité nastavení

Ale opusťme obyčejné stahování a instalaci programu. Představme si něco složitějšího. Co kdybychom operací podobných té předchozí museli udělat víc za sebou, třeba 6 (například nastavit něco, nastavit něco jiného, to první přenastavit, restartovat to, zkontrolovat to, vrátit to druhé do původního stavu)?

Klik, klik, klik ,klik, … po desítkách kliknutí bude hotovo. Když si otevřete terminál, vložíte tam postupně všechny ty požadované příkazy (buďto jste si je zkopírovali z toho návodu na netu, nebo je prostě znáte) a o tom, jestli to budete mít hotové za 20 nebo 30 sekund rozhoduje pouze, jak rychle umíte psát.

Porovnání Terminálu a Grafického prostředí v praxi

Krásou linovýxh příkazů je fakt, že velká část základních programů v grafickém prostředí má své předchůdce i v příkazové řádce. Zde máte několik nejtypičtějších příkladů:

Centrum Software Ubuntu vs. Aptitude

Na obrázku dole vidíme náš první probíraný přiklad. Jak v grafickém režimu v Centru software pro Ubuntu (kdo nepoznal, je to vlevo) i v jeho konzolovém protějšku Aptitude (vpravo) jsem vyhledal „program“ (ona je to ve skutečnosti hra 🙂 SuperTuxKart. Můžete vidět, že text je naprosto stejný (až na grafickou adaptaci – jiné písmo, odrážky a tak).

Aptidude a Centrum software Ubuntu
Aptidude a Centrum software Ubuntu

Sledování systému vs. Top

Další ukázkovou dvojicí jsem vybral velmi podstatnou část každého operačního systému, a to konkrétně pro Ubuntu program Sledování systému. Program mimo jiné vypisuje seznam všech běžících procesů. Tuto funkci nese také konzolový program Top . Nevím sice co to znamená (buďto se jmenuje podle hlavičky nahoře, já osobně bych řekl, že top znamená table of processes, avšak ani jedno se nepotvrdilo, takže prostě top), ale používám jej když si omylem zasekám počítač a potřebuje onen problematický program ukončit. Tak si najdu v top jeho pid (process ID) a pak ho kill nu.

Top a Sledování systému
Top a Sledování systému

Mozilla/5.0 vs. W3m

Další, velmi významný program je internetový prohlížeč. Kromě prohlížeče Mozilla/5.0, který používáte vy, existují i další. Mezi nimi i třeba konzolový prohlížeč w3m . Na obrázku dole můžete vidět část této stránky (starší verzi) zobrazené právě ve w3m.

Samozřejmě, že zásadní nevýhodou konzolových prohlížečů je většinou totální ignorace jak kaskádových stylů, tak i javascriptů ( a dalších, jako obrázky, objekty, …).

Pokud však jen potřebujete rychle najít nějakou informaci na některé stránce jejíž adresu znáte, tak místo spouštění třeba Mozilly, datlení adresy do adresního řádku a pak teprve študovali, stisknete Ctrl+Alt+T, napíšete w3m < adresa >, dáte Enter a je hotovo.

W3m a tato stránka
W3m a tato stránka

Další „programy“ a jejich protějšky

Datum a čas

Naprosto úžasná dvojce příkazů, kterou pravděpodobně používá každý, je date a cal. Po instalaci Ubuntu máte na horním panelu vpravo program Hodiny, který zobrazuje datum a čas ( v trochu civilizovanější formě než onen příkaz date).

Když na něj kliknete, zobrazí se kalendář na celý tento měsíc. Tuto funkci zastává program cal (od slova calender). Pokud však napíšete příkaz cal <?php echo StrFTime("%Y",Time()); ?>, program vám zobrazí v krásné tabulce (3 x 4 měsíců) kalendář na celý rok.

Můžete si také zobrazit, třeba, který den začne prosinec 2046, nebo si zjistit, že Mistr Jan Hus byl upálen → v sobotu (pro neznalce 6. 7. 1415, tedy cal 7 1415). A právě pro tyto účely jej používám, neboť když si rozkliknu program Hodiny, a chtěl bych se podívat právě na onoho mistra Jana Husa, musel bych se k němu prostě proklikat (a že by to bylo kliků).

Příkazy date a cal a Hodiny
Příkazy date a cal a Hodiny

Vypnutí počítače

Mou oblíbenou hříčkou je pak vypínání. Vypnout počítač lze různými způsoby. Od Harwarového vytržení ze zásuvky nebo vytažení baterie notebooku přes stisk/podržení tlačítka na pc, až po kliknutí na Vypnout… A nebyl by to Linux, kdyby na to neměl příkaz. Má jich dokonce několik: < poweroff, shutdown nebo třeba halt. Já obvykle (večer) než noťas vypínám jej ještě nechám (samozřejmě kvůli facebooku) nějakou tu minutku zapnutý a ještě něco kutím po bytě. Poté už ani nesedám na židli, a vzhledem k tomu, že ze stoje se jednak hůře manipuluje s myší a druhak je na LCD blbě vidět, tak obvykle jen spustím terminál kombinací Ctrl+Alt+T a napíšu příkaz sudo poweroff (načež zadám heslo) a počítač se vypne.

Úplně stejnou funkci provede kliknutí na Vypnout… v nabídce Appletu upozornění pro sezení (defaultně úplně vpravo nahoře). Když na to kliknete, po potvrzení (což nahrazuje zadání hesla – aby si ten počítač nemohl vypnout jen tak leckdo a to bez předchozího uložení rozpracované práce) se prostě provede příkaz poweroff.

Jak to tak bývá, samotné vypínací příkazy nám poskytují zpravidla víc funkcí než obyčejné 1 kliknutí. Šikovným je v této situaci napřiklad zápis shutdown -h +15 – počítač vypne za 15 minut (můžete tak někoho velice nemile překvipit ;-)).

Poweroff a Vypnutí přes Applet upozornění pro sezení
Poweroff a Vypnutí přes Applet upozornění pro sezení

Zavření terminálu

Poslední příkaz, který bych zmínil, je velice prostý: exit. Prostě opustí, ukončí (v grafickém prostředí se to projeví zavřením okna) tento terminál. Je to substituce za kliknutí na křížek v rohu, případně jiný způsob ukončení, jako je Alt+F4, nebo třeba sebevražedný příkaz kill < PID procesu gnome-terminal >.

Tento příkaz používám velmi často, jednak když už jsem namlátil do klávesnice všechny ty příkazy, tak než abych pak tam myší najížděl na onen křížek, prostě napíšu exit, a druhak se tento způsob ukončování terminálu doporučuje jako jako jediný validní způsob ukončení terminálu.

Nejlepším kamarádem přikazu exit je příkaz logout. Zatímco exit se používá v Terminálu, příkaz logout vám schramtsne většinou jen klasická dálnopisová konzola (Ctr+Alt+F<1 až 6>), jinak mají stejnou funkci.

Exit a klasické zavření
Exit a klasické zavření

Pár slov na závěr

Kromě toho, že umět pracovat s příkazovou řádkou je vcelku machrovinka, tak vám to může pomoct i například, když vám spadne systém (třeba kvůli přetížení) a musíte nouzově zachraňovat a zálohovat přes konzoli. Kromě toho bych také řekl, pro starší stroje, mezi jejichž vlastníky se hrdě hlásím, může sloužit ke zrychlení práce. Na co je mi graficky perfektní program pro zobrazení využití paměti, když mi bohatě stačí jedno číslo, které si najdu třeba ve výstupu příkazu free -mos 1?

Navíc, jak jsem psal ze začátku, jsou počítače (především servery), kde se ničím jiným než s textovou konzolí nesetkáte. A pokud s počítačem alespoň trochu umíte, je dobré se naučit i používat příkazovou řádku.

A to se ani nezmiňuji o psaní shellových skriptů, neboť jak nám na výšce dokázali, je to získáte tím opravdu velmi mocný nástroj:

Příkazy – programy a prográmky
+
Interní příkazy jazyka Bash
+
přesměrování vstupů a výstupů, roury
+
soubory
=
COKOLIV!

Windows XP vs. Ubuntu 10.04

Zapínám notebook. Po uvítacím logu COMPAQ se mi zobrazí bootovaci menu. Většinou už jsem předem rozhodnut, ale přece jen chvíli zauvažuji, než zvolím vhodný operační systém pro mou následující práci. Pokud bych se do 10 sekund nerozhodl, padá volba automaticky na jednu z nepopulárnějších Linuxových distribucí – Ubuntu (10.04). A právě v tomto článku se pokusím vám popsat, proč kurzor nemám nastaven na „druhém“ (ve skutečnosti asi na 6.) řádku, tedy Microsoft Windows XP Profesional.

Ubuntu.
Ubuntu - Linux for Human Beings

První důvod, který bych tu nijak zvlášť nerozebíral je ten, že po nainstalování Ubuntu se mi nastavilo jako primární operační systém a mě se nechtělo měnit. Proč také? Ale ten druhý…

Před pár dny (leden 2011) mě napadla poměrně jednoduchá a názorná substituce pro ukázku obou, nejpoužívanějších operačních systémů. Začnu tedy tím známějším.

Microsoft Windows

logo Windows
logo Windows

Operační systém Mircosoft Windows si můžete představit jako byt. Za pár tisíc si koupíte byt, který budete užívat, stejně jako operační systém. Po nastěhování (operačního systému na disk) máte ve vašem jinak prázdném bytě něco už předchystané, neboť to spadá k přinejmenším k základnímu vybavení. Stejně tak jak po nastěhování do vašeho nového bytu zjišťujete, že v předsíni máte vestavěnou vestavnou skříň, u oken radiátory, a v koupelně vanu, tak stejně tak zjišťujete, že máte najednou v počítači Internet Explorer, Windows media player, či Windows Life messenger. Pokrčíte tedy rameny, neboť víte, že programy, které tam máte jsou nezbytné. Když se však rozhlédnete, tak zjišťujete že kromě něčeho vestavěného v tom bytě není už v podstatě nic.

Kancelářský balíček, který vyrábí ta firma, od které máte být, by ve vaší pracovně rozhodně neměl chybět. Zjišťujete však, že vás vyjde na skoro tolik, jako celý být. Nicméně pak ještě od společnosti Electronics Arts koupíte nějaká ta autíčka, aby si děti měly s čím hrát a nějaký ten Photoshop, aby si měly v čem upravovat profilovky na facebook. Takže už máte v bytě nějaký ten základní nábytek. „Ale ještě by to necho chtělo – jasné, chce to novou tapetu (plochy).“ Hned to vypadá lépe, ale pořád vám tu necho chybí. Velké společnosti už vám nepomohou, a tak se vydáte do do města. „To je ono, tady rozdávají něco zadarmo. Květináčky, stolečky, lampičky, to je přesně ono. Výborně, stolička, co ještě? Kobereček! A co dál? Ještě si vemu Adobe Reader, a k němu taky PDF Creator. Nesmím zapomenout taky na WinRar. A co s tou vanou? Tady vidím sprchové kouty Mozilla. Ten model Firefox se mi líbí, tak si ho vezmu.“ Pokud se vám bude chtít, tak tu vanu vybouráte a vyhodíte, ale většinou si ji tam lidé nechávají.

plocha Windows
Výchozí plocha čerstvě po nainstalování Windows XP

Tak si tak spokojeně žijete v tom svém bytečku. Některé komponenty, které používáte jsou doslova ruční práce – prostě nějaký programátor sedl, a vyprodukoval nějakou jednoduchou blbost, jako kalendář, který vám ukazuje, kdo má dnes svátek a podobně.
Po čase se vám toho všelijakého softwarového haraburdí různých výrobců, firem, funkcí a principů nahromadí tolik, že si budete muset sehnat nějaký čistič (obvykle taky bývá zadarmo), aby vám tam udělal pořádek. Jenže semtam nějaký ten program spadne a rozbije se. Čistič sice vyhodí ty celé kusy, ale ty drobné střípky zůstanou někde v koutě. Nehledě na to, že si občas domů donesete buďto nějakou blbost, kterou vám vnutili třeba za účelem reklamy (různé vzorky, vzorečky, a další dema a shareware). No a samozřejmě čistič, který má tomuto bránit, to považuje za něco, co používáte a nevyhodí to. Řešení je buďto pořídit si lepší, placený čistič, nebo to nejnutnější odstěhovat na víkend na chatu, flashku a podob. a z bytu všechno vyházet, vymalovat, naformátovat, a všechno znovu nastěhovat (dá se říci metoda Noemova Archa).

Ubuntu

logo Ubuntu
logo Ubuntu

Oproti tomu Ubuntu, si můžete představit, jako auto. Přijdete a dostanete auto. Kromě toho, že ho dostanete zadarmo, tak jej klidně můžete „stáhnout z internetu“, tedy dodají vám jej až do domů. V okamžiku, kdy vám jej přistaví před dům je auto po pár formalitách, jako je natankování nádrže, nastavení jazyka, napsání seznamu uživatelů a samotné předání klíčků, připravené k jízdě bez sebemenších problémů. V autě je opravdu všechno co potřebujete – motor, karosérie, sedačky, světla, program pro grafiku – Gimp, nějaký ten kecálek (Empathy) a tak dále.

Ubuntu, respektive samotné linuxové jádro, je totiž vlastně motor (souhlasíte jistě se mnou, že bez motoru by to nebylo auto) obalený fůrou dodatečných komponent počínaje karosérií (grafické prostředí), koly (ovladače) přes klimatizaci (kancelářský balíček OpenOffice) až po např. zadní stěrač (BitTorrent). Vy, samozřejmě, v okamžiku, kdy si auto koupíte, tak ho máte v nějaké výbavě (výbavy se mění s „distribucemi“ – Ubuntu, Kubuntu, …). Například v autě Ubuntu sice nemáte parkovacího asistenta, za to tam ale máte vyhřívané sedačky.

Plocha Ubuntu
Výchozí plocha čerstvě po nainstalování Ubuntu 10.04

Ale co je důležité, pokud by jste toho parkovacího asistenta mermomocí chtěli, tak není nic jednoduššího, než zavolat na technickou, jestli by vám ho neposlali. V Ubuntu nikam nemusíte volat, stačí prostě kliknout na „Centrum softwaru pro Ubuntu“ a vyťukat název hledané komponenty, která se vám ihned stáhne a pravděpodobně i namontuje do toho vašeho autíčka. Na vás už je pak jenom seřízení nastavení, jako např. nastavení teploty. Stejně tak, pokud si budete myslet, že parkovacího asistenta vůbec nepoužíváte, že by jste si jej vymontovali, tak není problém. Dokonce, pokud se vám třeba nebude líbit karosérie, tak by neměl být problém ani s ní (i když jsem to ještě nikdy nedělal). Kdyby jste chtěli, můžete si karoserii odmontovat úplně a pracovat jen v příkazové řádce. V tom případě vám ovšem bude například klimatizace (nebo grafický program Gimp) k ničemu :-).

Díky tomuto systému se vám v počítači nehromadí žádný nepořádek, a když se vám náhodou některá komponenta pokazí, tak si ji prostě necháte poslat znovu, reinstalujete ji. Dokonce, pokud se vám něco nezdá, tak vám mohou umožnit si tu komponentu upravit dle vašich potřeb a dát k dispozici ostatním uživatelům vaší vylepšenou verzi (tomu se říká open-source).

Shrnutí

Tux, symbol Linuxu vyjadřuje svůj názor na Windows
Tux, symbol Linuxu vyjadřuje svůj názor na Windows

Já bych prostě řekl, že Linux má něco do sebe, připadá mi logičtější a spořádanější než Windows, kde si každý dělá co chce. V Linuxu spolu programy spolupracují, protože je všechny vyvíjí jedna komunita lidí, což je nesporná výhoda, ale i nevýhoda (když spadne jeden program, hroutí se celý systém jak domeček z karet).

Abych byl upřímný, Moje XPéčka v porovnání s Lucid Lynx mi přijdou určitým způsobem stabilnější, padají méně. Jenže zkuste si na téměř 10 let starém stroji hrát se složitými vektorovými obrazy! Systém se uživateli snaží vyhovět, takže je schopný se třeba na 10 minut zaseknout nad operací, kterou mu zadal, bez ohledu na to, že na to nemá, a systém začne ukončovat různé procesy, aby získal nějaké to procento CPU navíc.

U Windows, pokud by takováto situace nastala, máte možnost tyto programy poukončovat přes Správce úloh, nebo počítač nemilosrdně restartovat. U Linuxu se znalejší uživatel přepne do příkazové řádky a za současného provádění jiné činnosti (například úklid na stole), neboť je počítač stále velmi vytížen a každá operace najednou trvá opravdu monohonásobně delší čas, může pracovat alespoň tam.

Ještě bych dodal fakt, že až na tyto stavy totálního vytížení mi jak XPéčka z roku 2001 tak Lucid Lynx z dubnu 2010 (Ubuntu 10.04) jedou téměř stejně rychle. A nedokáži si představit, jak by asi na mém notebooku jely např. sedmičky, které jsou o půl roku starší než ono Ubuntu.

Explore Ubuntu.
Like it?
Install it.
Love it!
ubuntu

Ubuntu je prostě změna, ale ne zase tak veliká, jak se může zdát. Netvrdím, že k lepšímu, ale myslím, že horší to určitě nebude. Podpoříte tím asi 2% menšinu.

Kdyby jste Ubuntu opravdu chtěli zkusit, prostě jděte na stránky Ubuntu – Ubuntu.cz → a stáhněte si ho.

Moje vývojové prostředí pro textovou konzoli linuxu

Začalo to takhle:

Ti bystřejší pochopili, že se jedná o programování v jazyce C. Ano, takto jsem začínal já programovat v Céčku.

Vzhledem k tomu, že mě v textové konzoli bavilo pracovat, neviděl jsem důvod proč si instalovat nějaké grafické vývojové prostředí. Avšak psát tyto příkazy pořád dokola mě po pár úpravách zdrojového kódu přestalo bavit, ale napadlo mě, že bych si na to mohl napsat skript. Skript prostě provedl výše napsané 4 příkazy a skončil. V případě potřeby jsem jej spustil znovu a znovu a znovu, doku nebyl prográmek hotov.

Když jsem to zabalil do cyklu (abych jej nemusel spouštět pořád dokola), bylo potřeba v určitý okamžik zeptat se uživatele, zda-li chce program ukončit. V tom se ve mně zrodila myšlenka jakéhosi ‚menu‘. Tam by si uživatel mohl zvolit nejen ukončení, ale také jednotlivé příkazy (editace, kompilace, spuštění). Kromě toho si mohl zvolit pracovní soubor, no a pomalu z toho začalo vznikat vývojové prostředí.

Díky jeho funkcím jsem jej nazval skromně C write ‚n‘ run (Céčko – napiš a spusť) a od té doby, jsem jej používal a příležitostně i poupravil o nové funkce.

Postupnými úpravami se však objevilo několik chyb, a navíc, při příchodu na vysokou v září 2011 jsem prošel vstupním kurzem Linuxu, kde jsem se dozvěděl kupu nových informací, které mě přivedly k tomu, abych si C-wnr napsal komplet znovu. Stalo se tak, a vzniklo C-write ‚n‘ run 2.


Stažení C write ‚n‘ run 2.1 (9,3kB)

Upozornění: 13. prosince 2011 v kolem 13. hodiny byla vydána verze 2.1, která odstraňuje problém kompilace matematických funkcí (kompilátor ‚neznal‘ funkce z knihovny math.h) přidáním parametru -lm.

 

 

Krásou C-wnr je však to, že pouhou změnou několika málo příkazů (v podstatě jen jednoho jediného a textové omáčky kolem) tak můžete získat vývojové prostředí pro jazyk Pascal:

Pascal-wnr-2 dodám, až jej budu mít vytvořený.

nebo Java-write ‚n‘ run:

také dodám později.