Aufmacher Artikel

Midnight Commander

Der programmierbare Dateimanager

01.07.2002 Ob Sie im Verzeichnisbaum Ihres heimischen Rechner stöbern oder ein entferntes System via SSH administrieren, der Dateimanager Midnight Commander hilft bei der Verwaltung der Daten.

Die Manpage des Midnight Commander nennt den Dateimanager schlicht eine "Visual Shell for Unix-like Systems". Beim Überfliegen der 2800 Zeilen ahnt man jedoch schnell, dass hinter dem Norton-Commander-Klon mehr steckt als nur eine aufgebohrte Shell. Mit dem Midnight Commander browsen Sie nicht nur durch die Verzeichnisse, sondern können Dateirechte und -Eigentümer festlegen, packen Tar-Archive und installieren RPM-Dateien. Im Internet liegt der Midnight Commander unter dem URL http://www.gnome.org/projects/mc/ zum Download bereit.

In den folgenden Abschnitten beschäftigen wir uns mit den Fähigkeiten und der Konfiguration des Konsolen-Tools. Rufen Sie den Midnight Commander mit dem Kommando mc auf, dann startet er im aktuellen Verzeichnis. Sie können dem Aufruf jedoch zusätzliche Optionen mitgeben, die das verhalten des Programms bei Start beeinflussen. Schauen wir uns also zunächst einige Optionen an, mit denen Sie den mc auf der Kommandozeile aufrufen können.

Pfade und Optionen

Möchten Sie den Midnight Commander an einer anderen Stelle als dem aktuellen Verzeichnis innerhalb der Verzeichnisstruktur öffnen, hängen Sie den entsprechenden Pfad als Option an: mc /usr/lib/mc/ bringt Sie in das Bibliotheksverzeichnis des Midnight Commander. Den Ort dieses Verzeichnisses, in dem Sie auch die FAQ des Dateimanagers finden, sagt Ihnen der Befehl mc -f.

Wenn es der Midnight Commander für Ihren Geschmack zu bunt treibt, dann pegeln Sie ihn mit dem Kommando mc -b in die schwarz-weiße Wiedergabe zurück. Falls Sie bereits schwarz-weiß sehen, gibt der Befehl mc -c dem Dateimanager die Farbe zurück. Mit der Option -C besteht die Möglichkeit, die gesamte Farbgebung des mc Ihren Bedürfnissen anzupassen. Diesen Teil der Einstellung sparen wir uns jedoch auf für den Abschnitt über die Bearbeitung der Datei ~/.mc/ini auf.

Abbildung 1

Abbildung 1: Der Midnight Commander mit geöffneter Menüleiste

Vielleicht ist Ihnen beim Testen der Optionen die Mausunterstützung des Midnight Commander aufgefallen, wenn Sie ihn z. B. in einem Xterm starten. Auch in der virtuellen Textkonsole, unter X erreichbar durch die Tastenkombination [Strg]+[Alt] + [F1-F6], gibt Ihnen mc die Freiheit, sich klickend durch die Verzeichnisse zu bewegen. Einzige Bedingung: Sie müssen das Tool GPM installiert haben, das Ihnen das Schieben mit der Maus im Textmodus gestattet. Mit der Option -d schalten Sie übrigens die Mausunterstützung des mc wieder ab.

Der versteckte Editor

Keine Option sondern ein eigenständiger Befehl ist das Kommando mcedit, mit dem Sie den internen Editor des Midnight Commander starten. Obwohl Mcedit nur ein Link auf das Binary des Midnight Commander ist, hat er als Editor durchaus Qualitäten und sogar eine eigene Manpage, die Sie mit man mcedit in der Kommandozeile erreichen.

Für Einsteiger, die sich noch nicht an Editoren wie Xemacs oder die Vi-Klone herantrauen, ist Mcedit mit seiner einfachen Bedienung durch die Tasten [F1-F10] und dem gelungenen Syntax-Highlighting eine gute Wahl. Vermutlich erscheint Ihnen die weiße Schrift auf blauem Grunde nicht gerade förderlich, um mit dem Editor konzentriert zu arbeiten, deshalb werden wir ihn später augenfreundlicher konfigurieren.

Konfiguration mit Eingabefeldern

Bevor Sie sich mit der Bedienung des Midnight Commander anfreunden, wollen wir uns an die Konfiguration des Dateimanagers machen, damit Ihre Daten beim Experimentieren keinen Schaden nehmen. In die Sicherheitseinstellungen gelangen Sie durch die Taste [F9], mit der Sie die Menüleiste aktivieren. Mit den Pfeiltasten wandern Sie bis zum Auswahlpunkt Optionen in das Untermenü. Die Sektion Nachfragen wählen Sie mit der Taste [Return] an oder durch den Shortcut N.

In dem Fenster, das sich öffnet, schalten Sie eine Sicherheitsbestätigung ein, in dem Sie vor den Aktionen die Checkbox aktivieren. Sie können die verschiedenen Felder mit der Maus, den Pfeiltasten oder den Shortcuts bearbeiten. Mit der Leertaste wählen Sie einen Punkt an oder ab. Um ganz sicher zu gehen, sollten Sie sich, sowohl das Löschen als auch das Überschreiben, Ausführen und Beenden bestätigen lassen.

Die Shortcuts greifen nicht immer verlässlich, weil sie aufgrund der deutschen Übersetzung innerhalb mancher Eingabemasken doppelt erscheinen. Um den Midnight Commander mit der englischen Benutzerführung aufzurufen, ohne alle anderen Programme ihrer deutschen Sprachunterstützung zu berauben, starten Sie mit dem Kommando env LANG=en_us mc. Alternativ dazu können Sie den Befehl als alias in die Dateien ~/.bashrc oder ~/.profile eintragen:

alias mc='env LANG=en_us mc'

Der Einfachheit halber bleiben wir jedoch im Text bei der deutschen Version. Eine zusätzliche Möglichkeit, die Ausgabe des Dateimanagers durch die Bash zu beeinflussen, stellt die Variable $HISTIGNORE bereit, da der mc oftmals eine verwirrende Spur in der History der Shell hinterlässt:

PROMPT_COMMAND='pwd>&8;kill -STOP $$'8

Die Variable in der Form…

export HISTIGNORE=*PROMPT*

…eliminiert den PROMPT-Eintrag aus der Datei ~/.bash_history.

Doch zurück zur Menüleiste. Nachdem Sie in der Bestätigungsmaske Ihre Änderungen mit OK festgelegt haben, gehen Sie erneut auf den Auswahlpunkt Optionen, wählen diesmal jedoch den Menüpunkt Konfiguration. Hier sehen Sie die Grundeinstellungen, die zum größten Teil selbsterklärend sind und sich kaum von den Einstellungen anderer Dateimanager unterscheiden.

Auf eine Konfigurationseinstellung wollen wir trotzdem eingehen: Wenn Sie ein vorsichtiger Mensch sind, dann werden die Voreinstellung Sicheres Löschen mit einem Kreuz versehenen. Diese Option modifiziert die Lösch-Angaben, wenn Sie im Menüpunkt Nachfragen Aktionen gewählt haben. Die Voreinstellung in der bestätigung zum Löschen springt von Ja auf Nein und Verzeichnisse, die Dateien enthalten, lassen sich nicht mehr automatisch rekursiv löschen.

Im nächsten Schritt wenden wir uns dem Untermenü Layout zu. In dieser Maske beeinflussen Sie das Erscheinungsbild des Dateimanagers, bestimmen die Lage und Größe der Fenster und blenden die Menüleisten ein oder aus. Die Auswahl mit dem Namen Darstellungsbits regelt den Zeichensatz. In diesem Untermenü kreuzen Sie die Kästchen ISO 8859-1 und Komplette 8-Bit Eingabe an, damit Sie ohne Probleme die Umlaute nutzen können.

Zwei weitere Angaben des Menüs Optionen heißen Tasten lernen und Virtuelle FS. Im Eingabefenster Tasten lernen gleichen Sie die Tastaturbelegung ab. Wenn Sie in dieser Option vergebens nach den Funktionstasten [F13] bis [F20] auf Ihrem Keyboard suchen, dann können Sie diese mit der Tastenkombination [Shift]+[F1] bis [F8] simulieren.

Die Auswahl der Sektion Virtuelle FS merkt sich unter anderem Ihr Passwort für FTP-Server und den von Ihnen gewünschten FTP-Proxy. Abschließend speichern Sie Ihre Einstellungen, worauf Ihnen der Dateimanager mit Einstellungen in ~/.mc/ini gespeichert antwortet. In der Datei ~/.mc/ini steht ein großer Teil der Hauptkonfiguration des Midnight Commander, und der Datei-Browser wäre kein Unix-Tool, wenn wir diese Datei nicht von Hand editieren könnten, um für den Feinschliff der Einstellungen zu sorgen. Schauen wir uns die Konfigurationsdatei einmal aus der Nähe an.

Handarbeit

Erinnern Sie sich noch an Mcedit, den Editor des Dateimanagers, mit seiner weißen Schrift auf blauem Grund? Jetzt machen wir uns daran, diese Farbauswahl zu ändern. Laden Sie die Datei ~/.mc/ini in Ihren Lieblings-Editor und schauen Sie sich die Variablen der Konfiguration in aller Ruhe an. Wahrscheinlich entdecken Sie einige alte Bekannte aus Ihren Einstellungen in der Menüleiste Optionen, als da wären die Fenstergröße…

[Layout]
(..)
first_panel_size=50

…das sichere Löschen…

[Midnight-Commander]
(…)
safe_delete=1

…oder das FTP-Passwort…

[Misc]
ftpfs_password=user@linux.local

Allen Einträgen ist gemeinsam, dass Sie in Abschnitte gegliedert sind, deren Eröffnungszeile stets ein Trenner in eckigen Klammern markiert. Tragen Sie unter der Sektion [Misc], mit einer Leerzeile Abstand, den Trenner [Colors] ein und fügen Sie danach die Zeile base_color=editnormal=black,white ein.

Durch den Abschnitt, den Sie soeben in der Datei ~/.mc/ini notiert haben, zeigt Ihnen mcedit in Zukunft eine schwarze Schrift auf weißen Hintergrund. Das Grundmuster der Color-Sektion liefert ein detailliertes Bild:

(Schlüsselwort_1)=(Fg-Farbe),(Hg-Farbe):(Schlüsselwort_2)= …

Die Angabe base_color bezeichnet in unserem Falle die Voreinstellung der Farben und wird in der Manpage color map genannt. Das Schlüsselwort für die normale Farbdarstellung des Editors heißt editnormal, und Sie weisen ihm eine schwarze Farbe des Vordergrundes und einen weißen Hintergrund zu. Wie Sie an unserem Grundmuster sehen, können Sie weiteren Schlüsselworten verschiedene Farbwerte zuweisen, wenn Sie diese durch Doppelpunkte trennen. Die verschiedenen Kombinationen, die das Aussehen des Dateimanagers Ihren Wünschen anpassen, sind sehr ausführlich in der Manpage im Kapitel Color dokumentiert.

Abbildung 2

Abbildung 2: Der Editor mcedit zeigt seine Perl-Syntax

Gebundenes

Im Konqueror oder in xftree, dem Datei-Browser des Xfce Desktop Environment, bringt der Klick auf eine Grafikdatei ein Bild auf den Monitor. Ein Klick auf ein Soundfile spielt die Datei ab. Beim Midnight Commander hingegen herrscht oft Stille bis die Maus glüht, denn er wartet darauf, dass Sie die Datei ~/.mc/bindings für ihn erstellen und anpassen. Den Namen bindings trägt die diese Konfigurationsdatei zu recht, denn sie verrät dem mc, welche Programme er an bestimmte Dateiendungen binden soll.

Um diese Datei im Verzeichnis ~/.mc zu kreieren, wählen Sie in der oberen Menüleiste die Punkte Befehl/Suffixdaten bearbeiten oder kopieren die globale Konfiguration mc.ext aus dem Bibliothekenverzeichnis des Datei-Browsers nach ~/.mc/bindings. Auf den ersten Blick wirkt bindings erschreckend und undurchschaubarer als die Datei ~/.mc/ini, deshalb machen wir anhand zweier Beispiele die Konfiguration klar:

regex/\.(wav|WAV|Wav|snd|SND|Snd|voc|VOC|Voc|au|AU|Au)$
       Open=play %f

Das Schlüsselwort regex beschreibt den regulären Ausdruck, bei dem die Regel ihre Anwendung findet, und das Schlüsselwort Open verrät, welches Programm durch Enter oder einen Doppelklick die Datei öffnet. Die Datei selbst wird durch den Platzhalter %f dargestellt. Etwas weniger abstrakt ausgedrückt sagt dieser Eintrag:

Dateien mit der Endung wav, WAV, Wav sowie den Varianten, die durch Enter oder Doppelklick gestartet werden, sind mit dem Programm play verknüpft und werden durch dieses abgespielt.

Zumeist finden Sie in den Binding-Einträgen eine Zeile, die ein Icon spezifiziert. Diese Anweisungen sind jedoch für unseren Gebrauch nicht weiter wichtig.

Eine Nuance schwieriger ist unser nächstes Beispiel:

type/JPEG\ image
        Include=image-options
(…)
include/image-options
        Open=if [ "$DISPLAY" = "" ]; then zgv %f; else (xv %f &); fi
        View=%view{ascii} identify %f

Bekommt es der Midnight Commander mit einer Bilddatei vom Typ IMAGE/JPEG zu tun, bindet er durch den ersten Teil der Regel die Konfigurationsanweisung image-options ein. Diese Anweisung wird im zweiten Teil der Regel definiert. Die Trennung nach type und include zeigt ihren Vorteil dann, wenn mehrere Dateitypen von einer Regel abgedeckt werden sollen. Sehen wir uns an, wie der Include-Teil funktioniert:

Sobald Sie eine Datei mit dem Typ IMAGE/JPEG anrühren, sei es durch Return-Taste oder Mausklick, prüft der Midnight Commander die Umgebungsvariable $DISPLAY. An dem Ergebnis dieses Tests erkennt er, ob eine grafische Benutzeroberfläche läuft.

Ist die Antwort positiv, startet der Dateimanager die ausgewählte JPEG-Datei im Bildbetrachter xv, im anderen Falle greift er zum Konsolen-Viewer zgv. Neu ist in unserem zweiten Beispiel das Schlüsselwort View. Es beschreibt, welches Programm vom Mc gestartet wird, wenn Sie den internen Betrachter mit der Funktionstaste [F3] aufrufen. In unserer Beispiel-Konfiguration liefert Ihnen das Tool ImageMagick ein paar Informationen zur ausgewählten Datei.

Abbildung 3

Abbildung 3: Die Datei ~/.mc/bindings macht Bildbetrachtung möglich

Das letzte Beispiel enttarnt den Kern des Midnight Commander als Visual Shell, denn dem Schlüssel Open ist eine If-Verzweigung aus der Shell-Programmierung zugeordnet. Um als Anwender Hand an die Konfiguration der Datei ~/.mc/bindings zu legen, sollten Sie also etwas Basiswissen aus der Welt der Shell-Skripte mitbringen.

Bevor wir es mit der Konfiguration in ~/.mc/bindings bewenden lassen und weiter zum folgenden Abschnitt gehen, noch ein Hinweis auf die Einträge, die den Umgang mit Tar-Archiven und RPM-Paketen betreffen.

Die Datei ~/.mc/bindings ist der Ort, der es Ihnen ermöglicht, bequem durch Tarballs, ZIP-Dateien oder RPM-Pakete zu navigieren, als seien diese Dateien ein Teil Ihres Verzeichnisbaumes. Freilich können Sie auf diese Weise einzelne Dateien aus einen Tar-Archiv kopieren oder RPMs installieren. Innerhalb eines solchen RPM-Verzeichnisses, das der Dateimanager für Sie abbildet, finden Sie die Dateien INSTALL und UPDATE. Wie der Name sagt, installieren die Dateien, via Klick oder Return, das RPM auf Ihrem System oder führen ein Update durch.

Auswahl des Menüs

Es gibt eine dritte Datei, über die Sie informiert sein sollten. Doch schauen wir uns zuerst die Funktionsleiste am unteren Rand des Midnight Commander an, die Sie neben der Maus mit den Tasten [F1] bis [F10] ansprechen. Die Funktionsleiste erlaubt Ihnen flinke Systemoperationen wie das Löschen von ganzen Verzeichnissen oder das Verschieben von markierten Dateien.

Wir richten unser Augenmerk auf die zweite Option, die mit Menü gekennzeichnet ist. Diese ruft ein Fenster mit dem Titel Benutzermenü auf. Das Interface bieten Ihnen eine frei konfigurierbare Auswahl von Aktionen an, die Sie auf die ausgewählte Datei oder ein Verzeichnis anwenden können.

So kann es Dateien durch beliebige Programme leiten, vom aktuellen Verzeichnis mit tar, tar.gz oder zip ein komprimiertes Archiv erstellen oder einfach nur das Programm info aufrufen.

Gesteuert wird das Benutzermenü von den Einträgen der Datei mc.menu, die Sie ebenfalls im Bibliotheksverzeichnis des Midnight Commander vorfinden. Um für Ihre Experimente eine eigene Konfigurationsdatei zu erhalten, die die systemweiten Einstellungen überschreibt, gehen Sie im Menüpunkt Befehl in die Zeile Menüdatei bearbeiten und speichern Ihre neu erstellte ~/.mc/menu ab.

Obschon die Datei ~/.mc/menu in der Manpage dokumentiert ist, sehen wir uns hier ein Beispiel an, um die kryptische Makrosprache in den Griff zu bekommen. Öffnen Sie im Editor die Datei ~/.mc/menu und fügen Sie folgende Zeilen hinzu:

+ f \.html?$ & t r
~       Convert HTML to txt
        CONV=
        while [ -z "$CONV" ]; do
          echo -n "Name der neuen Textdatei (ohne Extension): "
          read CONV
          lynx -dump %f > $CONV.txt
          echo -n "Die Datei $CONV.txt wurde erstellt.  "
        done

Dieses Konstrukt konvertiert mit Hilfe des Text-Browsers Lynx ein HTML-Dokument in eine Textdatei.

Setzen wir uns zuerst mit der ersten Zeile + f \.html?$ & t r auseinander. Das Zeichen + bewirkt, dass der Eintrag Convert HTML to txt nur in der Auswahl des Benutzermenüs erscheint, wenn die nachfolgende Bedingung wahr ist. Das f \.html?$ & t r sagt: Die Datei muss die Bedingung des Musters .htm oder .html als Dateiendung erfüllen [f \.html?$], und es muss eine reguläre Datei [r] sein (kein Binary, Skript, Verzeichnis), die im Datei-Browser unter dem Auswahlbalken [t] liegt.

Wenn Sie tiefer in die Materie einsteigen möchten, steht eine Liste der Buchstaben f, t, r und anderer Kürzel im Kapitel Menu File Edit der Manpage für Sie parat.

Jetzt ist die zweite Zeile an der Reihe. Die Tilde ~ ist der Shortcut, mit dem Sie die Option ohne Umwege starten, und der Text Convert HTML to txt steht steht als Erläuterung im Menüfenster.

Den Rest der Anweisung teilen sich die Elemente eines Shell-Skriptes, das Sie nach dem Namen der zu erstellende Textdatei fragt. Ihre Antwort wird in der Variablen $CONV gespeichert und dem Text-Browser Lynx zur Bearbeitung vorgelegt. Nachdem Lynx die Konvertierung abgeschlossen hat, erscheint die Rückmeldung, dass Ihre Textdatei fertig ist.

Sie sehen, mit ein wenig Grundwissen ist der Midnight Commander je nach Anspruch, Geschmack oder Laune zu programmieren. Und zum Abschluss unserer kleinen Reise ins Verzeichnis ~/.mc servieren wir Ihnen eine etwas leichtere Kost.

Jetzt wird bedient.

Das auffälligste am Midnight Commander ist das Doppelfenster, das Sie durch die Menüpunkte Links und Rechts mit Inhalt füllen. Sie dürfen sich zwischen einer Listenansicht, Schnellansicht, Info und einer Darstellung als Baum entscheiden.

Die Listenansicht öffnet ein weiteres Fenster mit Einstellungen, die dem Dateimanager sagen, wie Sie die Darstellung des aktuellen Verzeichnisses wünschen.

Einen Blick in den Inhalt einer angewählten Datei bietet Ihnen die Option der Schnellansicht. Vorsicht ist jedoch geboten, wenn Sie mit der Schnellansicht im Gepäck ein Verzeichnis besuchen, in dem große Dateien liegen. Als Beispiel wäre der Pfad /var/log zu nennen. Der Midnight Commander wird versuchen, Ihnen jedes komprimierte Logfile, über das der Cursor-Balken streift, in der Schnellansicht zu präsentieren. Und das kostet Zeit und Rechenleistung.

Mit dem Punkt Info erhalten Sie vom mc eine Liste von Informationen über die Datei, den Link oder das Verzeichnis unter dem Auswahl-Cursor.

Die Baum-Ansicht bildet einen Ausschnitt der Verzeichnisstruktur ab. Mit der Tabulatortaste wechseln Sie zwischen den Fensterhälften und können auf diese Weise sehr schnell in ein neues Verzeichnis eintauchen.

Um ausgewählte Dateien oder Verzeichnisse anzuzeigen, hilft Ihnen die Option Filter weiter. In der Voreinstellung erscheint das Joker-Zeichen *, durch das Sie den gesamten Inhalt eines Verzeichnisses sehen. Verändern Sie hingegen die Eingabe auf das Muster *.html, zeigt Ihnen der Midnight Commander ausschließlich Dateien mit der Endung .html an.

Die Optionen Netzwerkverbindung, FTP-Verbindung und SMB-Verbindung verwandeln den Midnight Commander zu einem Fernwartungs-Tool. Jeder dieser Punkte stellt eine Eingabemaske zur Verfügung, die eine Angabe zum Zielrechner erwartet. Oft genügt der Rechnername, manchmal fordert der Remote-Rechner zusätzlich einen Port oder eine Nutzerkennung:

User-Name@remote.rechner.fi:12345/Verzeichnis

Eine Netzwerkverbindung kann nur zu einem Rechner aufgenommen werden, auf dem das Programm mcserv läuft. Eine FTP-Verbindung setzt einen funktionierenden FTP-Server und einem SMB-Verbindung einen funktionierenden Samba-Server voraus.

Die Menüs der Optionen Datei und Befehl zeigen sehr deutlich, was mit ihnen zu erreichen ist und machen jede Erklärung überflüssig. Vom manipulieren der Zugriffs-Bits mit der Auswahl chmod bis zum Suchen einer Datei erwarten Sie hier alle Möglichkeiten eines effizienten Dateimanagements in einem Programm gebündelt.

Zum Ende des Artikels noch eine kleiner Spickzettel: Damit Ihnen der Umgang mit Ihrem neuen Arbeitsgerät schneller von der Hand geht, haben wir die Tastenkürzel der wichtigsten Optionen in Tabelle 1 für Sie zusammengefasst.

Tabelle 1: Shortcuts

C-r Neu Einlesen
M-! Filteransicht
C-x c chmod
C-x l Link
C-x s Symlink
C-x C-s Symlink bearb.
C-x o chown
M-c Schnelles cd
M-? Datei suchen
Tab Fenster wechseln
M-Enter In Shell kopieren
M meint die Meta-Taste, die auf den meisten Systemen der Taste [Esc] entspricht. C für Control erreichen Sie durch die Taste [Strg].
Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare