Diskussion: Standard-UNIX-Dienstprogramme, die nur wenige verwendet haben und derzeit verwenden

Vor einer Woche sprach Douglas McIlroy, Entwickler der UNIX-Pipeline und Autor des Konzepts der „komponentenorientierten Programmierung“, über interessante und ungewöhnliche UNIX-Programme, die nicht weit verbreitet waren. Die Veröffentlichung hat eine aktive Diskussion über Hacker News gestartet. Wir haben die interessantesten zusammengestellt und freuen uns, wenn Sie an der Diskussion teilnehmen.


Fotos - Virginia Johnson - Unsplash

Mit Text arbeiten


Unter UNIX-ähnlichen Betriebssystemen gibt es einen Standardsatz von Tools zum Formatieren von Text. Mit dem Tippfehler- Dienstprogramm konnten Sie ein Dokument für Tippfehler und Hapaks anzeigen - Wörter, die nur einmal im Material vorkommen. Interessanterweise verwendet das Programm keine Wörterbücher , um nach Tippfehlern zu suchen . Es stützt sich nur auf die Informationen in der Datei und führt eine Frequenzanalyse von Trigrammen (eine Folge von drei Zeichen) durch. In diesem Fall werden alle erforderlichen Zähler in einem 26x26x26-Array gespeichert . Laut Douglas McIlroy reichte diese Speichermenge für mehrere Einzelbyte-Zähler kaum aus. Um sie zu speichern, wurden sie daher in logarithmischer Form geschrieben.

Tippfehler wurden heute durch modernere und genauere wörterbuchbasierte Rechtschreibprüfungen ersetzt. Allerdings ist das Werkzeug noch in Erinnerung - vor ein paar Jahren, ein Enthusiast eingeführt , die Typo - Implementierung auf Go. Das Repository wird noch aktualisiert.

Ein weiteres Werkzeug für die Arbeit mit Dokumenten aus den 80er Jahren ist die Writer's Workbench von Lorinda Cherry und Nina McDonald von Bell Labs. Es enthielt Werkzeuge zum Bestimmen von Teilen des Sprach- und Dokumentstils, zum Suchen nach Tautologien und zu komplexen Sätzen. Dienstprogramme wurden als Hilfe für Studenten entwickelt und zu einer Zeit wurden sie verwendetStudenten an der Colorado State University in den USA. Anfang der neunziger Jahre war die Writer's Workbench jedoch vergessen worden, da sie nicht in Version 7 Unix enthalten war. Dieses Tool setzte jedoch den Weg der Nachahmer fort - zum Beispiel Grammatik für IBM PC.

UNIX verfügt auch über Standardwerkzeuge zur Vereinfachung der Arbeit mit Formeln. Es gibt einen Sprachpräprozessor zur Verarbeitung mathematischer Ausdrücke Gl . Es ist bemerkenswert, dass es für den Entwickler ausreicht, eine Formel in einfachen Worten und Symbolen zu beschreiben, um sie anzuzeigen. Mit Schlüsselwörtern können Sie die mathematischen Zeichen vertikal und horizontal verschieben, ihre Größe und andere Parameter ändern. Wenn Sie die Leitung an das Dienstprogramm übergeben:

sum from { k = 1 } to N { k sup 2 }

Die folgende Formel wird am Ausgang generiert:

k=1Nk2


In den 1980er und 1990er Jahren half eqn IT-Fachleuten beim Schreiben von Softwarehandbüchern. Später wurde es jedoch durch das LaTeX-System ersetzt, das sogar Habr verwendet . Aber eqn ist das erste Tool dieser Klasse, das Teil eines UNIX-ähnlichen Betriebssystems bleibt.

Mit Dateien arbeiten


In dem thematischen Thread bemerkten die Bewohner von Hacker News mehrere selten verwendete Dienstprogramme für die Arbeit mit Dateien. Einer von ihnen war comm , um sie zu vergleichen. Dies ist ein vereinfachtes Analogon von diff , das für die Arbeit mit Skripten geschärft wurde. Es wurde geschrieben von Richard Stallman sich mit David MacKenzie.

Die Ausgabe des Programms besteht aus drei Spalten. Die erste Spalte enthält Werte, die für die erste Datei eindeutig sind, die zweite - eindeutig für die zweite Datei. Die dritte Spalte enthält allgemeine Werte. Damit die Kommunikation ordnungsgemäß funktioniert, müssen die zu vergleichenden Dokumente lexikalisch sortiert werden. Daher schlug einer der Bewohner des Standorts vor , mit dem Versorgungsunternehmen in der folgenden Form zu arbeiten:

comm <(sort fileA.txt) <(sort fileB.txt)

Comm ist nützlich, um die Rechtschreibung von Wörtern zu überprüfen. Es reicht aus, sie mit dem Referenzwörterbuchdokument zu vergleichen. Angesichts der Feinheiten, die mit der Notwendigkeit verbunden sind, Dateien zu sortieren, wird angenommen, dass Stallman und Mackenzie ihr Dienstprogramm ausschließlich für diesen Benutzerfall geschrieben haben.


Foto - Marnix Hogendoorn - Unsplash

Ein Diskussionsteilnehmer von HN bemerkte auch die Fähigkeiten des Paste- Operators , die für ihn nicht offensichtlich waren. Sie können Datenströme abwechseln oder einen Stream während der Ausgabe in zwei Spalten aufteilen:

$ paste <( echo -e 'foo\nbar' ) <( echo -e 'baz\nqux' )
foo     baz
bar     qux
$ echo -e 'foo\nbar\nbaz\nqux' | paste - -
foo     bar
baz     qux

Ein Benutzer stellte fest, dass dies häufig nicht die optimalsten Lösungen sind: beginnend mit fmt , ex und endend mit mlr mit jot und rs .

Welche Standardfunktionen von UNIX-ähnlichen Betriebssystemen haben Sie entdeckt?

Worüber wir in unserem Unternehmensblog schreiben:

Wie sich das Domain Name System entwickelt hat: die ARPANET-Ära.
Geschichte des Domain Name Systems: die ersten DNS-Server.
Geschichte des DNS: als Domainnamen bezahlt wurden.
Geschichte des Domain Name Systems: "Krieg" -Protokolle

All Articles