Date: 2021-04-16 20:00:00
From: rpt@desudoli.cz
Subject: Švanda s Édou
To: dalnopis@desudoli.cz
Tags:
software
Desc: Nahlédnutí do počítačové prehistorie, kdy práci monitorů dosud zastávaly řádkové tiskárny.
Švanda s Édou
Nedávno jsem dočetl vtipnou příručku Michaela W. Lucase Ed Mastery. Co si z toho vzít?
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.
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, vi či nafouknuté nvi. Vim a Emacs 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.
Michael W. Lucas to myslí vážně a zároveň ne. Je to třináctá kniha jeho sysadminovské řady, prý vydaná 1. dubna.
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.
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(1) či zmíněné vi(1) 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.
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.
EOF