claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 11/2005

Know-how für die Kommandozeile

Shell-Tipps

von Andrea Müller


Texte betrachten und eine Aktion auf viele Dateien anwenden, gelingt auf der Kommandozeile oft schneller als mit grafischen Programmen. Diesen Monat verraten wir unter anderem einige praktische Kniffe zum Dateibetrachter "less".

Tipp: Anzeige von "less" behalten

Was unter Dos der Befehl more leistet (den es übrigens auch unter Linux gibt), erledigt der Betrachter less noch bequemer. Mit dem Kommando less dateiname zeigen Sie den Inhalt einer Textdatei an. Die Tasten [Bild auf] und [Bild ab] dienen zum bequemen Hin- und Herblättern. Ein Druck auf [Q] beendet das Programm.

Wenn Sie in einer Datei eine bestimmte Stelle nachlesen und den Text später weiterverwenden möchten, ist es ziemlich unkomfortabel, dass less beim Beenden nur ein leeres Befehlsfenster zurücklässt. Viel praktischer wäre es, wenn Sie weiterhin die fragliche Textstelle in der KDE-Konsole im Blick hätten, um dort etwas nachzulesen oder einzelne Passagen zu kopieren. Dieses Verhalten erreichen Sie mit dem Aufrufparameter -X. Wenn Sie less -X dateiname aufrufen und den Betrachter mit [Q] beenden, bleibt die zuletzt betrachtete Stelle der Datei im Befehlsfenster stehen (Abbildung 1).

Abb. 1: Die Anzeige von "less" bleibt im Kommandozeilenfenster, wenn Sie das Programm mit dem Parameter "-X" starten.

Tipp: "less" automatisch beenden

Ist es Ihnen zu lästig, jedes Mal [Q] zu drücken, um less zu schließen, lässt sich das Programm mit dem Aufrufparameter -e auch dazu bewegen, sich genauso wie more automatisch zu beenden, wenn Sie das Ende einer Datei erreichen. Geben Sie dazu less -e dateiname ein und blättern Sie mit der Leertaste oder [Bild ab] durch den Text. Sobald Sie das Ende der Datei erreichen und erneut auf eine der beiden Tasten drücken, beendet sich less. Haben Sie schon in der Mitte der Datei den gesuchten Text entdeckt, können Sie das Programm trotzdem direkt mit [Q] verlassen.

Um zu verhindern, dass Sie das Ende des Textes verpassen, weil Sie zu schnell auf die Leertaste gedrückt haben, bietet es sich an, den Parameter -e in Kombination mit -X zu nutzen. Mit dem Befehl less -eX dateiname.txt haben Sie das Ende der Datei auch dann noch im Blick, wenn sich der Betrachter automatisch beendet hat.

Tipp: Mehrere Dateien in "less" öffnen

Um mehrere Textdateien zu inspizieren, müssen Sie nicht für jede einzelne less aufrufen. Sie erledigen diese Aufgabe wesentlich flinker, wenn Sie dem Programm alle Dateien in einem Rutsch auf der Kommandozeile übergeben.

less text1.txt datei2.txt dokument.txt

Daraufhin öffnet sich less mit der Datei text1.txt. Geben Sie nun :n ein; den Doppelpunkt zeigt der Betrachter in der Statuszeile am unteren Fensterrand an. Sobald Sie das n (für next=nächste) eingeben, springt er zu datei2.txt. In der Statuszeile zeigt der Betrachter, um welche Datei es sich handelt(Abbildung 2).

Abb. 2: Wenn Sie mehrere Dateien mit "less" öffnen, navigieren Sie mit ":n" zur jeweils nächsten.

Möchten Sie später noch einmal zu einer bereits gelesenen Datei zurückkehren, erreichen Sie das mit der Eingabe von :p (für previous=vorige). Als besonderes Goodie merkt sich less dabei sogar die Position im Text, an der Sie den Befehl eingeben. Wechseln Sie nachher erneut zu dieser Datei, zeigt less nicht deren Anfang, sondern die Position an, die Sie zuvor gelesen haben. Haben Sie das Ende einer Datei erreicht, sehen Sie in der Statuszeile des Betrachters, welche Datei als nächstes kommt. less öffnet das nächste Dokument jedoch nicht automatisch. Das erreichen Sie, indem Sie less mit dem Parameter -e starten. Wenn Sie dann am Ende einer Datei die Leertaste drücken, öffnet less automatisch die nächste.

Tipp: Zeilennummern in "less"

Wenn ein Programm sich über einen Fehler in seiner Konfigurationsdatei beschwert oder ein selbst geschriebenes Skript einen Fehler meldet, finden Sie in der Ausgabe meistens eine Zeilennummer. Mit less werfen Sie schnell einen Blick in die jeweilige Datei, doch bei der Zeilennummer müssen Sie raten. Der Betrachter zeigt in der Statuszeile nur an, welchen Bereich eines Textes er gerade anzeigt.

Geht es Ihnen darum, schnell eine bestimmte Zeile zu finden, starten Sie less mit dem Aufrufparameter -N.

less -N konfigurationsdatei

veranlasst das Programm, jeder Zeile die Zeilennummer voranzustellen. Das hilft Ihnen bei der Suche nach Fehlern und oft auch dabei, sie zu beheben.

Tipp: Mit "grep" nach Dateiinhalten suchen

Textdateien eignen sich gut für Notizen und auch wichtige Mails speichert man manchmal einzeln weg. Im Laufe der Zeit sammeln sich so viele Textdateien an, von denen leider nicht alle aussagekräftige Dateinamen haben. Wer weiß schon nach Monaten noch, was ein Name wie do_huf.txt bedeutet? Stehen dort die Handy und Festnetznummer von Dirk Orndorf oder doch vielleicht eine Liste aller Dortmunder Hufschmiede?

Wenn Sie sich zumindest noch an einen Teil des gesuchten Textes erinnern und keine Lust haben, alle Dateien der Reihe nach zu öffnen, greifen Sie zu grep [1]. Das Tool durchsucht eine oder mehrere Dateien nach einer bestimmten Zeichenkette. Um beispielsweise alle Textdateien eines Ordners zu finden, in denen Dirk vorkommt, lautet der Befehl

grep Dirk *.txt

grep gibt daraufhin jede Fundstelle des Wortes Dirk in allen Dateien, die auf .txt enden aus und stellt den Namen der Datei davor. Das Sternchen ist ein Platzhalter oder eine so genannte Wildcard und steht für beliebig viele andere Zeichen.

Das Tool unterscheidet in der Standardeinstellung zwischen Groß- und Kleinschreibung. Um auch Dateien zu finden, die dirk oder DirK enthalten, starten Sie grep mit dem Parameter -i.

Tipp: Mehrere Zeilen mit "grep" ausgeben

Speichern Sie Adressen in Textdateien und suchen mit grep suchbegriff *.txt nach einem bestimmten Namen, finden Sie zwar schnell die Datei, die die gewünschten Informationen enthält, doch meistens müssen Sie diese noch mit einem Betrachter wie less öffnen. grep zeigt nämlich nur die Zeile an, in der das gesuchte Wort vorkommt. Möchten Sie auch den Text in den folgenden Zeilen sehen, geben Sie

grep -A x suchbegriff *.txt

ein. Anstelle des x setzen Sie eine Zahl ein, also beispielsweise 2, wenn grep die Zeile mit dem Suchbegriff und die zwei folgenden anzeigen soll (Abbildung 3).

Abb. 3: Mit dem Aufrufparameter "-A" gefolgt von einer Zahl legen Sie fest, wie viele Zeilen hinter der Fundstelle "grep" anzeigt.

Um die Zeilen vor der Fundstelle einzublenden, verwenden Sie den Parameter -B gefolgt von der gewünschten Zahl. Die Optionen -A und -B lassen sich auch kombinieren: So zeigt

grep -B 2 A 3 suchbegriff *.txt

alle Treffer der Suche und zusätzlich zwei Zeilen vor und drei Zeilen nach der Fundstelle an. Etwas kürzer wird der Befehl, wenn Sie vor und nach der Fundstelle gleich viele Zeilen einblenden wollen: Um etwa einen Treffer der Suche zwischen den zwei vorhergehenden und folgenden Zeilen anzuzeigen, rufen Sie grep -C 2 suchbegriff *.txt auf.

Tipp: Ausgabe der Fundstellen unterdrücken

Mit grep nach Textstellen zu suchen ist zwar praktisch, doch manchmal reicht selbst die Ausgabe der Fundstelle im Kontext nicht aus, um die gewünschte Information zu erhalten, etwa weil Sie mehrere Absätze lesen müssen. Wissen Sie schon vorher, dass Sie die Datei doch in einem Betrachter oder Text-Editor öffnen müssen, macht die Anzeige der Fundstelle die Ausgabe von grep oft sogar unübersichtlich. Etwa weil ein Begriff sehr oft in einer Datei vorkommt. Mit der Option -l unterdrücken Sie die Ausgabe der Zeile, in der sich der gesuchte Text befindet. grep zeigt dann nur die Namen der Dateien an, die den Suchbegriff enthalten.

Tipp: Dateien ohne einen Suchbegriff finden

Möchten Sie nur wissen, welche Dateien einen bestimmten Begriff nicht enthalten, ist auch dafür grep das Mittel der Wahl: Das Kommando grep -L suchbegriff *.txt gibt die Namen aller Textdateien im aktuellen Verzeichnis aus, in denen suchbegriff nicht vorkommt.

Tipp: Midnight-Commander-Menüs ohne Maus

Wer gerne mit dem Datei-Manager Midnight Commander arbeitet (Sie starten das Programm mit der Eingabe von mc), tut das vielleicht, weil es oft schneller geht, ein Programm mit einmal gelernten Tastenkombinationen als mit der Maus zu bedienen. Auch für die Navigation in den Menüs benötigen Sie keinen Schreibtischnager: Ein Druck auf [F9] klappt das Menü für die linke Fensterhälfte aus. Mit [Pfeil nach unten] und [Pfeil nach oben] wechseln Sie zwischen den Einträgen hin und her. Über [Pfeil nach rechts] und [Pfeil nach links] navigieren Sie zu einem anderen Eintrag in der Menüleiste, beispielsweise zu Datei oder Optionen. Den gewünschten Menüpunkt wählen Sie mit einem Druck auf [Eingabe] aus. Überlegen Sie es sich anders, schließen Sie das Menü mit [Esc]. (amü)

Infos
[1] grep-Artikel: Elisabeth Bauer, "Text fischen", EasyLinux 10/2003, S. 74 f., http://www.easylinux.de/2003/10/074-grep/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-04-05 11:10

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]