claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 01/2012   »   Ausgabe bestellen

Know-how für die Kommandozeile

Shell-Tipps

Heike Jurzik


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: Prozess-IDs auf der Konsole anzeigen

Verschiedene Tools listen alle oder nur die eigenen laufenden Prozesse auf. So zeigt beispielsweise der Aufruf von ps x alle eigenen Prozesse an:

$ ps x
...
3150 ?        S   0:03 sshd: huhn@pts/0
3151 pts/0    Ss  0:00 -bash
3253 pts/0    S+  0:00 screen
3254 ?        Ss  0:03 SCREEN
3255 pts/1    Ss  0:00 /bin/bash
3270 pts/1    S+  0:10 irssi
...

Am Anfang der Zeile sehen Sie die so genannte PID (Prozess-ID). Die Nummern sind eindeutig vergeben. Sie benötigen diese beispielsweise, um Prozesse gezielt zu beenden, anzuhalten oder fortzusetzen. Interessieren Sie sich nicht für alle Prozesse, sondern nur für die einer bestimmten Anwendung, können Sie die ps-Ausgabe mit einem Pipe-Zeichen ("|", [AltGr-<]) an grep weiterleiten und nach einer Zeichenkette suchen:

$ ps ax | grep rsync
12368 ?    SNs  0:26 /usr/bin/rsync --daemon
32671 ?    SNs  0:34 /usr/bin/rsync --daemon
32673 ?    DNs  0:17 /usr/bin/rsync --daemon

Der ps-Befehl im letzten Listing zeigt über die zusätzliche Option a auch die Prozesse anderer Nutzer auf dem System an. Die Ausgabe des Kommandos durchsucht grep anschließend nach der Zeichenkette "rsync".

Alternativ verwenden Sie die ps-Option -C, welche die Anzeige auf Prozesse einschränkt, die exakt den hinter -C angegebenen Namen haben:

$ ps -C bash
  PID TTY          TIME CMD
12368 ?        00:00:26 rsync
32671 ?        00:00:34 rsync
32673 ?        00:00:17 rsync

Wenn Sie sich lediglich für die Prozess-IDs interessieren, könnten Sie diese jetzt noch weiter herausfiltern -- oder Sie greifen einfach zum Befehl pidof:

$ pidof rsync
12368 32671 32673

Der praktische Helfer zeigt die PIDs aller laufenden Prozesse des angegebenen Namens an. Optional hängen Sie mehrere Anwendungsnamen an den Befehl an. Über pidof rsync apache2 vsftpd erhalten Sie z. B. alle PIDs der laufenden rsync-, Apache- und vsftpd-Prozesse.

Tipp: Vim: Zwei Dateien in einem Fenster bearbeiten

Der beliebte Texteditor für die Shell öffnet nicht nur eine Datei, sondern auf Wunsch auch mehrere gleichzeitig neben- oder übereinander. Dazu splittet er die Anzeige vertikal oder horizontal -- ganz nach Ihren Vorlieben. Dabei setzt die Terminalgröße oder das eigene Ordnungsempfinden der Anzahl der gleichzeitig angezeigten Dateien Grenzen; irgendwann wird die Sache unübersichtlich. Aber für die gleichzeitige Arbeit an zwei Konfigurationsdateien oder zwei Skripten ist das Feature wirklich praktisch.

Das Kommando :sp (oder :split als Langfassung) teilt das Fenster horizontal, :vsp (:vsplit) splittet vertikal. In beiden Hälften sehen Sie dieselbe Datei. Um stattdessen eine zweite Datei zu öffnen, geben Sie diese einfach hinter dem Kommando an: :sp artikel2.txt

Zwischen den beiden "Viewports" (so nennt Vim die Teilfenster) wechseln Sie mit einer Tastenkombination hin und her: [Strg-W], [W] bringt Sie jeweils zum nächsten Split. Welcher Bereich gerade aktiv ist, sehen Sie an der etwas dickeren Schrift in der Vim-Statusleiste (Abbildung 1). Mit [Strg-W], [C] schließen Sie die aktive Ansicht.

Abb. 1: In Vim zeigen Sie über das Split-Kommando zwei Dateien in einem Fenster an. Die aktive Hälfte (hier oben) hat eine etwas dickere Schrift in der Statusleiste.

Tipp: Vim: Suchen und Splitten gleichzeitig

Praktisch: Sie können schon im Split-Kommando einen Suchbegriff definieren, und Vim springt sofort zum ersten Treffer. Zur Erinnerung: Mit dem Schrägstrich / suchen Sie im Editor nach einem Begriff, und mit [N] springen Sie zum nächsten Treffer. Um die Aufteilung direkt mit der Suche zu kombinieren, geben Sie direkt hinter dem :sp-Befehl (noch vor dem Dateinamen) den Suchbegriff an:

:sp +/Netbook artikel2.txt

Vor dem Schrägstrich steht ein Pluszeichen. Das Kommando öffnet also nicht nur die Datei artikel2.txt in der zweiten Fensterhälfte, sondern sucht in dieser auch nach dem Begriff "Netbook" und springt zum ersten Treffer.

Tipp: Vim: Unterschiedlich große Splits

Wenn Sie einen Bereich kleiner als den anderen sehen möchten, definieren Sie dies entweder im Split-Kommando oder schrumpfen bzw. vergrößern einen Teil nachträglich. Beim Öffnen der zweiten Ansicht definieren Sie direkt die Zeilenanzahl, zum Beispiel so:

:10 sp artikel2.txt

Um die aktive Ansicht zu vergrößern, können Sie wieder eine Tastenkombination einsetzen: [Strg-W], [+] fügt eine Zeile hinzu. Zeilenweise verkleinern Sie entsprechend mit [Strg-W], [-]. Der Shortcut [Strg-W], [Umschalt- -] (Unterstrich) maximiert das aktuelle Fenster, und mit [Strg-W], [Umschalt-0] (Gleichheitszeichen) machen Sie beide Teile wieder gleich groß.

Tipp: Umgebungsvariable "$PATH" anpassen

Wenn Sie in der Shell einen Befehl wie ls oder xterm eingeben, rufen Sie das entsprechende Programm aus einem der Programmverzeichnisse auf, dazu gehören z. B. /bin und /usr/bin. Überprüfen können Sie das schnell mit dem Kommando which, das Ihnen verrät, wo eine bestimmte Anwendung liegt:

$ which ls
/bin/ls
$ which xterm
/usr/bin/xterm

Es reicht aber aus, einfach den Namen ohne den kompletten Pfad ins Terminal zu tippen. Dafür verantwortlich ist die Umgebungsvariable $PATH, in der mehrere Ordner aufgelistet sind, in denen die Shell automatisch nach ausführbaren Programmen sucht. Wie diese Variable bei Ihnen definiert ist, schauen Sie sich mit dem echo-Kommando an:

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Liegt ein Programm nicht in diesem Pfad, können Sie es nicht einfach über seinen Namen starten. In der Regel müssen Sie es dann entweder über den kompletten Pfad aufrufen, oder Sie wechseln zunächst mit cd an den Aufenthaltsort und starten es über ./programmname (mit vorangestelltem Punkt und Schrägstrich, ohne Leerzeichen). Befindet sich in Ihrem Home-Verzeichnis z. B. ein Ordner namens bin, in dem Sie selbst geschriebene Skripte ablegen, könnte das so aussehen:

~/bin/skript

Oder in Kombination mit cd:

~ $ cd ~/bin
bin $ ./skript

Das ./ steht dabei für das aktuelle Verzeichnis, die Bash sucht dann nicht im Pfad. Um Tipparbeit zu sparen und den Ordner bin im eigenen Home-Verzeichnis in den Pfad aufzunehmen, definieren Sie mit dem export-Befehl die PATH-Variable neu. Dazu hängen Sie ans Ende der Liste hinter einem Doppelpunkt einfach ~/bin an:

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$ export PATH=$PATH:~/bin
$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/huhn/bin

Die Shell löst dabei ~/bin zum kompletten Pfadnamen auf, also /home/huhn/bin im Beispiel. Im export-Aufruf haben Sie dabei die Möglichkeit genutzt, den bestehenden Wert von $PATH bei der Neudefinition zu verwenden.

Tipp: Mutt: Verschiedene Absender pro Mailordner

Der Konsolenmailer Mutt verwaltet die elektronische Post für mehrere Konten und arbeitet auch mit mehreren Ordern, so genannten Foldern, zusammen. So können Sie Ihre privaten und auch die beruflichen E-Mails in nur einem Programm lesen und beantworten und beides doch strikt trennen. Damit Sie nicht aus Versehen in den Firmenmails Ihren privaten Absender und andersrum eintragen, definieren Sie einfach für den entsprechenden Ordner einen eigenen Absender.

Wenn der Mailfolder z. B. EasyLinux heißt und Sie alle Nachrichten in diesem Ordner als hjurzik@easylinux.de beantworten möchten, lautet der passende Eintrag in der Mutt-Konfigurationsdatei ~/.muttrc:

folder-hook =EasyLinux 'my_hdr From:hjurzik@easylinux.de'

Damit haben Sie den Absender konfiguriert. Auf Wunsch können Sie zusätzlich für diesen Folder eine Reply-To-Adresse einrichten. Um als Antwortadresse für den Mailfolder EasyLinux auch die Absenderadresse zu verwenden, schreiben Sie:

folder-hook =EasyLinux 'my_hdr Reply-To:hjurzik@easylinux.de'

Zudem ist es möglich, unterschiedliche Signaturen zu nutzen. Dazu geben Sie in einer weiteren Konfigurationsanweisung die Datei mit der passenden E-Mail-Signatur an:

folder-hook =EasyLinux 'set signature="~/.signature.easy"'

In die Datei ~/.signature.easy im eigenen Home-Verzeichnis schreiben Sie dann noch die passende Signatur -- fertig.

Tipp: Mutt: Mail-Flags in der Nachrichtenübersicht

Der Mailclient Mutt markiert die Nachrichten in der Pager-Ansicht (Nachrichtenansicht) mit unterschiedlichen Status-Flags. So sind neue Mails beispielsweise mit einem N gekennzeichnet, alte ungelesene Nachrichten mit einem O, vor einer beantworteten Mail steht ein r und vor einer als wichtig markierten Nachricht ein !. Außerdem verwendet Mutt die Kürzel K (Mail mit öffentlichem PGP-Schlüssel), P (Nachricht ist mit PGP, GnuPG oder S/MIME verschlüsselt), s (Mail ist signiert, aber nicht geprüft) und S (Signatur ist geprüft). Ein D zeigt an, dass die Nachricht zum Löschen vorgemerkt ist, ein d, dass ein Attachment gelöscht werden soll.

Sehen Sie ein C, heißt das, dass Sie im CC:-Feld stehen (also vom Sender als Empfänger einer Kopie gekennzeichnet wurden), T bedeutet, Sie stehen im To:-Feld, die Nachricht geht aber noch an weitere Benutzer, und wenn Sie ein + sehen, wissen Sie, dass die E-Mail nur für Sie alleine bestimmt ist und es keine weiteren Empfänger gibt. Mails, die Sie verschickt haben, erkennen Sie am F, und Mails, die an eine Mailingliste gegangen sind, die Sie abonniert haben, am L. Das Sternchen markiert eine oder mehrere Mails und fasst diese so zusammen, dass Sie eine gemeinsame Aktion darauf anwenden können.

Mit wenigen Kommandos können Sie diese Flags manipulieren. Um eines zu setzen, drücken Sie die Taste [W] (Abbildung 2). Danach zeigt der Mailclient am unteren Rand in der Statuszeile die Frage an:

Setze Indikator? (D/N/O/r/*/!):

Abb. 2: Der Mailclient Mutt zeigt verschiedene Status-Flags an. So sehen Sie auf einen Blick, ob eine Mail etwa nur an Sie oder mehrere ging, ob Sie schon geantwortet haben oder ob etwas wichtig ist.

Geben Sie jetzt mit der Tastatur einfach das entsprechende Zeichen ein, also zum Beispiel [R], wenn Sie die Mail als gelesen markieren möchten, oder [Umschalt-N], wenn sie als neue Nachricht erscheinen soll. Möchten Sie den Vorgang abbrechen, drücken Sie einfach die Eingabetaste.

Ebenso leicht werden Sie ein gesetztes Flag los. Die Tastenkombination ist [Umschalt-W]. Auch danach sehen Sie in der Statuszeile einen Hinweis:

Entferne Indikator? (D/N/O/r/*/!):

Für das Ausrufezeichen (also das Flag, um eine E-Mail als wichtig hervorzuheben) und das Sternchen (um Mails zu taggen), gibt es Abkürzungen. Drücken Sie im Pager einfach [Umschalt-F], erscheint ein Ausrufezeichen davor; erneutes Betätigen des Shortcuts entfernt es wieder. Das Sternchen setzen und entfernen Sie mit [T].

Ja, ist denn schon Weihnachten?

Diese alles entscheidende Frage beantwortet z. B. die Webseite http://isitchristmas.com/: Nur am 25. und 26. Dezember steht dort als Antwort "YES", ansonsten verneint der JavaScript-Code auf der Seite. Möchten Sie die Seite nicht immer wieder im Browser aufrufen oder neu laden, definieren Sie sich einen einfachen Alias für die Shell. Einmalig richten Sie einen Alias über das gleichnamige Kommando ein:

alias xyz=befehl

In diesem Listing ist xyz der Alias-Name, hinter dem Gleichheitszeichen steht der Befehl. Um die genannte Webseite mit dem Textbrowser w3m auf der Shell abzufragen, können Sie z. B. folgenden Alias definieren:

alias xmas='echo "Is it Christmas yet? $(w3m -dump http://isitchristmas.com/)"'

Der Name für den Alias lautet in diesem Beispiel xmas. Anschließend folgt die Zuweisung eines Befehls, der in einfache Hochkommata ' ' eingeschlossen ist. Der Befehl gibt zunächst mit echo die Frage "Is it Christmas yet?" aus ("Ist jetzt Weihnachten?") und fasst dann den w3m-Aufruf in den runden Klammern zusammen. Die Konstruktion $( ... ) nimmt die Ausgabe des Befehls und macht daraus ein Argument. Der w3m-Parameter -dump sorgt dafür, dass die HTML-Datei in einen gut lesbaren Text umgewandelt wird.

Möchten Sie den Alias dauerhaft einrichten, speichern Sie ihn in der Datei .bashrc im eigenen Home-Verzeichnis, die bei jedem Start einer interaktiven Shell ausgeführt wird. Die Bash-Einrichtungsdatei bearbeiten Sie am besten mit einem Texteditor. An welcher Stelle dort die Alias-Definition steht, spielt keine Rolle. Viele Benutzer schreiben solche Abkürzungen aber ans Ende der Datei, wo in der Regel schon einige alias-Einträge stehen. Um den neuen Alias nutzen zu können, rufen Sie entweder eine neue Shell auf oder laden die geänderte Konfigurationsdatei mit dem folgenden Befehl:

source ~/.bashrc

Anschließend verrät der neue Befehl xmas, ob Sie sich gerade in den Festtagen befinden (Abbildung 3). Bei Erscheinen dieser EasyLinux-Ausgabe ist Weihnachten zwar bereits vorbei, die Anleitung lässt sich aber leicht auf andere Webseiten mit übersichtlicher Informationsmenge übertragen. (hge)

Abb. 3: Ja, ist denn schon wieder Weihnachten? Ein einfacher Befehl auf der Shell zeigt, was Sache ist, und wertet die Antwort einer Webseite aus.

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 | © 2014 COMPUTEC MEDIA GmbH | Last modified: 2012-01-02 21:06

[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]