Date: 2021-04-16 20:00:00 Tags: software Desc: Nahlednuti do pocitacove prehistorie, kdy praci monitoru dosud zastavaly radkove tiskarny. # Svanda s Edou Nedavno jsem docetl vtipnou prirucku Michaela W. Lucase _Ed Mastery_. Co si z toho vzit? Program ed(1) je _ten_ standardni unixovsky textovy editor. Tvrdi to alespon Dennis M. Ritchie, spoluautor operacniho systemu Unix. A kdo by se hadal s clovekem, ktery napsal kompletni operacni system bez one sofistikovane hracky, kterou dnes nazyvame monitor. Chces-li patrit mezi elitu, musis umet ed(1). Skutecny sysadmin, ktery ma mozek a pater, si pamatuje, co napsal, a udrzuje v hlave kontext. Komunikuje se strojem na hluboke urovni. Zadny monitor, jen radkova tiskarna. Sysadmini rybizove pouzivaji ex, vi ci nafouknute nvi. Vim a Emacs jsou komplikovane a megalomanske kusy softwaru urcene pro pouhe uzivatele. Sysadmin, ktery je pouziva ke sve praci, je jako upir. Ubira vzacne systemove prostredky na pouhy editor. Nelze mu verit, mini autor. *) Extended cili ex(1), unixovsky radkovy editor, jemuz byl ed(1) predkem. Jeho pokrocilejsi verze. Visual cili vi(1), unixovsky strankovy editor, jemuz byly ed(1) a ex(1) predky. New vi cili nvi, klon vi(1) pouzivany v BSD operacnich systemech kvuli copyrightu. Vi improved neboli Vim , patrne nejrozsirenejsi klon vi(1) s pridanou asi miliardou funkci a API umoznujicim psat pluginy, jichz je dnes asi taky miliarda. Emacs, textovy editor, ktery umi vsechno mozne, jen ne dobre editovat text. Ano, ve svate valce mezi priznivci Vimu a Emacsu jsem na strane Vimu. Michael W. Lucas to mysli vazne a zaroven ne. Je to _trinacta_ kniha jeho sysadminovske rady, pry vydana _1. dubna_. Ed(1) byl vyvijen od roku 1969 Kenem Thompsonem, jeho konecnou verzi napsal Dennis M. Ritchie patrne v roce 1973. Pouziva se tedy skoro 50 let a nepatri do stareho zeleza. Knihu bych v nem asi nepsal (ve nvi ano), ale na mensi upravy textu, sysadminovske zasahy dava smysl a je dokonce nepostradatelny, napr. v _single user_ modu na OpenBSD ani jiny editor k dispozici neni. IMG img/ed_test.png Ed v akci No, kdo zna vi a jeho klony nvi ci Vim, nebude mit se zvladnutim tohoto editoru zavazny problem. Prikazovy a vkladaci rezim, _command mode_ a _insert mode_, jsou podobne. Radkove zobrazeni a prace s textem jsou samozrejme nepohodlne a vyzaduji cvik. Kdyz jsem o tom poprve cetl, ani jsem si to nedokazal predstavit. Stiskni klavesu `p` a zobrazi se aktualni radek, napis `5p` a zobrazi se pata radka. Napis `c`, dostanes se do vkladaciho rezimu a muzes zacit psat svuj text. Pata radka se prepise. Mimo to je mozne vlozit radku pred, prikaz `i` jako _insert_, nebo radku po, prikaz `a` jako _append_. Oboji prepne do vkladaciho rezimu urceneho k psani textu. V ed(1) nelze radku primo editovat. Je mozne ji prepsat (jiz zmineny prikaz `c` jako _change)_ nebo pouzit _substituci_. V tom spociva nejvetsi sila editoru. Kdo zna vi/nvi/vim, vi, o cem je rec. Substituce znamena vyhledat urcity vyraz na radce a nahradit ho jinym. Nejen na radce, ale v kombinaci s vyhledavanim v celem souboru nebo na vybrane skupine radek. Prikaz `s/old/new/g` vyhleda vsechny vyskyty slova _old_ na radce a nahradi je _new_. S pomoci _regexu_ lze vytvaret velmi komplikovane prikazy a provadet velice sofistikovane zmeny v textu. Ed(1) je velice usporny. Reci o tiskarnach nejsou nadsazka. V dobe jeho zrodu se monitory nepouzivaly a pocitac komunikoval s obsluhou pomoci radkove tiskarny. Clovek si musel velice dobre rozmyslet, co dela, aby se na neho nehrnuly stohy papiru sneci rychlosti hlucneho stroje. Velike _faux pas_. Proto program neni prilis ukecany. Stal se inspiraci pro vyvoj sofistikovanejsich editoru jako ex(1) ci zminene vi(1) a jeho vylepsena verze Vim. Zapada do filozofie unixovskych nastroju, protoze umoznuje spolupraci s jinymi programy k vykonani urciteho ukolu, pripadne ve skriptovani. Michael W. Lucas ukazuje nekolik chytrych prikladu, jak lze skriptovat uvnitr ed(1) nebo naopak vyuzit ed(1) v _shellovych_ skriptech. *) V shellovych skriptech je obvyklejsi pouzivat sed(1), tzv. _stream editor_, ktery ostatne z ed(1) vychazi. I pres jeho stari a nahrazeni pokrocilejsimi nastroji stale stoji za to se s editorem ed(1) seznamit, nebot vede k hlubsimu pochopeni, jak Unix vlastne funguje a jak je mozne ho vyuzivat. Je take zajimave studovat, jak byli programatori minulosti omezenim tehdejsiho hardwaru nuceni psat stihle a ciste funkcni programy, schopne pracovat i za velice nepriznivych podminek slabeho sitoveho pripojeni, vypocetni sily a nizke pameti. => https://mwl.io/nonfiction/tools#ed [Ed Mastery] => https://man.openbsd.org/ed.1 [ed(1)] => https://cs.wikipedia.org/wiki/Unix [Unix] => https://en.wikipedia.org/wiki/Ex_(text_editor) [Ex] => https://en.wikipedia.org/wiki/Vi [Vi] => https://en.wikipedia.org/wiki/Nvi [Nvi] => https://en.wikipedia.org/wiki/Vim_(text_editor) [Vim] => https://en.wikipedia.org/wiki/Emacs [Emacs] => https://mwl.io/nonfiction/tools [Sysadmin series] => https://en.wikipedia.org/wiki/Regular_expression [Regular Expression] => https://en.wikipedia.org/wiki/Sed [Sed]