AA_toolbox_olg-dudko_123rf_48477720.jpg

© Oleg Dudko, 123RF

Moreutils ergänzen die Toolbox für die Shell

Ausbaustufe

Die Moreutils ergänzen die Standard-Tools für die Shell um nützliche, aber zum Teil exotische Werkzeuge.

README

Kleine Tools helfen, auf der Befehlszeile und in Skripten Aufgaben elegant zu lösen. Die Moreutils ergänzen die klassischen GNU-Werkzeuge um einige Programme, die Routineaufgaben erleichtern.

Die Shell macht es möglich: Hier kombinieren Sie unzählige kleine Werkzeuge, um komplexe Aufgaben ad hoc oder in Skripten zu lösen. In vielen Fällen genügen dafür die Coreutils aus dem Paket util-linux. Es gibt aber immer wiederkehrende Situationen, für die es bisher keine (Standard-)Lösungen in Form eines Tools gibt.

Für einige davon hat Joey Hess (mithilfe einiger Freunde) einen Satz an Programmen entwickelt, die unter dem Namen Moreutils [1] laufen. Die Tools fallen größtenteils recht speziell aus, sodass es durchaus sein kann, dass Sie noch nie von ihnen gehört haben. Wer sich allerdings des Öfteren auf der Befehlszeile herumtreibt, tut ganz gut daran, diese kleinen Programme im Hinterkopf zu behalten.

Die aktuelle Version der Moreutils umfasst 15 Programme (siehe Tabelle "Kategorien"). Bei allen handelt es sich um übersichtliche Werkzeuge mit wenigen Optionen, die jeweils eine klar umrissene Aufgabe erledigen. Da sie in Anlehnung an die klassischen Unix-Tools entwickelt wurden, verwenden sie eine analoge Syntax und folgen ähnlichen Konzepten. Alle verfügen über eine Manpage, die allerdings oft wenig aussagekräftig ausfällt.

Kategorien

Programme starten chronic, ifne, lckdo, parallel, zrun
(Text-)Dateien bearbeiten combine, isutf8, ts, vidir
Tools für Pipes mispipe, pee, vipe, sponge
Fehlerbehandlung errno, ifdata, isutf8, mispipe

Moreutils installieren

Unter Debian und dessen Derivaten finden Sie die Moreutils in den Repositories, allerdings nicht in der neuesten Version 0.59. Letztere beziehen Sie bei Bedarf in Form von DEB-Paketen über einen Link auf der Webseite des Projekts [1]. Auch viele andere Distributionen führen die Moreutils in ihren Paketquellen, jedoch längst nicht alle. Fehlt bei der von Ihnen verwendeten Distribution ein entsprechendes Paket, müssen Sie die Moreutils aus den Quellen [3] übersetzen.

Chronic

In manchen Situationen, etwa in Skripten oder einem Cronjob, stören die Ausgaben eines Programms. In diesen Fällen hilft chronic weiter. Der Befehl erwartet als Argument ein Programm, dessen Kanäle STDERR (Fehlerausgabe) und STDOUT (Standardausgabe) es so lange verwirft, bis tatsächlich ein Fehler auftritt. Zwar ließe sich dies auch klassisch durch das Konstrukt > /dev/null 2>&1 bewerkstelligen – allerdings ist es dann nicht möglich, die Ausgaben im Fehlerfall zu erhalten, da dieses Umleiten ins Null-Device sie ebenfalls gnadenlos verwirft. Das macht chronic besser.

Ein Beispiel soll das verdeutlichen: Mit dem Skript a2x wandeln Sie Text aus dem Format Asciidoc in andere Formate um. Normalerweise funktioniert das gut und fehlerfrei – dann benötigen Sie die vom Skript produzierten Ausgaben nicht. Allerdings treten gelegentlich doch Probleme auf, und dann hilft die Analyse der Ausgaben dabei, den Fehler zu finden.

Listing 1 zeigt ein entsprechendes Beispiel für den Einsatz von Chronic. Normalerweise erzeugt diese Befehlszeile einfach nur die gewünschte EPUB-Datei, ohne weitere Ausgaben zu erzeugen. Tritt allerdings ein Fehler beim Bearbeiten auf, erhalten Sie die gesamte Ausgabe auf den beiden Kanälen STDOUT und STDERR.

Listing 1

$ chronic a2x -v -fepub *.adoc

Zwei Optionen steuern das genaue Verhalten von Chronic: Mit -e ("STDERR triggering") sorgen Sie dafür, dass es nicht den Rückgabewert des ausgeführten Programms auswertet, sondern anhand der Ausgaben auf STDERR entscheidet, ob Fehler auftraten. Voreingestellt entscheidet der Rückgabewert (ungleich null).

Über -v gibt Chronic etwas detailliertere Ausgaben aus, insbesondere den Rückgabewert des ausgeführten Programms. Es unterscheidet dabei zwischen Ausgaben auf STDERR und STDOUT des aufgerufenen Programms.

Ifne

Der Befehl ifne hat eine ähnliche Syntax wie chronic und startet ebenfalls das als Argument angegebene Programm. Allerdings wertet er die Standardeingabe aus, um zu entscheiden, ob es das Programm startet. Ohne Optionen startet Ifne das Programm nur dann, wenn der entsprechende Kanal nicht leer ist.

Listing 2 zeigt ein typisches Beispiel, das der Manpage entstammt. Der Administrator erhält hier eine E-Mail, falls das Find-Kommando mindestens eine Core-Datei findet. Dieser Ansatz liefert in der Nachricht direkt die ermittelten Pfade zu den Files mit.

Listing 2

$ find . -name core | ifne mail -s "Core files found" root

Ifne verfügt über eine Option -n, die sein Verhalten umkehrt: Mit dieser Option startet es das angegebene Programm nur, wenn die Standardeingabe leer ist.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Beschleunigte Befehlsbearbeitung mit GNU Parallel
    Durch den geschickten Einsatz des pfiffigen kleinen Programms GNU Parallel reizen Sie auch in Skripten die Multicore-CPU Ihres Rechners voll aus.
  • Neues auf den Heft-DVDs
    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial Ihres Rechners. Mit der Heft-DVD erhalten Sie nicht nur topaktuelle Distributionen, sondern auch die passenden Programme zu den Artikeln.
  • Datenfluss
    Die Shell hilft, wenn es um kniffelige Probleme geht. Genügen die Fähigkeiten eines einzelnen Tools nicht Ihren Wünschen, verketten Sie einfach mehrere Kommandos.
  • Zu Befehl: Kanäle, Pipes und Tee
    Mit wenigen Handgriffen leiten Sie auf der Kommandozeile Ein- und Ausgaben von Befehlen um und kombinieren Kommandos. Wir stellen die benötigten Bash-Operatoren vor und zeigen, wie Sie mit dem Programm tee noch einen Zwischenschritt einlegen.
  • Datenbaustelle
    Die Linux-Kommandozeile zeigt ihre Stärken gerade beim Kombinieren vieler kleiner Tools – hier gilt der klassische Satz: Das Ganze ist mehr als die Summe seiner Teile. Umleitungen und Pipes sind oft mit am Werk, wenn Kommandos zusammenwirken.
Kommentare

Infos zur Publikation

LU 05/2018: GEODATEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

added to access control list
Ingrid Kroll, 27.03.2018 07:59, 10 Antworten
Hallo allerseits, bin einfache Nutzerin und absolut Linux-unwissend............ Beim ganz norm...
Passwortsicherheit
Joe Cole, 15.03.2018 15:15, 2 Antworten
Ich bin derzeit selbständig und meine Existenz hängt am meinem Unternehmen. Wahrscheinlich verfol...
Brother drucker einrichten.
Achim Zerrer, 13.03.2018 11:26, 1 Antworten
Da mein Rechner abgestürzt war, musste ich das Betriebssystem neu einrichten. Jetzt hänge ich wi...
Internet abschalten
Karl-Heinz Hauser, 20.02.2018 20:10, 2 Antworten
In der Symbolleiste kann man das Kabelnetzwerk ein und ausschalten. Wie sicher ist die Abschaltu...
JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...