Hlavní navigace

Ed - textový editor do nepohody

Petr Krčmář 20. 9. 2002

Potřeba editovat textové soubory je v Unixu větší než kde jinde. Nástrojů, které toto umožňují, je celá řada. Představíme si jeden z nich.

Většina z vás asi nejspíš zná některý z klasických editorů, jako jsou vi, pico nebo joe. Do této kategorie však patří také editor Ed, který možná není až tak známý, je ale určitě přinejmenším stejně rozšířený jako jeho sourozenci. Jako ostatní, umí Ed samozřejmě editovat textové soubory. Tím však veškerá podobnost s výše zmíněnými končí. Ed je totiž řádkový editor. Takže zapomeňte na celoobrazovkové výpisy, chybové hlášky, pohyb po dokumentu pomocí kurzorových kláves. Nic takového Ed neumí. Teď si určitě řeknete: „No moment, jak to teda může fungovat ?“. Odpověď zní: „Naprosto elegantně a jednoduše.“ Celá editace se totiž provádí pěkně na jednom, jediném řádku. Jak jeho autor sám napsal, napadlo ho vytvořit textový editor poté, co zjistil, že vi a emacs jsou na jeho lince o rychlosti 110 baudů (bitů za sekundu) neúnosně pomalé a tudíž nepoužitelné. Přál si editor, který by nepotřeboval ke své práci celou plochu monitoru, ale naopak ji co nejvíce šetřil. No, a protože nic takového neexistovalo, tak si to napsal.

Protože tedy nejdůležitější vlastností nového editoru byla šetrnost k pomalým linkám, nevypisuje Ed žádné hlášky. Tedy ani OK při provedení příkazu. Přesto je práce s ním velmi jednoduchá a intuitivní.

Začínáme

Ed se překvapivě spouští příkazem „ed“. Jako parametr mu můžeme vložit název souboru, se kterým budeme pracovat. Ten musí existovat, Ed neumí založit nový soubor. Pokud soubor existuje, okamžitě se dozvíme jeho velikost v bytech. Hned na začátku by bylo dobré si říct, jak se Ed ukončuje. Ono se to nezdá, ale je to mnohem větší problém, než ho spustit. Schválně si to zkuste … no dobře, já vás nebudu napínat, Ed se ukončuje napsáním velkého písmene Q a potvrzením. Potom, co editor spustíme, jsme se ocitli v takzvaném příkazovém režimu. Můžeme mu tedy zadat několik zajímavých příkazů, tak předně je to příkaz k ukončení editace. Další důležitou operací je načtení souboru do paměti. To se provádí příkazem „e nazev_souboru“. Důležité upozornění: Veškerá práce se provádí pouze v paměti, s kopií původního souboru. Pokud tedy změny zapomenete uložit, přijdete o ně. Uložení provedeme příkazem w, jako write. Opět se dozvíme velikost souboru v bytech.

Editujeme

Teď přijde nejdůležitější část práce, a tou je samotný zápis do souboru. Do tzv. editačního režimu se přepneme tak, že jednoduše zadáme příkaz a (append=přidávat), který zajistí začátek editace, a to za aktuální řádek. Pokud chceme psát před aktuální řádek, využijeme příkazu i (insert=vložit). V tuto chvíli se stane vše, co napíšeme, součástí editovaného dokumentu. Editaci ukončíme tak, že na samostatný řádek napíšeme tečku a stiskneme enter. Vidíte, že Ed navypisuje žádná hlášení. Takže základní práci jsme probrali a mohli bychom skončit. Ale kdepak, teď to teprve začne. Příkazový režim je velmi mocný i s tím málem příkazů.

Další kouzla příkazového řádku

Důležitou informací, kterou jsem vám zatím zatajil, je, že Ed si každý řádek v souboru očísluje vzestupně od jedničky. Aktuální řádek se označuje tečkou a poslední řádek znakem $. Jejich čísla zjistíme tak, že napíšeme .= nebo $= . Pomocí čísel řádků jsme schopni se po dokumentu jasně a přesně pohybovat. A to jednoduše tím způsobem, že v příkazovém režimu přímo napíšeme číslo řádku, který chceme určit jako aktivní, tj. že s ním teď chceme pracovat. Ed nám tento řádek pro kontrolu vypíše. Můžeme také využívat znamének plus a mínus k relativnímu posunu po dokumentu. +3 nás například přesune o tři řádky dále.

Všechny Edovy příkazy lze s čísly řádků kombinovat. Pokud například chceme zapsat něco pod řádek šest, řekneme Edovi „6a“. Dalším často používaným příkazem je d (delete), který smaže aktuální řádek. Opět jej můžeme spojit s číslem řádku, například 34d smaže řádek 34. Pokud chceme vybrat více naž jeden řádek, můžeme použít číselný rozsah, který způsobí, že se příkaz rozšíří na všechny zadané řádky. Rozsah zadáme pomocí čárky. Kdybychom chtěli smazat řádky 23–62, napíšeme příkaz 23,62d .

Příkazem, který se Vám bude také často hodit, je p (print), který vypíše aktuální řádek, nebo řádky. Teď si Vás vyzkouším. Co se stane, když Edíkovi řekneme „1,$p“. No?? Správně, vypíše nám celý dokument. Hodně častým úkolem editoru je také vyhledávání řetězců. To se v Edu provádí vložením řetězce mezi dvě lomítka, takže, chceme-li vyhledat slovo Pepa, napíšeme jednoduše /Pepa/ a Ed změní aktuální řádek za první, ve kterém narazí na zadaný řetězec. Pokud nejsme spokojeni a chceme v hledání pokračovat, napíšeme // a Ed vyhledá další výskyt řetězce. Samozřejmě lze hledání opět zkombinovat s předešlým. Tak například /Ahoj/,/Pepa/d smaže řádky, ve kterých se vyskytují obě slova včetně řádků, které jsou mezi nimi. No, není to krása ??

Samozřejmě můžeme řetězce kopírovat (příkaz t, 1t4, zkopíruje řádek 1 za řádek 4), přesouvat (m, ovládá se stejně jako kopírování). Poslední příkaz, který si ukážeme, je označen vykřičníkem a lze pomocí něj spustit příkaz shellu (např. !ll).

Závěr

Ed je velmi pěkný a jednoduchý editorek, který umožňuje práci na velmi pomalých linkách (radioamatéři na paket rádiu vědí, o čem mluvím, pro něj je ed jako stvořený), ale lze jej také využít při tvorbě záchranným disket, protože je mnohem menší než jakýkoliv jiný editor. Další jeho nespornou výhodou je, že je svými příkazy podobný již zmiňovanému editoru vi, a v neposlední řadě také skutečnost, že jej lze nalézt ve všech unixových systémech, které si jen lze představit. Doufám, že jste si jej oblíbili stejně jako já.

Našli jste v článku chybu?

23. 9. 2002 15:13

kokot (neregistrovaný)

Jaky je rozdil mezi sed a ed? sed je GNU verze ed?

Masochista jsem a na interaktivni editovani jsem (s)ed uz nekolikrat pouzil. Vysledkem byla znicena klavesnice, husto a ticha domacnost. Takze doporucuju. Pres pomale linky (modem) jsem nikdy nemel s vi, emacsem, jedem atd problem, a uz to nikdy nehodnam udelat.

Na druhe strane v shell scriptech (s)ed obcas pouzivam a jsem s nim spokojen, hlavne se hodi na pomalejsich strojich s malo pameti protoze je oproti napr awku vyrazne mene narocny…



20. 9. 2002 15:56

fikus (neregistrovaný)

obcas pouzivam editor "cat > soubor.txt" :-))))

Vitalia.cz: Pečete cukroví a zbyl vám bílek?

Pečete cukroví a zbyl vám bílek?

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí