ex (Texteditor)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

ex (/usr/bin/ex) ist ein zeilenorientierter Editor und Bestandteil von Unix- unixartigen Systemen. Er gehört zu einer Familie von Editoren, zu denen interaktiv benutzbare (ed und vi), aber auch solche für den Batchbetrieb (sed) gehören und die voneinander abgeleitet sind.

ex ist in Funktionsumfang und Verhalten normiert durch den POSIX-Standard.[1]

Geschichte[Bearbeiten | Quelltext bearbeiten]

Der originale ex war eine erweiterte Version des – damaligen – Unix-Standardeditors ed, welcher seinerseits Teil der Berkeley Software Distribution (BSD) war. Die Weiterentwicklung ex verbesserte im Vergleich zu ed vor allem die Benutzerfreundlichkeit, ohne allerdings das Grundkonzept des zeilenorientierten Editors anzutasten. Später nahm Bill Joy ex als Grundlage und entwickelte darauf – zuerst in Form eine Makro-Pakets, später als eigenständiges Programm – den Editor vi. Deshalb kann der vi auch mit einem Befehl in einen ex-Modus geschaltet werden.

Benutzung[Bearbeiten | Quelltext bearbeiten]

Konfiguration, ~/.exrc[Bearbeiten | Quelltext bearbeiten]

Einstellungsmöglichkeiten unterscheiden sich von System zu System aufgrund leicht unterschiedlicher Implementierungen, wenn es auch einen immer vorhandenen, gemeinsamen Grundstock gibt. Alle aktuell gütigen Einstellungen können während der Session durch den Befehl set all angezeigt werden. Das folgende Beispiel zeigt dies wie auch den Programmaufruf selbst auf einem aktuellen AIX-System (oslevel 7100-04-02-1614). Die Hervorhebungen sind im Original nicht vorhanden und dienen lediglich der Verdeutlichung:

$ ex .kshrc
".kshrc" 129/2238
:set all
autoindent              mesg                            noshowmode
autoprint               nomodeline                      noslowopen
noautowrite             nonumber                        tabstop=8
nobeautify              nonovice                        taglength=0
closepunct='".,;)]}     nooptimize                      tags=tags /usr/lib/tags
directory=/var/tmp      paragraphs=IPLPPPQPP LIpplpipbp backtag
noedcompatible          partialcharacter=-              term=xterm-r5
noerrorbells            prompt                          terse
exrc                    noreadonly                      timeout
noflash                 redraw                          ttytype=xterm-r5
hardtabs=8              remap                           warn
history=0               report=5                        window=39
noignorecase            scroll=19                       wrapscan
linelimit=1048560       sections=NHSHH HUuhsh+c         wrapmargin=0
nolisp                  shell=/usr/bin/ksh              nowriteany
nolist                  shiftwidth=5                    wraptype=word
magic                   noshowmatch

Einstellungen sind entweder deklarativer Natur, wo einem Bezeichner ein Wert zugewiesen wird (siehe im Beispiel etwa ttytype) oder logisch. Dabei wird traditionell der Bezeichner mit einem vorangestellten no aus- und ohne dieses Präfix eingeschaltet (siehe etwa nonumber, der Befehl set number schaltet die Ausgabe von Zeilennummern ein, set nonumber stellt dieses Verhalten ab).

Standard-Einstellungen, die in jeder Session gelten sollen, können in der Datei .exrc in Form solcher Befehle im eigenen HOME-Directory abgelegt werden. Diese Datei wird beim Start gelesen und die Einstellungen entsprechend gesetzt.

interaktive und non-interaktive Verwendung[Bearbeiten | Quelltext bearbeiten]

Auch wenn ex für die interaktive Benutzung gedacht war, ist es doch möglich, dem Programm eine Liste von Befehlen über stdin (entweder als Pipeline oder als Here-Document) zur automatisierten Abarbeitung zu übergeben. Dies macht es möglich, den Editor ähnlich wie sed für automatisierte Änderungen einzusetzen.

Im folgenden Script-Beispiel wird in allen Dateien in /some/where, deren Name auf txt endet, in solchen non-interaktiven Editorsessions geändert (und zwar jedes Auftreten von "abc" in den ersten drei Zeilen in "XYZ"). Man beachte, daß, im Unterschied zu sed, die geänderte Datei nicht erst in eine temporäre Zwischendatei gespeichert und anschließend über das Original kopiert zu werden braucht:

#! /bin/ksh
typeset chSrc="abc"
typeset chRpl="XYZ"
typeset fTgt=""

for fTgt in /some/where/*txt ; do
     ex - "$fTgt" <<-EOF
        1,3 s/$chSrc/$chRpl/g
        w
     EOF
done

Besonderheiten[Bearbeiten | Quelltext bearbeiten]

Auf HP-UX-Systemen kann ex auch durch den Befehl e (das ist ein Hardlink auf ex) aufgerufen werden.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. ex-Spezifikation der Open Group. Abgerufen am 7. September 2016 (englisch).