Adventskalender 5. Dezember 2022 - ed

Smalltalk
Antworten
Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Adventskalender 5. Dezember 2022 - ed

Beitrag von Meillo » 05.12.2022 10:37:59

Vor ueber fuenfzig Jahren ist mit dem Texteditor ed Unix geschrieben worden. Ed, als abgespeckte Version des Multics-Editors QED, war damals der einzige und damit der Standard-Texteditor unter Unix. Laengst ist er von vi verdraengt worden ... und all diejenigen, die vi minimalistisch und kryptisch finden, werden mit dem heutigen Tuerchen noch minimalistischere und noch kryptischere Welten betreten. Dabei ist ed nicht kryptisch, sondern nun ungewohnt. Er entspricht nicht mehr unseren heutigen Erwartungen. Sachlich betrachtet ist nichts an ihm kryptisch. Im Gegenteil, alles was passiert, steht klar lesbar in der Ausgabe. Alles ist sichtbar und nachvollziehbar. Nur muss man halt wissen, wie man es lesen muss. ;-)


Hintergrund

Ed kommt aus einer Welt, in der es noch keine Bildschirme gab. Die Ausgabe wurde auf einem Zeilendrucker (meist ein Typenraddrucker, der auf Endlospapier geschrieben hat) ausgegeben. Dieser Drucker war mit der Tastatur zu einem Terminal verbaut. Da diese Drucker langsam waren (10-30 Zeichen pro Sekunde), waren lange Ein- und Ausgaben langsam. Folglich ist in ed alles so kurz wie moeglich, damit der Programmierer moeglichst wenig auf den Drucker warten muss.

Das praegnanteste Beispiel sind eds Fehlerausgaben, die in jedem Fall nur aus einem einzigen Zeichen bestehen: `?' ;-)

Auch alle Befehle bestehen nur aus einem einzigen Buchstaben.

Trotz dieser damaligen Einschraenkungen, seines Alters und der Tatsache, dass ed gerade mal 2500 Zeilen C-Code umfasst, ist ed erstaunlich maechtig. Mit ihm lassen sich manche Aufgaben bewaeltigen, fuer die sonst programmiert werden muesste.


Installation und einfache Benutzung

Am einfachsten ist es, den GNU ed als Debian-Paket zu installieren: Debianed.

Ich verwende lieber die Heirloom Implementierung des ed. Diese wird als Teil der Heirloom Tools ausgeliefert: https://heirloom.sourceforge.net/tools.html. Weil es mir zu umstaendlich war, jeweils die ganze Toolchest zu uebersetzen, wenn ich nur einen ed wollte, habe ich eine Standalone-Version extrahiert: http://hg.marmaro.de/heirloom-ed/

Ed wird mit einem optionalen Dateinamensargument gestartet ... und dann sieht man erstmal nichts und weiss nicht was man tun soll und ist aufgeschmissen. :lol:

Zwei Befehle machen es Anfaengern einfacher:

- `P' (prompt) aktiviert einen Prompt (das einzelne Zeichen `*'), wodurch man sieht, wann man Befehle eingeben kann.

- `H' (help) aktiviert die Ausgabe menschenlesbarer Fehlermeldungen, so dass nicht nur `?' ausgegeben wird.

Beide Befehle sind Toggle und nach einmaliger Eingabe bis zum Ende der Editiersession aktiv.

Beendet wird ed mit dem Befehl `q' (quit). Falls man Aenderungen in der Datei gemacht hat, ohne diese zu speichern, dann beendet ed nicht sofort (weil man die Aenderungen sonst ja verlieren wuerde). Stattdessen fragt er lieb nach (d.h. er sagt `?') und beendet nur wenn man nochmals den `q' Befehl zur Bestaetigung eingibt.

Code: Alles auswählen

$ ed
P
*H
* [... Aenderungen an der Datei ...]
*q
?
warning: expecting `w'
*q
$
Wichtig ist es, hier nun zu verstehen, welche Zeilen zu welcher Ebene gehoeren. Die erste und letzte Zeile haben einen Shell-Prompt (`$') sind sind in der Shell. Die erste ed-Zeile (`P') ist bereits ein ed-Befehl, nur ist dort der Prompt noch nicht aktiviert. Anschliessend sind alle Zeilen mit einem Stern am Anfang ed-Befehlseingaben. Das Fragezeichen und die Warnmeldung sind Fehlerausgaben von ed. Eine weitere Kategorie von Text lernen wir gleich kennen: Eingabetext.

Die groesste Schwierigkeit bei ed ist sicherlich, diese verschiedenen Ebenen zu unterscheiden und zu wissen, wo man sich gerade befindet. Ein aktivierter Prompt in ed hilft schon eine Menge. Gut zu wissen ist auch, dass man mit ^C (Strg + C) immer zu einem frischen ed-Prompt zurueckkommt und das vorige Kommando abgebrochen wird. (Das ist wie in der Shell: ^C bricht ab und bringt einen zurueck zum Eingabeprompt.)


Text eingeben

Mit dem `a' Befehl (append) wechselt man in den Eingabemodus. Alles was nun eingegeben wird, ist Inputtext fuer die Datei, der nach der aktuellen Zeile eingefuegt wird. (Bei einer leeren Datei befindet man sich in Zeile 0.) Man beendet die Eingabe, indem man eine Zeile eingibt, die nur genau einen Punkt enthaelt:

Code: Alles auswählen

$ ed
P
*H
*a
foo bar
baz
.
*
Der Prompt zeigt an, dass wir uns am Ende wieder im Befehlsmodus befinden und die Texteingabe abgeschlossen ist. Hat man den Prompt nicht aktiviert, muss man das einfach wissen. ;-)

Speichern koennen wir mit `w' und dem Dateinamen:

Code: Alles auswählen

*w foo
12
*
Damit ist die Datei `foo' geschrieben worden. Ed gibt aus wie viele Bytes er geschrieben hat. In dem Fall sind es drei dreibuchstabige Woerter, ein Leerzeichen und zwei Newlines. Wir koennen nun beenden und uns die Datei in der Shell anschauen:

Code: Alles auswählen

*q
$ cat foo
foo bar
baz
$ wc -c foo
      12 foo
(Die erste Zeile ist noch der Quit-Befehl des ed, danach folgen zwei Shellbefehle mit ihren Ausgaben.)

Nun koennen wir die Datei `foo' mit ed wieder oeffnen und uns in ed ihren Inhalt anzeigen lassen:

Code: Alles auswählen

$ ed foo
12
P
*H
*,p
foo bar
baz
*
Ed gibt auch beim Oeffnen einer Datei aus, wie viele Bytes er gelesen hat.

`,p' ist der Befehl, der die ganze Datei ausgibt. Zur Ausgabe dient der Befehl `p' (print).


Adressen

Jedem Befehl koennen Zeilenadressen vorangestellt werden, die angeben, auf welche Zeilen der Befehl wirken soll.

Wollen wir nur die zweite Zeile ausgeben, so geht das mit `2p':

Code: Alles auswählen

*2p
baz
*
Wollen wir nach der ersten Zeile einfuegen, so geht das mit `1a':

Code: Alles auswählen

*1a
blubber
blibber
blobber
.
*,p
foo bar
blubber
blibber
blobber
baz
*
Wir haben also nach der ersten Zeile drei neue Zeilen eingefuegt und danach die ganze Datei ausgegeben. Laesst man die Adressen weg, so werden Standardadressen verwendet. `p' ohne Adresse gibt die aktuelle Zeile aus. Mit Komma koennen Adressbereiche angegeben werden, um z.B. die Zeilen eins bis drei auszugeben:

Code: Alles auswählen

*1,3p
foo bar
blubber
blibber
*
Wenn man die Adressen vor und nach dem Komma weglaesst, werden dort die Standardadressen fuer den Adressbereich verwendet. Bei `p' ist das 1 und $ (was fuer die letzte Zeile steht).

Eine nummerierte Zeilenausgabe ist auch moeglich mit dem Befehl `n' (numbered), der einfach statt `p' verwendet werden kann:

Code: Alles auswählen

*3,$n
3       blibber
4       blobber
5       baz
*
Die aktuelle Zeile kann mit `.' angesprochen werden. Fast alle Befehle machen die zuletzt bearbeitete Zeile zur aktuellen Zeile. Man kann sie auch setzen, indem man nur eine Adresse eingibt:

Code: Alles auswählen

*3
blibber
*.=
3
*n
3       blibber
*
`.=' gibt die Nummer der aktuellen Zeile aus. Alternativ kann man auch `n' verwenden, um sie zu erfahren.

Adressen kann man nicht nur anhand der Zeilennummer angeben, sondern auch mittels regulaerer Ausdruecke. Fasst man den regulaeren Ausdruck mit Slashes (`/') ein, dann wird eine Vorwaertssuche von der aktuellen Zeile aus gemacht. Verwendet man Fragezeichen (`?'), dann wird rueckwaerts gesucht. Hier ein paar Beispiele fuer die Verwendung von regulaeren Ausdruecken als Adressen:

Code: Alles auswählen

*,n
1       foo bar
2       blubber
3       blibber
4       blobber
5       baz
*/baz/
baz
*n
5       baz
*?lub?
blubber
*n
2       blubber
*1,/obb/n
1       foo bar
2       blubber
3       blibber
4       blobber
*

Text bearbeiten

Gute Editoren sind fuer das Bearbeiten (nicht fuer das Schreiben) von Text optimiert, da dies viel mehr gemacht wird (oder werden sollte), als den Text nur mal einzugeben.

Wichtig ist es, zu realisieren, dass ed ein Zeileneditor ist. D.h. er arbeitet zeilenweise. Seine Adressierung ist anhand von Zeilen und fast alle Befehle bearbeiten Zeilen. Es gibt nur eine einzige Ausnahme: Nur das `s' Kommando (substitute) veraendert Teile einer Zeile.

Wie man Zeilen einfuegt, wissen wir schon: mit dem `a' Kommando (append). Es gibt auch ein `i' Kommando (insert), das genau das gleiche macht, nur *vor* der aktuellen bzw. angegebenen Zeile, statt danach.

Zeilen loeschen kann man mit dem `d' Kommando (delete). Es entfernt einfach die angegebenen Zeilen:

Code: Alles auswählen

*4d
*,n
1       foo bar
2       blubber
3       blibber
4       baz
*
Das `c' Kommando (change) ist eine Kombination von `d' und `i'. Es ersetzt die angegebenen Zeilen, was einem Loeschen und neu Einfuegen gleich kommt.

Das `s' Kommando (substitute) veraendet Inhalte von Zeilen. Die meisten werden es von sed schon gut kennen:

Code: Alles auswählen

*3s/b/k/g
*p
klikker
*
Mit dem `g' am Ende werden alle Vorkommen in der Zeile ersetzt. Ohne wird nur das erste ersetzt. Gibt man eine Zahl an, so wird das jeweilige Vorkommen ersetzt. Zudem kann man noch ein `p' ans Ende setzen, um die Zeile nach der Ersetzung auszugeben:

Code: Alles auswählen

*s/k/c/2p
klicker
*
Weitere Befehle findet ihr in der Manpage (zumindest in der von Heirloom ed, da die Manpage der GNU-Implementierung leider nur rudimentaer und ungenuegend ist).


Scripting

Sed ist aus einer (in einer naechtlichen Aktion) modifizierten Version von ed entstanden. Sed erlaubt es, ed in Pipelines einzusetzen. Ed kann zwar nicht in Pipelines eingesetzt werden, aber er kann auch gescriptet werden. Das betrifft die Faelle, wo `sed -i' verwendet wird. Ueblicherweise uebergibt man die Befehle als Heredoc:

Code: Alles auswählen

$ ed - foo <<!
3d
10s/apfel/birne/
w
q
!
$
Das `-' beim Aufruf (alternativ `-s' fuer silent) verhindert, dass ed ausgibt, wie viele Bytes er gelesen oder geschrieben hat.

Ed hat einen Vorteil gegenueber `sed -i': ed kann mit Adressen rechnen. Adressen koennen nicht nur Zeilennummern sein, sondern auch regulaere Ausdruecke, die mittels Slashes (Vorwaertssuche) oder Fragezeichen (Rueckwaertssuche) begrenzt werden. Vorwaertssuchen gehen bei sed auch. Ed kann zudem mit allen Adressen rechnen, indem man mit Plus oder Minus Zahlen addiert oder subtrahiert. Die dritte Zeile kann man also auch so ausgeben:

Code: Alles auswählen

*1+2n
3       klicker
*4-1n
3       klicker
*4-n
3       klicker
*1++n
3       klicker
*3-----+++++n
3       klicker
*
Das laesst sich auch mit regulaeren Ausdruecken kombinieren. Hier z.B. um den gesamten Inhalt der usage() Funktion im Code von Heirloom ed auszugeben:

Code: Alles auswählen

$ ed ed.c
44024
P
*H
*/^usage(/-;/^}/p
static void
usage(char c)
{
        if (c) {
                write(2, progname, strlen(progname));
                write(2, ": illegal option -- ", 20);
                write(2, &c, 1);
                write(2, "\n", 1);
        }
        write(2, "usage: ", 7);
        write(2, progname, strlen(progname));
        write(2, " [-] [file]\n", 12);
        exit(2);
}
*q
$
Die Startadresse ist die Zeile, die mit dem Namen der Funktion beginnt, abzueglich einer Zeile, weil in C der Sichtbarkeitsmodifier und der Typ des Rueckgabewertes typischerweise in der Zeile darueber stehen.

Entscheidend hier ist nun, dass die zweite Adresse nicht mit Komma sondern mit Strichpunkt abgetrennt ist. Der Unterschied ist, dass die zweite Adresse damit nicht von der aktuellen Zeile ausgehend gesucht wird, sondern von der vorherigen Adresse aus. Es wird also zuerst die erste Adresse gesucht (Start der usage()-Funktion) und von *dort* aus die zweite Adresse (Ende der Funktion).

Dieses Feature ist sehr maechtig.


Adressketten

Zum Abschluss ein besonderes Feature von ed: Adressketten. Dies kann kaum ein anderer Editor. Ed ist wie SQL im Vergleich zu Excel: Man denkt nach und schreibt einen maechtigen Befehl, statt von Hand zu arbeiten. Frueher war dies effektiv und oekonomisch. Heute ist stupide Handarbeit mit direktem Feedback eher gewuenscht, anstatt den Kopf zu bemuehen. ;-)

Jedenfalls kann man in ed nicht nur zwei Adressen angeben, sondern auch mehrere, die (mittels Strichpunkten) als Adresskette wirken, um nach und nach mit relativen Spruengen die passende Stelle zu finden. Ein abschliessender Befehl verwendet dann nur die letzten zwei Adressen.

So kann ich beispielsweise die naechste Nennung von `jmp' im Code hinter dem Start der main()-Funktion mit Kontext ausgeben:

Code: Alles auswählen

*/^main(/;/jmp/-3;+6n
294                     sigset(SIGINT, onintr);
295             if (oldhup != SIG_IGN)
296                     sigset(SIGHUP, onhup);
297             setjmp(savej);
298             if (lastsig) {
299                     sigrelse(lastsig);
300                     lastsig = 0;
*
Auch wenn die Anwendungsfaelle dafuer nicht oft auftreten, in den relevanten Faellen koennen oft Einzeiler Probleme loesen, fuer die man sonst von Hand arbeiten oder ein Hilfsprogramm schreiben muesste. Neben Adressketten betrifft dies auch das `g' Kommando (global), auf das ich hier nicht mehr eingehen moechte.


Abschluss

Ich hoffe, dass ich hiermit einen kleinen Einstieg in ed geben konnte, der euch den Zugang erleichtert und vielleicht motiviert, mal eine Datei damit zu bearbeiten. Fuer weniger erfahrene User hat dieses Tuerchen vielleicht den Blick auf die Geschichte von Unix und Linux etwas erweitert. Fuer erfahrene User, die sich in der Shell heimisch fuehlen, ist dies vielleicht ein Anlass, um ed in das eigene Portfolio von Werkzeugen aufzunehmen.

Use ed once in a while! ;-)


Und zum Schluss noch der Klassiker: https://www.gnu.org/fun/jokes/ed-msg.html 8)
Use ed once in a while!

JTH
Moderator
Beiträge: 3015
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von JTH » 05.12.2022 11:20:28

Cool, danke für die anschauliche Vorstellung plus historischem Hintergrund :THX: Werde ich mir mal in meinem Werkzeugkasten merken und schauen, wo sich die ein oder andere kleine Anwendung findet.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
TRex
Moderator
Beiträge: 8040
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von TRex » 05.12.2022 11:49:04

Meillo hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 10:37:59
Man denkt nach und schreibt einen maechtigen Befehl, statt von Hand zu arbeiten. Frueher war dies effektiv und oekonomisch.
Stimme grundlegend zu - aber da, wo es für effektives Arbeiten notwendig ist, macht man das immer noch, aber nicht interaktiv. Da überspringe ich dann den Zwischenschritt ed und verwende ein Werkzeug, dessen Tun ich schnell reproduzieren kann (sed, awk, ...). Dennoch war es mal interessant zu sehen, wie man damit arbeitet (und wovon sed abstammt).
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von tobo » 05.12.2022 12:24:24

Meillo hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 10:37:59
Weitere Befehle findet ihr in der Manpage (zumindest in der von Heirloom ed, da die Manpage der GNU-Implementierung leider nur rudimentaer und ungenuegend ist).
Dafür beschreibt die info-Seite info ed die GNU-Implementierung nahezu vollständig.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von uname » 05.12.2022 12:30:57

Danke für deinen Beitrag und die Erinnerung an alte Zeiten. Ich verwende lieber den Vim ;-) Ein paar Türchen sind ja noch im Adventskalender frei. Falls jemand alternative Editoren vorstellen will. ;-)

Aber zurück zum ed:
Ich habe wahrscheinlich Ende der 1980er-Jahre oder Anfang der 1990er-Jahre auf einem 80286 mit MS-DOS den Editor EDLIN benutzt. Ich gehe mal davon aus, dass er ähnlich zu ed war, oder? Das ist der Vorteil von freier Software: Sie bleibt auch Jahrzehnte erhalten. EDLIN gibt es wohl nicht mehr.

fischig
Beiträge: 3602
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von fischig » 05.12.2022 17:10:51

Gibt's sehr wohl noch:

Code: Alles auswählen

C:\>edlin
edlin 2.8, copyright (c) 2003 Gregory Pietsch
This program comes with ABSOLUTELY NO WARRANTY.
It is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License -- either
version 2 of the license, or, at your option, any later
version.
freedos unter dosemu unter bullseye
in meinem ersten 286er DOS-Rechner mit DOS 4.1 habe ich den mal benutzt. Fragt mich nicht wozu. Das weiß ich nicht mehr :P

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von paedubucher » 05.12.2022 17:57:44

Jemand hat mal ein kleines Buch namens ed Mastery geschrieben, wohl als Aprilscherz. Ich habe es mir gekauft, weil ich solche Publikationen grundsätzlich unterstütze :D
Michael W. Lucas hat geschrieben: Let me be perfectly clear: ed(1) is the standard Unix text editor. If you don’t know ed, you’re not a sysadmin. You’re a mere dabbler. A dilettante. Deficient.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

TuxPeter
Beiträge: 1956
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von TuxPeter » 05.12.2022 18:46:22

Hi,
Ein feiner Beitrag, das weckt Erinnerungen: Irgendwann in den '80ern hatte ich einen sehr ähnlichen Editor zu bedienen, um COBOL-Zeilen für eine HP3000 damit reinzuklopfen. Wird wohl ein ED-Abkömmling gewesen sein. Es war ein enormer Fortschritt gegenüber dem Lochkartengewurschtle, das vorher in diesem Laden herrschte. Denn wie editiert man Lochkarten mit diesen schreibmaschine-ähnlichen IBM-Karten-Lochern? Man kopiert die alte Karte bis zum Fehler und gibt dann den Rest neu ein. Befehlszeilen dazwischen einzufügen war ja relativ leicht, da die Karten in größeren Sprüngen durchnumeriert waren. Nur, wenn die Zwischenräume aufgebraucht waren? Der ganze Stapel musste neu numeriert und ausgestanzt werden, und das war verständlicherweise nicht so gern gesehen.

Später ging das in Kaugummi-Basic viel einfacher, einfach "renum" geben ...
Aber JEDER Editor erschien mir damals eine enorme Erleichterung gegenüber der Textbe- und verarbeitung mit der Schreibmaschine, mit Tippex, Fotokopierer, Schere und Klebstoff. Was ich auch ausgiebig betrieben habe.

Ich weiß aber nicht mehr, wie der HP-Editor damals hieß. Und immer, wenn irgendeiner der Kollegen compilierte oder gar testete, ging die Performance sowas von in die Knie...

KP97
Beiträge: 3407
Registriert: 01.02.2013 15:07:36

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von KP97 » 05.12.2022 20:08:49

Ich kenne aus der Zeit nur den vi, mit ed haben wir gar nichts gemacht.
Oder meinst Du noch früher zu Mainframe Zeiten VSAM mit ISPF?

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von Meillo » 05.12.2022 21:42:53

paedubucher hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 17:57:44
Jemand hat mal ein kleines Buch namens ed Mastery geschrieben, wohl als Aprilscherz. Ich habe es mir gekauft, weil ich solche Publikationen grundsätzlich unterstütze :D
Ich habe es gelesen, es hat mich aber nicht ueberzeugt. Es ist zwar ein verhaeltnismaessig ausfuehrliches Buch ueber ed, aber von Mastery kann keine Rede sein. Es sind noch nicht mal Adressketten erwaehnt. Man merkt, dass der Autor ed nie selber fuer richtige Arbeit eingesetzt hat. (Ich habe damals bei meinem Softwareschaetze-Vortrag, bei dem ich ed auch erklaere, wenigstens die Folien ausschliesslich mit ed erstellt und live alle Scripte mit ed programmiert. https://www.ulm.ccc.de/ccc/chaosseminar ... eschaetze/ )

Es ist, wie du schreibst, ein Aprilscherz, der zur Haelfte ein mittelmaessiges Buch ueber ed darstellt. Wenn man auf seiner Website liest, mit welcher Frequenz Michael W. Lucas heute Buecher raushaut, wundert es nicht, dass es halbgar geblieben ist. Schade, weil das Buch mehr Potenzial gehabt haette.

Cool ist allerdings die Manly McManface Edition, die fuer einen Aufpreis (der an eine feministische Organisation gespendet wird) komplett frei von weibliche, Personalpronomen ist. (Das ganze Buch ist frei von jeglichen Personalpronomen im Singular, wodurch beide Editionen identisch sind! :-D )


Die beste Kurzeinfuehrung in ed, die ich kenne, steckt in dem Buch ``The UNIX System'' von S.R. Bourne (1983). Es sind nur 12 Seiten ueber ed, die sind aber destilliert. Ansonsten bietet das Buch einen Rundumschlag um alles was damals auf Unix relevant war.

Eine ausfuehrliche Anleitung fuer ed, die auf Einsteiger-Niveau beginnt und dann stufenweise fortgeschrittenere Editiertechniken erklaert, findet sich in ``A UNIX Primer'' von Lomuto & Lomuto (1983). Das Buch glaenzt mit guter Didaktik und ist fuer jeden Kenntnisstand passend.
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von Meillo » 05.12.2022 21:44:02

Danke fuer alle Kommentare. Ich freue mich, dass einige von euch mit Zeileneditoren vertraut sind. :THX:
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von paedubucher » 05.12.2022 22:48:32

Meillo hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 21:42:53
paedubucher hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 17:57:44
Jemand hat mal ein kleines Buch namens ed Mastery geschrieben, wohl als Aprilscherz. Ich habe es mir gekauft, weil ich solche Publikationen grundsätzlich unterstütze :D
Es ist, wie du schreibst, ein Aprilscherz, der zur Haelfte ein mittelmaessiges Buch ueber ed darstellt. Wenn man auf seiner Website liest, mit welcher Frequenz Michael W. Lucas heute Buecher raushaut, wundert es nicht, dass es halbgar geblieben ist. Schade, weil das Buch mehr Potenzial gehabt haette.
Er schreibt ungefähr ein Fachbuch pro Jahr. Viele von ihnen habe ich gekauft; gedruckt oder als eBook. TLS Mastery habe ich sogar gesponsored, weil ich etwas Zusammenhängendes über das Thema lesen wollte. Und diese Lücke hat er immerhin geschlossen. Die Bücher sind sehr humorvoll geschrieben, und die Informationen lassen sich meist sinnvoll auf Linux, FreeBSD und OpenBSD anwenden. An den Charme der Unix-Klassiker kommen die Bücher aber leider nicht heran.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von tobo » 05.12.2022 23:43:20

Wem die (Autoren-)Klassiker gefallen - der Meister himself hat zwei kurze (11, 16 Seiten) PDFs zum Thema verfasst (1997, 2009):
Kernighan - A Tutorial Introduction to the UNIX Text Editor
Kernighan - Advanced Editing on UNIX

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von Meillo » 06.12.2022 08:14:35

tobo hat geschrieben: ↑ zum Beitrag ↑
05.12.2022 23:43:20
Wem die (Autoren-)Klassiker gefallen - der Meister himself hat zwei kurze (11, 16 Seiten) PDFs zum Thema verfasst (1997, 2009):
Kernighan - A Tutorial Introduction to the UNIX Text Editor
Kernighan - Advanced Editing on UNIX
Danke fuer den Hinweis! Die beiden Dokumente hatte ich nie so recht auf dem Schirm, obgleich ich schonmal Kontakt zu ihnen hatte.

Die Jahreszahlen in den von dir verlinkten Versionen entsprechen allerdings nicht dem Zeitpunkt, zu dem die Dokumente geschrieben worden sind. Wie auch in der URL zu sehen, gehoeren sie zur Dokumentation der 7th Edition, die 1979 rausgekommen ist. Vermutlich sind sie spaeter nur neu formatiert worden. Ich habe nicht Zeichen fuer Zeichen verglichen, auf den ersten Blick sehe ich aber keine inhaltlichen Abweichungen von den aelteren Versionen von 1978. Nur die Typographie unterscheidet sich. Hier sind Links auf die aelteren Versionen:

http://squoze.net/UNIX/v7/files/doc/04_edtut.pdf
http://squoze.net/UNIX/v7/files/doc/05_adved.pdf

Vom Einsteigerdokument gibt es zudem eine Vorlaeuferversion, die Teil der Dokumentation zur 6th Edition (1975) war:

http://squoze.net/UNIX/v6/files/doc/ed.pdf

Ich freue mich darauf, die Dokumente nun genuesslich zu lesen. :-) Danke, tobo.
Use ed once in a while!

tobo
Beiträge: 1964
Registriert: 10.12.2008 10:51:41

Re: Adventskalender 5. Dezember 2022 - ed

Beitrag von tobo » 06.12.2022 10:18:10

Meillo hat geschrieben: ↑ zum Beitrag ↑
06.12.2022 08:14:35
Die Jahreszahlen in den von dir verlinkten Versionen entsprechen allerdings nicht dem Zeitpunkt, zu dem die Dokumente geschrieben worden sind.
Ja, die Daten sind mir auch ein bisschen seltsam vorgekommen - als einzigen Unterschied (auch mit diffpdf) kann ich nur ein anderes Layout ausmachen, somit sind die älteren Originalversionen natürlich noch "wertvoller". Vielen Dank dafür!

Antworten