# HG changeset patch # User markus schnalke # Date 1430567100 -7200 # Node ID a3f18ccc39961b698468f640a504ed9d50a307f0 # Parent 5efb052a0d9e83d48c610728891630a0e05eb961 Zwischenstand diff -r 5efb052a0d9e -r a3f18ccc3996 cut.txt --- a/cut.txt Sat May 02 09:54:00 2015 +0200 +++ b/cut.txt Sat May 02 13:45:00 2015 +0200 @@ -5,7 +5,7 @@ markus schnalke, 2015-04 -Cut ist eines der klassischen Programme im Unix-Werkzeugkasten. +Cut ist ein klassisches Programm im Unix-Werkzeugkasten. In keinem ordentlichen Tutorial zur Shellprogrammierung darf es fehlen. Es ist ein schoenes Anschauungs- und Beispielobjekt fuer's Shellscripting. Hier soll es portraitiert werden. @@ -49,17 +49,17 @@ dann ist `-c' nicht unbedingt die passende Option zur Kuerzung langer Zeilen. -Frueher als US-ASCII das omnipraesente Charset und Encoding +Frueher als US-ASCII omnipraesente als Zeichensatz und -kodierung war, war jedes Zeichen durch genau ein Byte kodiert und somit beschnitt `cut -c' sowohl nach Ausgabezeichen als auch nach -Datenmenge. Als aber Multibyte-Kodierungen, wie UTF-8, aufkamen, +Datenmenge. Als aber Multibyte-Kodierungen (z.B. UTF-8) aufkamen, musste man sich von dieser Annahme loesen. In diesem Zug bekam cut mit POSIX.2 die Option `-b'. Diese selektiert nach -Bytes. Will man also nur die ersten maximal 63 Bytes vor dem +Bytes. Will man also nur die ersten maximal 20 Bytes vor dem Newline-Zeichen stehen haben (und den Rest stillschweigend ignorieren), dann macht man das mit: - cut -b -63 + cut -b -20 Neben dem Zeichen- bzw. Byte-Modus bietet cut noch den @@ -98,12 +98,46 @@ Geschichtliches -Cut erblickte in XXX das Licht der Welt. Im Verleich zu -XXX stiess es erst relativ spaet XXX +Cut erblickte 1982 als Teil von UNIX System III das Licht der +oeffentlichen Welt. In den Quellen von System III findet sich +cut.c mit dem Zeitstempel 1980-04-11. +[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd -XXX ueber XXX floss -es in den XXX Standard ein, wo es seither residiert. +Aber werfen wir doch einen Blick auf die BSD-Linie: Dort ist mein +fruehester Fund ein cut.c mit dem Datum 1986-11-07 im Code der +Spezialversion 4.3BSD-UWisc, die im Januar 1987 veroeffentlicht +. +[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-UWisc/src/usr.bin/cut +Im bekannteren 4.3BSD-Tahoe (1988) taucht es nicht auf. Im +darauf folgenden 4.3BSD-Reno (1990) gibt es aber wiederum ein +cut, das von Adam S. Moskowitz und Marciano Pitargue geschrieben +und 1989 in BSD aufgenommen worden ist. +[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut +Die Manpage +[ http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/usr.bin/cut/cut.1 +erwaehnt bereits die angestrebte aber noch vermutete Konformitaet +zu POSIX.2. Man muss wissen, dass POSIX.2 erst im September +1992 veroeffentlicht wird. Die Aussage basiert also auf dem +Zwischenstand nach zweieinhalb der insgesamt fuenf Jahre, die +die Arbeiten am Standard benoetigten. -Standardisierung +Trotz all dieser Jahreszahlen aus den 80er Jahren gehoert cut +aus Sicht des urspruenglichen Unix zu den juengeren Tools. +Wenn cut auch ein Jahrzehnt aelter als Linux, der Kernel, ist, +so existierte Unix wiederum schon ein ganzes Jahrzehnt bevor cut +das erste Mal auftauchte. Insbesondere war cut nicht in Version 7 +Unix vorhanden, das die Ausgangsbasis aller modernen Unix-Systeme +darstellt. (Das weit komplexere sed z.B. war dort schon +vertreten.) -Verbreitung +Nichts desto trotz bewaehrte sich cut. Es wurde in andere +Unix Varianten uebernommen und ist heutzutage ueberall +anzutreffen. + +Die Beschreibung von cut in POSIX.2 1992 ist sicher wichtig, +zuvor war cut aber schon 1987 im X/OPEN Portability Guide, +Issue 2, Vol. 1, und davor sogar schon 1985 in der System V +Interface Definition beschrieben worden. + + +