Know-how für die Kommandozeile

Aus EasyLinux 01/2011

Know-how für die Kommandozeile

Shell-Tipps

Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sich manche Aufgabe schneller bewältigen lässt als in grafischen Programmen. Wir stellen die wichtigsten Anwendungen vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.

Tipp: Dateisystemtypen mit “df” anzeigen

Das Tool df gibt Auskunft über die Auslastung des Dateisystems und zeigt Informationen zum Festplattenplatz auf der Kommandozeile an. Tippen Sie einfach nur df, sehen Sie eine kleine Tabelle im Terminalfenster. Die erste Spalte zeigt den Namen der Gerätedatei, die zweite die Anzahl der 1-KByte-Blöcke, die auf der Partition vorhanden sind. Danach verrät das Tool, wie viele Blöcke belegt und frei sind. Die Angabe in Prozent dahinter gestaltet das Ganze etwas übersichtlicher. Die ganz rechte Spalte zeigt den Einhängepunkt (Mount Point) an.

Wer sich dafür interessiert, mit welchem Dateisystem die jeweiligen Partitionen formatiert sind, kann zusätzlich die Option -T beim Aufruf übergeben und findet die neue Spalte Typ dann fein säuberlich links zwischen Dateisystem und 1K-Blöcke einsortiert (Abbildung 1).

Abbildung 1: "df" zeigt auf Wunsch auch das Dateisystem der Partitionen an.

Abbildung 1: “df” zeigt auf Wunsch auch das Dateisystem der Partitionen an.

Tipp: Mutt: Schnell zur Standardmailbox wechseln

In der Voreinstellung öffnet der Mailclient Mutt die Standardmailbox. Bei den meisten Nutzern ist das /var/mail/benutzername. Damit nicht alles immer in der Inbox liegt, sortieren die meisten Benutzer ihre Post in weitere Mailboxen. Diese erreichen Sie über die Taste [C], gefolgt vom Namen des Folders. Drücken Sie [C] und danach zweimal [Tab], zeigt Mutt eine Liste der verfügbaren Mailboxen an. Der Mailclient für die Konsole bringt darüber hinaus eine praktische Abkürzung mit, um von einem Folder schnell zurück zur Inbox zu wechseln: Drücken Sie [C], geben Sie ! ein und bestätigen Sie mit [Eingabe].

Tipp: Mutt: Besser sortieren mit Tagging

Wer viele Mails bekommt und nicht mit Procmail oder anderen Filterprogrammen vorsortiert, muss die Inbox eben von Hand aufräumen: mit den Pfeiltasten zur Nachricht navigieren, [S] (für “save”) drücken, Namen der Mailbox angeben, mit [Eingabe] bestätigen. Das geht schneller und effizienter! Mit der Taste [T] “taggen” (markieren) Sie Nachrichten in der Indexansicht. Dass eine Mail ausgewählt ist, erkennen Sie am Sternchen vor der Nachricht (Abbildung 2). Welche Aktion auch immer Sie als Nächstes ausführen (speichern, löschen, verschieben) – Mutt wendet sie auf alle getaggten Nachrichten an.

Abbildung 2: Drücken Sie in der Indexansicht die Taste <code srcset=

T, um eine Nachricht zu taggen.” width=”300″ height=”223″ /> Abbildung 2: Drücken Sie in der Indexansicht die Taste T, um eine Nachricht zu taggen.

Tipp: Mutt: Geschicktes Tagging mit Mustern

Wer nicht alle Mails von Hand markieren möchte, wie im vorigen Tipp gezeigt, kann die Tastenkombination [Umschalt]+[T] zu Hilfe nehmen. Die untere Statuszeile des Mailclients zeigt danach an:

Markiere Nachrichten nach Muster:

Jetzt geben Sie ein Muster ein und schicken es mit [Eingabe] ab. Wenn Sie sich hier beispielsweise für ~A entscheiden, markiert Mutt alle Nachrichten, ~N nur neue Mails, ~O nur alte (old), ~R gelesene (read) und ~Q beantwortete. Außerdem ist es möglich, nach Textschnipseln zu suchen und dementsprechend zu markieren. Verwenden Sie als Muster ~b oder ~B und danach ein Suchwort, durchforstet Mutt den Body der Mails oder Body und Header nach dem Ausdruck.

Die Suchmuster kommen nicht nur beim Tagging zum Einsatz, Sie können sie auch für die integrierte Suchfunktion (/ für vorwärts, [Esc] und / für rückwärts) verwenden. Sämtliche Muster, die Mutt versteht, finden Sie im Handbuch des Mailclients. Bei den meisten Distributionen liegt dieses als HTML-Dokument im Verzeichnis /usr/share/doc/mutt. Kapitel 4, “Advanced Usage”, listet im Unterkapitel “Patterns: Searching, Limiting and Tagging” die bekannten Ausdrücke auf. Wer mit der englischen Anleitung nicht gut zurechtkommt, findet unter [1] eine deutsche Übersetzung.

Übrigens: Die Markierungen werden Sie mit [Strg]+[T] wieder los. Geben Sie einfach dasselbe Muster ein wie beim Taggen und drücken Sie [Eingabe], und der Mailclient hebt die gesetzten Tags wieder auf. Die Tags verschwinden ebenfalls, wenn Sie die Mailbox wechseln. Daher sollten Sie im Anschluss ans Markieren immer auch die entsprechende Aktion ausführen, weil Mutt sonst die Tags “vergisst”.

Tipp: Geschickt kombiniert: “vim” und “diff”

Wussten Sie, dass Vim aus der Standardeingabe liest? Und wussten Sie, dass der beliebte Editor für die Konsole in seinen Syntaxhervorhebungen auch einen Modus für die Ausgaben von diff[2] hat? Beides können Sie sich zunutze machen und miteinander kombinieren. Tippen Sie etwa den folgenden Befehl:

diff datei1 datei2 | vim -

Das Programm diff vergleicht die beiden Textdateien und schreibt jetzt das Ergebnis nicht auf die Standardausgabe, sondern leitet es über das Pipezeichen (|) an den Textditor weiter, dem Sie über das Zeichen - mitteilen, dass er von der Standardeingabe lesen soll (anstatt eine Datei zu öffnen). Die diff-Ausgabe erscheint also – farblich hervorgehoben – im Editor. Um Vim zu beenden, ohne die diff-Ausgabe zu speichern, drücken Sie [Esc] und geben dann :q! ein.

Tipp: Vim: Fröhliche Tauschaktionen

Im Befehlsmodus stehen im Texteditor zahlreiche Kommandos zur Verfügung, die Ihnen das Leben erleichtern. Viele von diesen können Sie darüber hinaus prima miteinander kombinieren. Drücken Sie im Befehlsmodus z. B. zweimal hintereinander die Taste [D], löschen Sie die Zeile, in der sich der Cursor befindet. Auch das [X] löscht – allerdings das Zeichen unter dem Cursor.

So gelöschte Zeichen oder Zeilen sind aber nicht ganz weg, sondern im Zwischenpuffer. Dessen Inhalt fügen Sie (ebenfalls im Befehlsmodus) mit der Taste [P] ein. Kombinieren Sie das Doppel-[D] oder das [X] mit dem [P], ergeben sich folgende interessante Features: [D],[D],[P] vertauscht die aktuelle Zeile mit der nachfolgenden, und [X],[P] vertauscht das Zeichen mit dem rechten Nachbarn.

Sie können auch zwei Wörter vertauschen. Hier kommt wieder [D] zum Einsatz, diesmal kombiniert mit der Taste [E], die vorwärts zum Ende eines Wortes springt. Drücken Sie hintereinander [D],[E],[E] und [P], löscht Vim bis zum Ende des ersten Wortes, springt dann ans Ende des zweiten und fügt den Inhalt des Zwischenpuffers ein. Achten Sie darauf, dass sich der Cursor bei diesem Shortcut auf dem Leerzeichen vor dem ersten Tauschkandidaten befindet, damit die Leerzeichen nach dem Tausch auch wieder passen.

Tipp: Mit Lynx im Dateisystem browsen

Lynx ist nicht nur ein flinker Webbrowser für die Konsole, Sie können mit dem Tool auch in lokalen Dateisystemen surfen. Dazu geben Sie beim Aufruf einfach das gewünschte Verzeichnis an, zum Beispiel:

lynx /usr/share/doc

Anschließend bewegen Sie sich im Textbrowser wie gewohnt. Mit [Pfeil auf] und [Pfeil ab] blättern Sie vorwärts und rückwärts durch die Links (in diesem Fall lokale Verzeichnisse), [Pfeil rechts] oder [Eingabe] wechselt in einen Ordner hinein, und mit [Pfeil links] gehen Sie zur vorigen Seite zurück. Die untere Zeile blendet eine Kurzübersicht über die wichtigsten Kommandos ein, und [K] zeigt eine komplette Liste aller verfügbaren Kommandos.

Tipp: Lynx: Downloadmöglichkeiten des Textbrowsers

Lynx bringt einige Parameter mit, mit denen Sie schnell und unkompliziert Daten aus dem Internet herunterladen. Der Befehl

lynx -dump http://www.easylinux.de/ > easy.txt

wandelt die EasyLinux-Startseite in gut lesbaren Text um (-dump) und speichert diesen über den Umleitungsoperator > in der Datei easy.txt. Interessieren Sie sich hingegen für den Quelltext der Webseite, können Sie auch diesen auf die eigene Platte bringen. Verwenden Sie dazu die Option -source und zur besseren Formatierung zusätzlich -preparsed:

lynx -source -preparsed http://www.easylinux.de/ > easy.html

Tipp: Wanderung der Datenpakete mit “traceoute” ermitteln

Kommandos wie ping sagen etwas über die Erreichbarkeit von Servern aus. Auf diese Weise erfahren Sie aber nicht, welchen Weg die Pakete durchs Netz wandern. Das Kommando traceoute verrät Ihnen, welche Zwischenstationen die Pakete auf dem Weg zum Ziel passieren. Sie rufen das Tool mit einer IP-Adresse oder einem Hostnamen als Argument auf (Abbildung 3).

Abbildung 3: Das Programm "traceroute" ermittelt, über welche IP-Router die Datenpakete bis zum Zielhost wandern.

Abbildung 3: Das Programm “traceroute” ermittelt, über welche IP-Router die Datenpakete bis zum Zielhost wandern.

Genau wie ping schickt traceroute Testpakete auf die Reise. Diese haben jeweils ein unterschiedliches Haltbarkeitsdatum, die so genannte “Time To Live” (TTL). Kommt ein “abgelaufenes” Paket bei einem Rechner an, schickt dieser eine Fehlermeldung an den Ursprungsrechner und wirft das Paket dann weg. Sollte das Paket allerdings noch gültig sein, verringert der Rechner die TTL um 1 und reicht es weiter an die nächste Station. Aus diesen Fehlermeldungen ermittelt traceroute letztendlich den Weg: Das Programm erhöht in jedem Schritt die Haltbarkeit, so dass die Pakete immer eine Station weiter wandern. Ein Datenpaket mit TTL 2 erreicht also den zweiten Zwischenrechner, TTL 3 die dritte Station und so weiter. Pro Rechner wiederholt traceroute den Vorgang dreimal und wartet drei Sekunden auf eine Antwort. Die drei angezeigten Werte in Millisekunden sind die Antwortzeiten der drei Versuche.

Es kann passieren, dass Sie bei zwei Aufrufen unterschiedliche Zwischenstationen sehen, denn Internetpakete gehen nicht immer denselben Weg. Außerdem beeinflussen Firewalls, Network Address Translation (NAT), IP-Tunnel oder andere Komponenten die Arbeit. Mitunter tauchen in der Programmausgabe Zeilen mit Sternchen auf:

 8  * * *
 9  * * *
...

Wahrscheinlich blockiert hier eine Firewall eine Zwischenstation; es ist aber auch möglich, dass Päckchen einfach so verlorengehen, etwa weil das Netz überlastet ist.

Tipp: Herausfinden, wer eingeloggt ist

Ist Ihr Linux-Rechner ein Mehrbenutzersystem und haben Sie weitere Accounts für Freunde und Familie angelegt? Läuft darüber hinaus ein SSH-Server, über den diese Nutzer sich anmelden können, interessiert es Sie vielleicht, wer gerade eingeloggt ist. Zwei Kommandos geben schnell Auskunft darüber: w und who. Beide liefern unterschiedlich viele Informationen, wie Listing 1 zeigt.

Listing 1

w und who

$ w
 15:18:48 up 5 days, 16:47,  7 users,  load average: 0,00, 0,01, 0,00 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
heike    tty2                      15:18    6.00s  1.18s  1.02s -bash
squeeze  tty7     :0               Wed22    5days  5:28   0.95s x-session-manag
squeeze  pts/8    :0.0             Mon09    2:40m  3:14   1.60s bash
squeeze  pts/10   192.168.2.2      10:51    0.00s  1.76s  0.02s w
$ who
heike    tty2         2010-11-23 15:18
squeeze  tty7         2010-11-17 22:34 (:0)
squeeze  pts/8        2010-11-22 09:59 (:0.0)
squeeze  pts/10       2010-11-23 10:51 (192.168.2.2)
 @KE:

Wie Sie sehen, zeigt sich w deutlich auskunftsfreudiger und verrät neben dem Benutzernamen auch, von wo sich ein Benutzer eingeloggt hat, wie lange derjenige schon untätig ist (IDLE) und welches Programm er gerade ausführt (WHAT). Aufschlussreich ist auch das Feld FROM, das die Nummer des Terminals oder der virtuellen Konsole anzeigt. Die erste Konsole (zu erreichen über [Strg]+[Alt]+[F1]) heißt beispielsweise /dev/tty1, ein Terminalprogramm (wie die KDE-Konsole oder das Gnome-Terminal) kann /dev/pts/8 o. Ä. sein.

Die who-Ausgabe beschränkt sich in der Voreinstellung auf den Accountnamen, das Terminal, das Datum, die Uhrzeit der Anmeldung und die IP-Adresse. Über Aufrufparameter weisen Sie das Tool an, mehr Informationen preiszugeben, zum Beispiel eine Kopfzeile (-H), aktive Prozesse (-p) oder die Anzahl der angemeldeten Benutzer (-q). Die Option -a kombiniert verschiedene andere Parameter und schreibt einen ganzen Schwung von Auskünften ins Terminal.

Tipp: Wer war zuletzt da?

Linux speichert Informationen zu den Anmeldungen (siehe voriger Tipp) intern in der Protokolldatei /var/log/wtmp. Diese können Sie nicht mit less, more oder einem Texteditor betrachten, da es sich um eine Binärdatei handelt. Zum Auslesen steht dafür das Programm last zur Verfügung. Rufen Sie dieses ohne weitere Parameter auf, erhalten Sie die komplette Liste (siehe Listing 2, obere Hälfte). Sie können die Ausgabe auch einschränken. So schreibt etwa last -n 3 nur die letzten drei Einträge ins Fenster. Interessieren Sie sich nur für einen bestimmten Account? Dann geben Sie einfach den Benutzernamen hinter dem Kommando an (Listing 2, untere Hälfte).

Listing 2

last

$ last
heike    tty2                 Tue Nov 23 15:18 - 15:34  (00:15)
squeeze  pts/10  192.168.2.2  Tue Nov 23 10:51   still logged in
root     tty1                 Wed Nov 17 22:15 - down   (00:11)
...
$ last huhn
huhn   pts/0    cable-78-34-51-1 Mon Nov 22 16:57   still logged in
huhn   pts/7    cable-78-34-51-1 Mon Nov 22 11:39 - 11:40  (00:01)
huhn   pts/1    p50911da4.dip.t- Tue Nov 16 09:53 - 13:02  (03:09)

Auf den meisten Distributionen sorgt das Programm logrotate dafür, dass die Protokolldateien unterhalb von /var/log/ nicht ins Uferlose wachsen. Das praktische Tool archiviert die Logs regelmäßig und verhindert so ein Überlaufen der Partition. Räumt logrotate auch bei Ihnen auf und speichert die Logininformationen des letzten Monats in der Datei /var/log/wtmp.1, können Sie auch hier nachschauen, wer sich am Rechner angemeldet hat. Dazu geben Sie mittels -f das alternative Logfile an (last -f /var/log/wtmp.1).

Glossar

Body

Der Body (deutsch: Körper) einer E-Mail enthält die eigentliche Nachricht, ohne den Header.

Header

Im Header einer E-Mail stehen Angaben zu Sender und Empfänger, der Betreff, Datum und Uhrzeit sowie Routing-Informationen, also die Namen oder IP-Adressen der Rechner, welche die Nachricht weitergeleitet haben.

Infos

[1] Deutsche Übersetzung des Mutt-Handbuchs: ftp://ftp.mutt.org/mutt/doc/de/

[2] Guru-Training zu diff: Heike Jurzik, “Der feine Unterschied”, EasyLinux 10/2004, S. 83 ff., http://www.easylinux.de/2004/10/083-guru-diff/

EasyLinux 01/2011 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben