10.5 Der Editor »ed«
Der ed ist ein sehr alter UNIX-Editor. Mit ihm kommen Sie nur selten in Kontakt (etwa falls Sie bei der OpenBSD-Installation einmal von Hand Konfigurationen ändern wollen), aber das Know-how in Bezug auf dieses Urgestein kann in einigen Situationen sehr hilfreich sein – vielleicht werden Sie auch einmal ganz froh darüber sein, mit diesem Buch eine Einführung in die Arbeit mit dem ed zu erhalten, bei dieser wollen wir es aber auch belassen.
10.5.1 Grundlagen
Der ed-Editor wird ähnlich bedient wie vi, einige Kommandos sind sogar fast gleich benannt. Allerdings muss erwähnt werden, dass für das Editieren von Dateien mit dem ed deutlich mehr Aktionen seitens des Benutzers notwendig sind. Allein das Anzeigen einer Datei bzw. von Dateibereichen geschieht nicht ganz ohne weiteres Zutun, doch beginnen wir besser bei den absoluten Grundlagen.
Starten, Beenden, Speichern und Laden
Um eine Datei mit dem ed zu laden, geben Sie einfach ed Dateiname ein. Sie verlassen den Editor durch Eingabe von q bzw. Q (Letzteres verwirft getätigte Änderungen ohne Rückfrage, dazu gleich mehr). Sie können ed auch ohne Angabe einer Datei starten, dann müssen Sie allerdings einen Dateinamen beim Speichern angeben. Verwenden Sie zum Speichern den Befehl w und zum Speichern in eine neue Datei den Befehl w Dateiname.
Listing 10.5 Die /etc/passwd einlesen
$ ed /etc/passwd
2198
q
10.5.2 Eingeben und Anzeigen von Inhalten
Inhalte anzeigen
Der nächste wichtige Schritt ist, dass Sie lernen, Dateiinhalte anzuzeigen. Zur Anzeige von Inhalten wird der Befehl p verwendet. Sie müssen dabei allerdings auch angeben, welchen Inhalt Sie ansehen möchten: Dem p-Befehl setzen Sie dazu die gewünschte Zeilennummer vor, wobei 1 die erste und $ die letzte Zeile der Datei repräsentieren. 2p würde also beispielsweise die zweite Zeile der Datei ausgeben. Sie können auch ganze Bereiche angeben, indem Sie Start- und Endzeilennummer durch ein Komma getrennt eingeben: A,Bp. Um die aktuelle Zeile auszugeben, verwenden Sie den Punkt: .p.
Listing 10.6 Eine Datei auszugsweise und ganz anzeigen
$ ed myfile
28
1p
Hallo Welt.
.p
Hallo Welt.
2,5p
2,5p
A
B
C
D
1,$p
Hallo Welt.
A
B
C
D
E
F
G
H
Wo befinden Sie sich?
Die aktuelle Zeilennumer gibt Ihnen ed über den Befehl .n aus. Sie können auch mehrere Zeilen samt Nummern ausgeben lassen, indem Sie den Zeilenbereich analog zum p-Befehl beim n-Befehl angeben.
Listing 10.7 Zeilennummer anzeigen
2p
A
.n
2
Eingaben tätigen
Wie auch beim vi-Editor müssen Sie bei ed für Texteingaben in den Eingabemodus wechseln. In diesen gelangen Sie über den Befehl i bzw. a. Mit Ni können Sie Text vor der N.ten Zeile einfügen. Mit Na fügen Sie Text hingegen hinter der N.ten Zeile ein. Um Text an das Ende der Datei anzufügen, benutzen Sie für den a-Parameter die Adressangabe $, also: $a.
Nachdem Sie in den Eingabemodus gewechselt sind, können Sie dort mehrzeilige Eingaben tätigen. Um ihn wieder zu verlassen, muss in eine Zeile ein einzelner Punkt geschrieben werden. Wenn Sie die letzte gemachte Eingabe wieder rückgängig machen möchten, verwenden Sie einfach den Undo-Befehl (u).
Listing 10.8 Dateiinhalt anhängen und wieder löschen
$ ed myfile
28
4,$p
C
D
E
F
G
H
$a
Neues Ende
.
4,$p
C
D
E
F
G
H
Neues Ende
u
4,$p
C
D
E
F
G
H
Q
10.5.3 Inhalte kopieren und einfügen
Beim Kopieren und Einfügen von Inhalten müssen – wie immer – die Nummern der Zeilen, von denen Sie kopieren und in die Sie einfügen möchten, angegeben werden. Verwendet wird dazu der Befehl t. Vor ihn schreiben Sie den Zeilenbereich, den Sie kopieren möchten. Hinter den Befehl schreiben Sie die Nummer der Zeile, hinter die eingefügt werden soll. Soll vor der ersten Zeile eingefügt werden, muss als Ziel die Adresse 0 angegeben werden. Hier einige Beispiele:
Listing 10.9 Anwendung des t-Befehls
1,$n
1 Hallo Welt.
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 Neuer Input
10 H
2,4t10
1,$n
1 Hallo Welt.
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 Neuer Input
10 H
11 A
12 B
13 C
2,4t0
1,$n
1 A
2 B
3 C
4 Hallo Welt.
5 A
6 B
7 C
8 D
9 E
10 F
11 G
12 Neuer Input
13 H
14 A
15 B
16 C
10.5.4 Beenden erzwingen
Wie im vi-Editor (und wie bereits erwähnt) gibt es zum Beenden des ed-Editors zwei verschiedene Befehle. Der eine Befehl, nämlich Q führt zur unbedingten Beendigung des Editors, was auch ungespeicherte Änderungen verwirft. Mit dem kleingeschriebenen q-Befehl bekommen Sie hingegen bei ungespeicherten Änderungen ein Fragezeichen präsentiert. Geben Sie dann nochmals q ein, wird auch in diesem Falle der Editor ohne ein Speichern der getätigten Veränderungen beendet.
Listing 10.10 Änderungen speichern und beenden
$ ed myfile
28
i
Neuer Input
.
q
?
w
40
q
10.5.5 Weitere wichtige Befehle
Selbstverständlich kennt der ed noch weitere wichtige Befehle, die wir in dieser Übersicht erwähnen möchten (die Aufzählung enthält auch die bereits erwähnten):
- [A,Bc]
Ermöglicht die Eingabe von Inhalten, die die Zeilen von A bis B ersetzen. Die Angabe von B ist optional. - [A,Bd]
Löschen der Zeilen von A bis B. Die Angabe von B ist optional. - Ai bzw. Aa
i fügt Inhalt vor Zeile A ein, a fügt Inhalt nach Zeile A ein. Die Eingabe von neuen Inhalten wird mit einer Zeile, in der nur ein Punkt (.) steht, beendet. - A,BmC
Der Inhalt der Zeilen von A bis B wird an die Zeile C verschoben (auch hier kann C wieder den Wert 0 annehmen, B ist optional). - A,Bn
Gibt die Zeilen von A bis B mit vorangestellter Zeilennummer aus. - A,Bp
Gibt die Zeilen von A bis B aus, wobei die Angabe von B optional ist. - P
Schaltet den Eingabe-Prompt an bzw. aus. - q bzw. Q
q beendet den Editor, fragt aber bei ungespeicherten Änderungen nach. Q beendet sofort. - A,Bs/Jetzt/Dann
Ersetzen der Zeichenkette »Jetzt« durch »Dann« in den Zeilen von A bis B. Die Angabe von B ist optional. - A,BtC
Kopiert den Inhalt der Zeilen von A bis B hinter die Zeile C. Um Inhalte an den Dateianfang zu kopieren, kann für C auch die Zeile 0 angegeben werden. Die Angabe von B ist optional. - u
Macht die letzte Änderung rückgängig. - A,Bw Dateiname
Speichert (in der Datei mit dem angegebenen Namen). Bei Angabe von einem Bereich (A bis B) werden nur die entsprechenden Zeilenbereiche gespeichert. - !xyz
Führt den Befehl xyz aus und gibt seine Ausgabe aus.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.