Know-how für die Kommandozeile

Aus EasyLinux 03/2012

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: Mutt: Besser in den Mails navigieren

Im Konsolen-Mailclient mutt verwenden Sie die Tastatur, um durch Ihre elektronische Post zu navigieren. Mit [Tab] springen Sie zur nächsten ungelesenen Nachricht, mit der Kombination [Esc],[Tab] zur vorigen ungelesenen Mail. Die erste Mail im Index erreichen Sie über [Umschalt]+[0], also “=”, und den letzten Eintrag über [Umschalt]+[+], also “*”. Mit den Pfeil- und den Bildlauftasten blättern Sie zeilen- und seitenweise.

Zusätzlich bringt Mutt eine praktische Abkürzung mit, um ganz gezielt zu einer Mail zu springen: Wollen Sie beispielsweise im Index zum Eintrag mit der Nummer 23 springen, tippen Sie einfach die Zahl. Am unteren Rand erscheint die Meldung: Springe zu Nachricht: 23. Drücken Sie dann die Eingabetaste, und schon sind Sie da. Alternativ können Sie auch mit [Rückschritt] die 23 wieder löschen und eine andere Zahl eingeben.

Tipp: Informative Statuszeile für “screen”

Im Guru-Training der letzten Ausgabe [1] haben wir den Terminalmanager screen vorgestellt, mit dem Sie Terminals im Terminal starten und mehrere Shell-Sitzungen in einem einzigen Fenster verwalten. Der Artikel erwähnt auch die Statuszeile am unteren Fensterrand, die Sie temporär über [Strg]+[A],[W] einblenden. Um die informative Zeile dauerhaft auf den Schirm zu holen, geben Sie im laufenden screen das folgende Kommando ein:

screen -X caption always

Gefällt Ihnen die Bildunterschrift so gut, dass Sie diese nicht jedes Mal von Hand aktivieren, sondern schon beim Start des Terminalmanagers einblenden wollen, schreiben Sie die Option caption always in die Konfigurationsdatei ~/.screenrc. Diese bearbeiten Sie mit einem Texteditor Ihrer Wahl, und der Eintrag gehört in eine eigene Zeile.

Tipp: Statuszeile für “screen” formatieren

Mit so genannten Escape-Sequenzen blenden Sie viele weitere Informationen hübsch formatiert und sogar in Farbe in der Statuszeile ein. Dazu setzen Sie hinter caption always in doppelte Anführungszeichen eingeschlossen die Inhaltsbeschreibung, z. B. wie folgt:

caption always "%{rw} * %H * | $LOGNAME | %{bw}%c %D | %{-}%-Lw%{rw}%50>%{rY}%n%f* %{-}%+Lw%<"

In geschweiften Klammern stehen jeweils die Farben für den Ausdruck. So steht z. B. %{rw} für rote Schrift auf grauem Hintergrund; %{bw} bedeutet Blau auf Grau und %{rY} Rot auf Gelb. Die Anweisung %{-} schaltet auf ein vorhergehendes Farbschema um. Die anderen Steuerzeichen stehen für den Benutzernamen ($LOGNAME), für den Hostnamen des Rechners (%H), für die Uhrzeit im 24-Stunden-Format (%c), für den Wochentag (%D), für die Nummer des virtuellen Terminals (%n) und für das Statusflag (%f). Dieses zeigt ein Sternchen für das aktive virtuelle Terminal an, und die zuletzt besuchte Sitzung hat ein Minuszeichen.

Der Ausdruck %50> sorgt übrigens dafür, dass screen bei einer zu langen Fensterliste die Ausgabe so abschneidet, dass der folgende Bereich etwa in der Mitte der Zeile zu sehen ist. Abbildung 1 zeigt die eingefärbte und formatierte Statuszeile. Wenn Sie selbst mit diesen Escape-Sequenzen experimentieren möchten, werfen Sie doch einmal einen Blick in die screen-Manpage. Im Abschnitt STRING ESCAPES finden Sie etliche weitere Steuerzeichen mitsamt einer kurzen Erklärung.

Abbildung 1: Mit ein paar Handgriffen formatieren Sie die Statuszeile von "screen" so, dass sie den Rechner- und Benutzernamen, die aktuelle Uhrzeit und das Datum sowie farblich hervorgehobene virtuelle Terminals anzeigt.

Abbildung 1: Mit ein paar Handgriffen formatieren Sie die Statuszeile von “screen” so, dass sie den Rechner- und Benutzernamen, die aktuelle Uhrzeit und das Datum sowie farblich hervorgehobene virtuelle Terminals anzeigt.

Tipp: Vim: Dateien mit Schreibschutz versehen

Mit dem Konsoleneditor vim öffnen Sie Dateien bei Bedarf im reinen Ansichtsmodus. Geben Sie dazu beim Aufruf den Parameter -R an:

vim -R artikel.txt

Dass der Schreibschutz aktiviert ist, erkennen Sie an der Statuszeile am unteren Rand. Hier steht – je nach Spracheinstellung des Systems – der Hinweis [Nur Lesen] bzw. [readonly]. Verändern Sie absichtlich oder unabsichtlich eine auf diese Weise geöffnete Datei, blendet der Vim eine entsprechende Warnung ein (W10: Warnung: Ändern einer schreibgeschützten Datei oder W10: Warning: Changing a readonly file). Auch der Versuch, solche Änderungen über :w zu speichern, führt ins Leere. Der Editor weigert sich mit dem Hinweis E45: Die Option ‘readonly’ ist gesetzt (erzwinge mit !) bzw. E45: ‘readonly’ option is set (add ! to override). Sind Sie sich sicher, dass Sie die Änderungen wirklich übernehmen wollen, obwohl Sie vorher die Datei mit Schreibschutz geöffnet haben, führt also das Ausrufezeichen zum Ziel: Mit :w! erzwingen Sie das Speichern.

Tipp: Vim: Bessere Orientierung in den Textdateien

In welcher Zeile befindet sich der Cursor? In welcher Spalte ist er? Wie viel Prozent des Dokuments habe ich schon gelesen? Antworten auf diese Fragen gibt die Vim-Option ruler (Abkürzung ru). Um die Positionsangaben für die Statusleiste zu aktivieren, wechseln Sie mit [Esc] in den Befehlsmodus. Anschließend geben Sie :set ru ein – am unteren, rechten Fensterrand erscheinen dann die Informationen. Das erste Zahlenpaar gibt dabei die Zeilen- und Spaltennummern an. So heißt 48,5 z. B., dass der Cursor in Zeile 48 steht und zwar auf dem fünften Zeichen von links. Am ganz rechten Rand der Statuszeile sehen Sie eine Prozentangabe, die ebenfalls bei der Orientierung in langen Dateien hilft.

Um das Vim-Lineal wieder loszuwerden, stellen Sie der Option ein no voran: :set noru blendet die Positionsangaben wieder aus. Wenn Sie dauerhaft mit dem Ruler arbeiten möchten, können Sie die Anweisung set ru auch in die Konfigurationsdatei des Editors eintragen. Bearbeiten Sie dazu die versteckte Datei .vimrc in Ihrem Home-Verzeichnis und tragen Sie den Befehl ohne den Doppelpunkt in eine eigene Zeile ein.

Tipp: Manpages auf dem Android-Handy lesen

Alle, die gerne in Manpages stöbern und lesen, können das nun auch unterwegs und offline erledigen (Abbildung 2). Die Android-App Linux/Unix Manpages [2] lädt eine große Sammlung der praktischen Handbuchseiten auf das Handy, so dass Sie immer und überall auf dem Laufenden sind. Direkt nach der Installation möchte die App die Datenbank aktualisieren – dazu sollte eine Internetverbindung bestehen. Nach dem Download geht’s auch offline weiter. Über die Suchmaske fahnden Sie gezielt nach einer bestimmten Manpage, über einen Fingertipp zeigen Sie die Fundstelle an.

Das Menü am unteren Rand bietet Funktionen, um Lesezeichen zu erstellen und zu löschen, um eine Seite per Mail zu verschicken und um einen Bugreport an die Macher (ebenfalls per Mail) abzusetzen. Öffnen Sie auf der Startseite das Menü, zeigen Sie Ihre Favoriten oder gleich alle Manpages an (Show All), kontaktieren die Entwickler und aktualisieren die Datenbank von Hand.

Abbildung 2: Die Android-App Linux/Unix Manpages bringt die Handbuchseiten der Shell-Kommandos aufs Handy. Eine Suchfunktion und die Möglichkeit, eigene Favoriten zu markieren, sind dabei.

Abbildung 2: Die Android-App Linux/Unix Manpages bringt die Handbuchseiten der Shell-Kommandos aufs Handy. Eine Suchfunktion und die Möglichkeit, eigene Favoriten zu markieren, sind dabei.

Tipp: Netzwerkverbindungen mit “lsof” anzeigen

Das Programm lsof (“list open files”) verrät, welche Prozesse auf bestimmte Dateien zugreifen. Das Tool informiert auf der Shell unter anderem darüber, welche Dateien und Bibliotheken laufende Programme gerade verwenden, welche Dateien geöffnet sind, welche Verbindungen über einen bestimmten Port gehen und auch, welcher Prozess gerade auf ein CD-/DVD-Laufwerk zugreift. Um alle Internetverbindungen und die zugreifenden Programme anzuzeigen, verwenden Sie den Parameter -i (siehe Listing “lsof”-Ausgabe, erster Befehlsaufruf).

Als ersten Eintrag sehen Sie das Programm (im Listing einmal der IRC-Client irssi und einmal eine SSH-Verbindung), es folgt die Prozessnummer (6192 und 7403) und der Benutzername (huhn). Dahinter stehen der File Descriptor (3u) und der Verbindungstyp (IPv4). Interessant wird es dann wieder im Bereich NODE, wo in diesem Fall das verwendete Internetprotokoll steht (TCP). In der letzten Spalte NAME sehen Sie den lokalen Hostnamen (mail.huhnix.org), gefolgt von der Portnummer hinter dem Doppelpunkt (38510) und einem Richtungspfeil (->). Als Letztes erscheint der Name des entfernten Systems (mail.linux-new-media.de), gefolgt von einem Doppelpunkt und der Portnummer auf dem Zielrechner. Wenn es sich um einen bekannten Port handelt, der in der Datei /etc/services definiert ist, ersetzt lsof die Portnummer durch den Namen des zugehörigen Internetprotokolls, im Beispiel ssh statt 22 und ircd statt 6667.

Wenn Sie wie in diesem Beispiel lsof als normaler Benutzer verwenden, sehen Sie nur eigene Prozesse bzw. Verbindungen. Stellen Sie dem Befehl ein sudo voran, um als Administrator zu arbeiten, tauchen alle Internetverbindungen des Systems auf. Dazu gehören dann z. B. auch die CUPS-Verbindungen, der Ubuntu-One-Dienst und Verbindungen eines Webbrowsers (siehe Listing “lsof”-Ausgabe, zweiter Befehlsaufruf).

“lsof”-Ausgabe

$ lsof -i
COMMAND    PID USER     FD   TYPE  DEVICE SIZE/OFF NODE NAME
irssi     6192 huhn      3u  IPv4 6291337      0t0  TCP mail.huhnix.org:34743->adams.freenode.NET:ircd (ESTABLISHED)
...
ssh       7403 huhn      3u  IPv4   21698      0t0  TCP mail.huhnix.org:38510->mail.linux-new-media.de:ssh (ESTABLISHED)
$ sudo lsof -i
COMMAND    PID USER    FD    TYPE  DEVICE SIZE/OFF NODE NAME
...
cupsd     1059   root    9u  IPv6  105015      0t0  TCP zwerg:ipp (LISTEN)
chrome    1702 gnome3  112u  IPv4   95514      0t0  TCP zwerg.local:39975->fa-in-f125.1e100.net:xmpp-client (ESTABLISHED)
ubuntuone 1929 gnome3   26u  IPv4   95516      0t0  TCP zwerg.local:57367->grape.canonical.com:https (ESTABLISHED)
...
sshd      5739 gnome3    3u  IPv4  119848      0t0  TCP zwerg.local:ssh->lion.local:51014 (ESTABLISHED)

Tipp: “lsof”: Verbindungen für bestimmte Ports anzeigen

Interessieren Sie sich in der Auflistung der Netzwerkverbindungen nur für das SSH-Protokoll, können Sie zum Beispiel die lsof-Ausgabe mit grep nach der Zeichenkette ssh durchsuchen:

sudo lsof -i | grep ssh

Alternativ definieren Sie hinter dem Parameter -i einfach den Port:

sudo lsof -i :22

Anstelle der Zahl 22 können Sie dem lsof-Befehl hinter dem Doppelpunkt auch den Protokollnamen übergeben. So führen sudo lsof -i :443 und sudo lsof -i :https zum gleichen Ergebnis; für die Zuordnung verwendet lsof wieder die bereits erwähnte Datei /etc/services.

Zu guter Letzt sind auch Kombinationen mehrerer Port- und Protokollnamen erlaubt. Dazu listen Sie hinter dem Doppelpunkt die Dienste und Ports auf und können dabei auch Zahlen und Protokollnamen mischen:

sudo lsof -i :22,443,ipp

Als Ergebnis sehen Sie die SSH-, HTTPS- und IPP-Verbindungen (CUPS).

Tipp: Ostereier suchen im Vim

Zugegeben – einen wirklichen Nutzen hat dieser Shell-Tipp nicht zu bieten, dafür hat er aber hoffentlich Unterhaltungswert. Im Editor Vim sind einige lustige Easter Eggs versteckt, also undokumentierte Gags. Fast alle in diesem Tipp erwähnten Eier finden Sie in den Hilfeseiten, die Sie für gewöhnlich mit dem Befehl :help öffnen. Ganz Ungeduldige geben :help! ein und sehen in der Statuszeile die Meldung:

E478: Don't panic!
E478: Nur keine Panik!

Wer schon immer die Antwort auf die Frage “nach dem Leben, dem Universum und dem ganzen Rest” (“life, the universe and everything”, [3]) wissen wollte, der kann dazu einfach den Texteditor befragen. Geben Sie im Befehlsmodus :help 42 ein, zeigt der Vim eine gute Erklärung dazu an. Auch bei der Suche nach dem Heiligen Gral gibt’s tatkräftige Unterstützung. Das entsprechende Kommando heißt :help holy-grail (Abbildung 3).

Abbildung 3: Der Texteditor Vim weiß nicht nur über den Heiligen Gral Bescheid, sondern kennt auch die allesentscheidende Frage – und natürlich die Antwort.

Abbildung 3: Der Texteditor Vim weiß nicht nur über den Heiligen Gral Bescheid, sondern kennt auch die allesentscheidende Frage – und natürlich die Antwort.

Monty-Python-Fans kommen ebenfalls nicht zu kurz. Der Film “Die Ritter der Kokosnuss” (“Monty Python and the Holy Grail”) enthält zahlreiche skurrile Personen und Handlungsstränge. Mit die absonderlichsten Gestalten sind die Ritter vom “Ni” (“Knights who say Ni”), die ständig “Ni!” brüllen und von allen Reisenden ein Opfer fordern – nämlich ein Gebüsch (englisch “shrubbery”). Tippen Sie als Befehl in den Vim :Ni! ein, erkennt der Editor Sie als Ritter an und fragt in der Statuszeile: Do you demand a shrubbery? (“Verlangen Sie ein Gebüsch?”)

Glossar

Escape-Sequenzen

Diese Zeichenkombinationen führen Sonderfunktionen aus. Zu den Steuerzeichen gehören beispielsweise Umbrüche und akustische Signale, aber auch Einfärbungen der Ausgaben, des Prompts usw.

Infos

[1] Guru-Training zu “screen”: Heike Jurzik, “Terminalmanager”, EasyLinux 02/2012, S. 116 ff.

[2] Linux/Unix Manpages für Android: https://play.google.com/store/apps/details?id=com.oscd.manpages

[3] Douglas Adams: “Per Anhalter durch die Galaxis”, Heyne, http://www.amazon.de/dp/3453146972

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
EasyLinux 03/2012 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