Az ed szövegszerkesztő parancsai
e file |
(edit) Az argumentumában megnevezett állomány betöltése a bufferba. |
r file |
(read) Az argumentumában megnevezett állomány betöltése a buffer végére. |
E file |
(edit) Editálás ellenőrzés nélkül. |
w file |
(write) A buffer sorainak elmentése. |
W file |
(write) A buffer hozzáírása a megadott állományhoz. |
q |
(quit) Kilépés, de csak akkor, ha a buffer aktuális tartalmát elmentette. Ellenkező esetben figyelmeztetést kapunk, egy kérdőjelet. |
Q |
(quit) Kilépés ellenőrzés nélkül. |
nnn szövegminta 'marker |
Adott sor kiírása a képernyőre, egyben kurrens sorrá tétele. Nnn egy abszolút vagy relatív sorszám lehet, szövegminta egy reguláris kifejezés, marker pedig egy kmarker paranccsal előzőleg beállított szövegjelző (marker). |
+ |
A kurzor előreléptetése egy sorral a bufferban. |
- |
A kurzor hátraléptetése egy sorral a bufferban. |
= |
Sorszám kiíratás |
p |
(print) Kiíratás a képernyőre |
n |
(number) Kiíratás a képernyőre a sorok sorszámaival együtt. |
f |
(file) Az editálás alatt lévő állomány nevének kiíratása. |
a text |
(append) Hozzáírás a kurrens sor után. Új állomány szerkesztésénél az a parancs kiadásával kell kezdeni a munkát. |
i |
(insert) Beszúrás a kurrens sor elé. |
d |
(delete) Sortörlés. |
j |
(join) A megnevezett sorok összekapcsolása a felsorolásuk sorrendjében. Nem szükségszerű, hogy egymás utáni sorokat kapcsoljunk össze, de mindig csak az alacsonyabb sorszámú sorhoz lehet a magasabb sorszámút kapcsolni. Az új sor az alacsonyabb sorszámú sorban lesz. |
s /m1/m2/ |
(substitute) A parancsban megadott két minta felcserélése. |
u |
(undo) Az utolsó változtatás előtti állapot visszaállítása. |
c text |
(change) Beszúrás módba kerül és a jelzett sorokat kicseréli arra a szövegre, amit a parancs utáni sorokba beírunk. Ha több új sor van, mint amit változtatásra kijelöltünk, akkor a többlet beszúródik a szövegbe. Ha a kijelöltnél kevesebb új sort írunk, a maradék sorok érintetlenek maradnak. A cserére leírt sorok után új sorba írt soreleji pont visszavisz parancs módba. |
G edcmd |
(global) Az edcmd parancs végrehajtása a buffer minden illeszkedő sorában. |
A felsorolt parancsokkal már szinte mindent meg tudunk tenni, amit az ed szerkesztővel lehet, a további parancsokat inkább csak a gyakorlott felhasználók használják.
l |
(list) Kiíratás a képernyőre a vezérlőkarakterekkel. |
M pos |
(move) A kijelölt sor(ok)nak a pos argumentummal megadott sor után mozgatása (pos az ed szabályainak megfelelően mind sorszám, mind minta, mind marker lehet). |
t pos |
A kijelölt sor(ok)nak a pos argumentummal megadott sor után másolása (pos az ed szabályainak megfelelően mind sorszám, mind minta, mind marker lehet). |
k c |
Marker elhelyezése a kijelölt sorba. A marker neve az argumentumban írt betű lesz, amire a későbbiekben a 'c, azaz a betűt egy aposztroffal megelőzve lehet hivatkozni. |
! cmd |
Argumentuma egy cmd shell parancs, ami végrehajtódik, majd visszatérünk az ed parancsállapotába. |
A következő két parancsot inkább parancsmódosítóknak lehetne nevezni. Helyük a parancssor végén, a parancsargumentum után van.
v |
a parancs végrehajtása minden olyan sorban, amit a sorkiválasztó minta nem jelöl ki. |
g |
a parancs végrehajtása a soron belül minden olyan helyen, ahol lehet. |
Néhány példa az ed szövegszerkesztő használatára
Első példánkban azt mutatjuk be, hogy hogyan lehet markerrel jelzett sorokon operálni. Legyen az a feladatunk, hogy egy fájlban az első lepke szót tartalmazó sor elé beszúrjuk a szövegben található összes pillango szót tartalmazó sorokat. A k parancs segítségével a példában a h betűvel jelöljük meg a lepke mintát tartalmazó sort, majd az egész bufferen végrehajtatjuk az áthelyezést. (A markeres megadásnak az az előnye, hogy ha maga a lepke szó megváltozik a referencia sorunkban, a marker őrzi pozícióját, és nyugodtan hivatkozhatunk rá parancsainkkal; hasonlóképpen, ha a markerral jelölt sor pozíciója változik a fájlban (akár mert eléje szúrunk be valamit, akár mert őt magát mozgatjuk), a marker "foggal-körömmel" ragaszkodni fog ahhoz a sorhoz, amihez először hozzárendeltük.)
/lepke/kh
g/pillango/m'h-1
Következő példánkban Romhányi József legendás tevéjének hátán tevegelünk be az ed szépségeinek birodalmába... A teve nevű állományunkban az ismert vers egy részlete szerepel, csak kissé hibásan:
$ cat teve
Monotn
uget a suppedo homokon
a sivatag lova
oda
$
A javítás során megnézzük, hogy hány soros a versrészlet, majd először a hiányzó utolsó előtti sort ('a tetova teve') pótoljuk az a parancs segítségével. Mivel az első és utolsó sor is hibás, azokat a c paranccsal cseréljük helyesre. Végül az elsőtől az utolsó sorig kiíratjuk a művet a képernyőre, majd el is mentjük a fájlt.
$ ed teve
39
$=
4
$-1a
a tetova teve
.
$c
tova
.
1
Monotn
1c
Monoton
.
1,$p
Monoton
uget a suppedo homokon
a sivatag lova
a tetova teve
tova
w
65
q
$
A számítástechnikához közelebb álló a következő példa. A cskel.c állomány az alábbi:
$ cat cskel
}
if !=
than
else
while !=
{
$
A hibákat újra az ed segítségével javítjuk. A javító parancsokat egy javit nevű állományba tesszük, hátha még máskor is hasznát vesszük. A javít a munkáját kommentekkel kíséri.
$ cat javit
!echo Kezdodik a javitas
1t$
$-1m1
1d
!echo Mar megcsereltem a sorokat. Betucsere jon.
/^if/ s/!/=/
/than/ s/a/e/
1
g/^[^iwf]/ s/^\( \)/ \1/g
1
g/^[ ]*[^{}]$/ s/\([ ]*\)//
1
g/^ /s/\([^ ]\)/ \1/g
1,$p
w cskelj.c
q
$
$ ed cskel.c <javit
29
Kezdodik a javitas
Mar megcsereltem a sorokat. Betucsere jon.
{
if ==
t h e n
e l s e
while !=
}
49
$
A javítófájlban először megcseréltük az első és utolsó sort, majd az if-fel kezdődő és a than-t tartalmazó sorban hajtottunk végre karaktercserét. Ezután a buffer elejére mentünk, és minden nem 'i', 'w' vagy 'f' betűvel kezdődő sor elejére két szóközt tettünk: ez az első g paranccsal kezdődő sor. Utána kiirtottuk a kapcsos zárójelek elől a szóközöket, majd a következő lépésben minden szóközzel kezdődő sorban, minden nem szóköz karakter után egy szóközt szúrtunk be. Vegyük észre a különbséget. A parancs sor elején lévő g (global) parancs a buffer összes sorára kiterjeszti a sorfelismerő mintával való sorkeresést, míg a parancssor végén lévő parancsmódosító g az éppen vizsgált sor egészére terjeszti ki a parancs végrehajtását. Végül kiírattuk majd eltettük egy új néven az állományt.