💾 Archived View for dalnopis.desudoli.cz › gemlog_2021 › svanda-s-edou.gmi captured on 2024-08-25 at 00:31:16. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

Švanda s Édou

Nedávno jsem dočetl vtipnou příručku Michaela W. Lucase Ed Mastery. Co si z toho vzít?

https://mwl.io/nonfiction/tools#ed

Program ed(1) je ten standardní unixovský textový editor. Tvrdí to alespoň Dennis M. Ritchie, spoluautor operačního systému Unix. A kdo by se hádal s člověkem, který napsal kompletní operační systém bez oné sofistikované hračky, kterou dnes nazýváme monitor.

https://man.openbsd.org/ed.1

https://cs.wikipedia.org/wiki/Unix

Chceš-li patřit mezi elitu, musíš umět ed(1). Skutečný sysadmin, který má mozek a páteř, si pamatuje, co napsal, a udržuje v hlavě kontext. Komunikuje se strojem na hluboké úrovni. Žádný monitor, jen řádková tiskárna. Sysadmini rybízové používají ex[1], vi[2] či nafouknuté nvi[3]. Vim[4] a emacs[5] jsou komplikované a megalomanské kusy softwaru určené pro pouhé uživatele. Sysadmin, který je používá ke své práci, je jako upír. Ubírá vzácné systémové prostředky na pouhý editor. Nelze mu věřit, míní autor.

https://en.wikipedia.org/wiki/Ex_(text_editor)

https://en.wikipedia.org/wiki/Vi

https://en.wikipedia.org/wiki/Nvi

https://en.wikipedia.org/wiki/Vim_(text_editor)

https://en.wikipedia.org/wiki/Emacs

Michael W. Lucas to myslí vážně a zároveň ne. Je to třináctá kniha jeho sysadminovské řady, prý vydaná 1. dubna.

https://mwl.io/nonfiction/tools

ed v akci

ed(1) byl vyvíjen od roku 1969 Kenem Thompsonem, jeho konečnou verzi napsal Dennis M. Ritchie patrně v roce 1973. Používá se tedy skoro 50 let a nepatří do starého železa. Knihu bych v něm asi nepsal (ve nvi ano), ale na menší úpravy textu, sysadminovské zásahy dává smysl a je dokonce nepostradatelný, např. v single user módu na OpenBSD ani jiný editor k dispozici není.

No, kdo zná vi a jeho klony nvi či vim, nebude mít se zvládnutím tohoto editoru závažný problém. Příkazový a vkládací režim, command mode a insert mode, jsou podobné. Řádkové zobrazení a práce s textem jsou samozřejmě nepohodlné a vyžadují cvik. Když jsem o tom poprvé četl, ani jsem si to nedokázal představit. Stiskni klávesu p a zobrazí se aktuální řádek, napiš 5p a zobrazí se pátá řádka. Napiš c, dostaneš se do vkládacího režimu a můžeš začít psát svůj text. Pátá řádka se přepíše. Mimo to je možné vložit řádku před (příkaz i jako insert) nebo řádku po (příkaz a jako append). Obojí přepne do vkládacího režimu určeného k psaní textu.

V ed(1) nelze řádku přímo editovat. Je možné ji přepsat (již zmíněný příkaz c jako change) nebo použít substituci. V tom spočívá největší síla editoru. Kdo zná vi/nvi/vim, ví, o čem je řeč. Substituce znamená vyhledat určitý výraz na řádce a nahradit ho jiným. Nejen na řádce, ale v kombinaci s vyhledáváním v celém souboru nebo na vybrané skupině řádek. Příkaz s/old/new/g vyhledá všechny výskyty slova old na řádce a nahradí je new. S pomocí regexu lze vytvářet velmi komplikované příkazy a provádět velice sofistikované změny v textu.

https://en.wikipedia.org/wiki/Regular_expression

ed(1) je velice úsporný. Řeči o tiskárnách nejsou nadsázka. V době jeho zrodu se monitory nepoužívaly a počítač komunikoval s obsluhou pomocí řádkové tiskárny. Člověk si musel velice dobře rozmyslet, co dělá, aby se na něho nehrnuly stohy papíru šnečí rychlostí hlučného stroje. Veliké faux pas. Proto program není příliš ukecaný.

Stal se inspirací pro vývoj sofistikovanějších editorů jako ex či zmíněné vi a jeho vylepšená verze vim. Zapadá do filozofie unixovských nástrojů, protože umožňuje spolupráci s jinými programy k vykonání určitého úkolu, případně ve skriptování. Michael W. Lucas ukazuje několik chytrých příkladů, jak lze skriptovat uvnitř ed(1) nebo naopak využít ed(1) v shellových skriptech.[6]

https://en.wikipedia.org/wiki/Sed

I přes jeho stáří a nahrazení pokročilejšími nástroji stále stojí za to se s editorem ed(1) seznámit, neboť vede k hlubšímu pochopení, jak Unix vlastně funguje a jak je možné ho využívat. Je také zajímavé studovat, jak byli programátoři minulosti omezením tehdejšího hardwaru nuceni psát štíhlé a čistě funkční programy, schopné pracovat i za velice nepříznivých podmínek slabého síťového připojení, výpočetní síly a nízké paměti.

~~~~~~~~

[1] Extended, unixovský řádkový editor, jemuž byl ed(1) předkem. Jeho pokročilejší verze.

[2] Visual, unixovský stránkový editor, jemuž byly ed(1) a ex(1) předky.

[3] New vi, klon vi(1) používaný v BSD operačních systémech kvůli copyrightu.

[4] Vi improved, patrně nejrozšířenější klon vi(1) s přidanou asi miliardou funkcí a API umožňujícím psát pluginy, jichž je dnes asi taky miliarda.

[5] Emacs, textový editor, který umí všechno možné, jen ne dobře editovat text. Ano, ve svaté válce mezi příznivci Vimu a Emacsu jsem na straně Vimu.

[6] V shellových skriptech je obvyklejší používat sed(1), tzv. stream editor, který ostatně z ed(1) vychází.