Know-how für die Kommandozeile

Aus EasyLinux 04/2014

Know-how für die Kommandozeile

Shell-Tipps

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

Tipp: Einzelne Dateien mit “wget” herunterladen

Der Downloadmanager für die Shell überträgt Daten aus dem WWW auf Ihren eigenen Rechner. Um eine einzelne Datei herunterzuladen, geben Sie deren URL hinter dem Befehl wget an (Abbildung 1). In der Ausgabe sehen Sie, dass das Programm zunächst den Hostnamen in eine IP-Adresse umwandelt, dann Verbindung aufnimmt, eine Anforderung an den Webserver schickt und schließlich den Download startet. Ein Fortschrittsbalken zeigt an, wie viele Daten schon auf die eigene Platte gewandert sind.

Abbildung 1: Mit dem Kommandozeilentool "wget" laden Sie komfortabel Dateien aus dem WWW herunter.

Abbildung 1: Mit dem Kommandozeilentool “wget” laden Sie komfortabel Dateien aus dem WWW herunter.

Tipp: Rekursiv spiegeln mit “wget”

Das Tool lädt nicht nur einzelne Dateien herunter, sondern spiegelt auf Wunsch eine komplette Webseite mit allen Inhalten, Unterverzeichnissen, Bildern usw. Zum Einsatz kommt dabei die Option -r (rekursiv), die Sie auf Wunsch begrenzen können. Setzen Sie über wget -r -l1 den Level der Rekursion auf 1, so wandern neben der Startseite auch die dort eingebetteten Links auf den eigenen Rechner. Dazu gehören dann beispielsweise Bilder oder Unterseiten. Definieren Sie hingegen -r -l2, dann folgt wget den Verknüpfungen noch eine Stufe weiter. Praktisch ist in diesem Zusammenhang auch der Parameter -k, der externe Links nach dem Herunterladen in interne umwandelt, damit Sie den gespiegelten Inhalt auch offline im Browser betrachten können.

Tipp: “wget”: User-Agent vorgeben

Einige Webseiten blockieren wget als Downloadmanager, und beim Versuch, etwas herunterzuladen, erhalten Sie vom Webserver eine Meldung wie diese hier:

HTTP request sent, awaiting response... 403 Forbidden

Eine solche Blockierung können Sie mit dem Kommandozeilentool schnell umgehen, denn es erlaubt, per Parameter den User Agent zu definieren. Dazu hängen Sie die Zeichenkette, die diesen beschreibt, hinter den Parameter --user-agent=; schließen Sie diese in doppelte Hochkommata ein, z. B.:

wget --user-agent="Opera/8.52 (X11; Linux i386; U; de) " ...

Eine Liste von allen User Agents aus der Kategorie Webbrowser finden Sie unter [1].

Tipp: Mutt: Übersichtliche Mailbox dank Farben

Elektronische Post von Ihrem Chef und den Kollegen hätten Sie gerne in strahlendem Pink? Die EasyLinux-Mailinglisten [2] sollen gelb leuchten? Nichts leichter als das – den Textmailer Mutt können Sie so konfigurieren, dass er eingehende Post bewertet und Punkte an Mails verteilt, wenn sie ein bestimmtes Kriterium erfüllen. Abhängig von dieser Punktzahl markiert Mutt dann die Nachrichten mit unterschiedlichen Farben. Wir zeigen in der folgenden Schritt-für-Schritt-Anleitung, wie Sie Post einfärben, die von einer bestimmten Domain kommt oder die an eine Mailadresse wie ubuntu@easylinux.de geht:

  1. Öffnen Sie die Konfigurationsdatei des textbasierten Mailclients (~/.muttrc) in einem Texteditor Ihrer Wahl, z. B. in GEdit oder KWrite.
  2. Fügen Sie an einer beliebigen Stelle der Datei das folgende Statement ein, um alle Punkte zunächst auf Null zu setzen:

    unscore *
  3. Jetzt vergeben Sie Punkte nach bestimmten Mustern. Der Ausdruck ~f prüft beispielsweise, ob die Mail von einem bestimmten Absender stammt. Um Mails von der Domain linuxnewmedia.de 35 Punkte zuzuweisen, tragen Sie diese Zeile ein:

    score '~f @linuxnewmedia\.de' 35

    Der gesamte Ausdruck ist in einfache Hochkommata eingeschlossen, da er Leer- und Sonderzeichen enthält. Beachten Sie außerdem den Backslash vor dem Punkt, den Sie über [AltGr]+[ß] erreichen.

  4. Um alle Nachrichten mit 45 Punkten zu bewerten, die an die Adresse ubuntu@easylinux.de (die EasyLinux-Mailingliste, die sich mit Themen rund um Ubuntu und Debian beschäftigt) geschickt wurden, tragen Sie eine weitere Zeile ein:

    score '~C ubuntu@easylinux\.de' 45

    Anstelle von ~f kommt hier das Muster ~C zum Einsatz, das nicht den Absender, sondern den Empfänger anspricht. Er darf entweder im To:– oder im CC:-Feld stehen.

  5. Jetzt weisen Sie den Punktzahlen Farben zu. Dazu definieren Sie jeweils hinter dem Pattern ~n einen Bereich mit einem Minimal- und Maximalwert. Diese beiden Zeilen färben Mails leuchtend pink ein, die zwischen 31 und 40 Punkten haben, und leuchtend gelb, wenn die Zahl zwischen 41 und 50 Punkten liegt:

    color index brightmagenta default '~n 31-40'
    color index brightyellow default '~n 41-50'
  6. Speichern Sie die Änderungen und schließen Sie den Texteditor. Wenn Sie Mutt das nächste Mal starten, erwartet Sie ein Index mit neuem Look und auffälligen Farben (Abbildung 2).

    Abbildung 2: Farben bringen mehr Übersicht in den Mutt-Index. Dienstliche Mails erscheinen in diesem Beispiel pink und Post an die EasyLinux-Mailinglisten gelb.

    Abbildung 2: Farben bringen mehr Übersicht in den Mutt-Index. Dienstliche Mails erscheinen in diesem Beispiel pink und Post an die EasyLinux-Mailinglisten gelb.

Tipp: Weitere Muster für Mutt

Die im letzten Tipp gezeigten Muster können Sie auch für das automatische Markieren (Tagging) oder die Suchfunktion (/ für vorwärts, [Esc] und / für rückwärts) verwenden. Mutt kennt eine ganze Reihe von Patterns, die das Handbuch in Kapitel 4 im Abschnitt 4.2 auflistet [3]. So erwischen Sie mit ~A alle Nachrichten, mit ~N nur neue Mails, mit ~O nur alte, ~R meint gelesene und ~Q beantwortete. Für das Einfärben interessant sind eventuell noch ~s (Subject, also Betreff), ~g (PGP-signiert) und ~G (PGP-verschlüsselt).

Tipp: Mutt: Eigene Antwortzeile einrichten

Wenn Sie auf eine Mail antworten und das Original einbinden und zitieren, fügt Mutt am oberen Rand eine Zeile wie die folgende ein:

On Thu, Jul 31, 2014 at 09:04:38PM +0200, Heike Jurzik wrote:

Hinter dem Datum und der Uhrzeit steht der Name des Verfasses, dahinter das englische Wort “wrote” (“schrieb”), ein Doppelpunkt, und dann folgt die zitierte Nachricht.

Korrespondieren Sie hauptsächlich mit deutschsprachigen Anwendern, können Sie Mutt mit einer einfachen Anweisung dazu bringen, eine deutsche Zeile über dem zitierten Text zu drucken. Dazu tragen Sie in die Konfigurationsdatei des Maiclients eine Zeile wie diese hier ein:

set attribution="%n <%a> schrieb am %d:"

Das %n ersetzt Mutt durch den Namen des Absenders, %a durch dessen Mailadresse, und %d durch das Datum und die Uhrzeit. Als Zeitzone wählt Mutt hier die des Absenders. Soll stattdessen die eigene Zeitzone auftauchen, ersetzen Sie in der Konfigurationsanweisung %d durch %D.

Tipp: Komma als Dezimaltrenner für “bc”

Der bc ist ein schlanker, aber mächtiger Taschenrechner für die Shell. Am besten starten Sie das Tool mit dem Parameter -l, damit es Fließkommazahlen (also Zahlen mit Nachkommastellen) nutzen kann:

bc -l

Einen Eingabeprompt sehen Sie nicht – tippen Sie einfach Ihre Berechnungen ein und schicken Sie alles mit Druck auf [Eingabe] ab. Abbildung 3 zeigt ein paar Beispiele für das, was Sie mit dem Programm anstellen können.

Abbildung 3: "bc" ist ein Taschenrechner für die Shell. Er beherrscht einfache arithmetische Ausdrücke, rechnet mit Variablen, bringt eine Funktion zum Berechnen der Quadratwurzel mit und unterstützt Schleifen.

Abbildung 3: “bc” ist ein Taschenrechner für die Shell. Er beherrscht einfache arithmetische Ausdrücke, rechnet mit Variablen, bringt eine Funktion zum Berechnen der Quadratwurzel mit und unterstützt Schleifen.

bc verwendet als Dezimaltrenner den Punkt. Können Sie sich nicht daran gewöhnen und möchten Sie stattdessen lieber wie gewohnt ein Komma tippen, zeigt dieser Tipp, wie Sie mit dem Befehl xmodmap die aktuelle Tastenbelegung anzeigen und verändern, so dass Sie 3,14 eingeben, in bc aber 3.14 erscheint. Die Änderungen gelten nur für die grafische Arbeitsumgebung, also unter X:

  1. Öffnen Sie ein Terminalfenster. Geben Sie Folgendes ein, um die aktuelle Tastenbelegung zu betrachten:

    xmodmap -pke | less

    Die Ausgabe leiten Sie per Pipe-Zeichen an den Pager less weiter und betrachten sie so seitenweise. Den Punkt und das Komma finden Sie auf einer handelsüblichen deutschen PC-Tastatur an den Positionen 59 und 60:

    keycode  59 = comma semicolon comma less periodcentered multiply
    keycode  60 = period colon period greater U2026 division
  2. Um das Komma nun mit dem Dezimalpunkt zu belegen, geben Sie am Shellprompt den folgenden Befehl ein:

    xmodmap -e "keycode 59 = period"
  3. Egal, in welchem Programm Sie nun [,] tippen, es erscheint der Punkt. Daher sollten Sie nach der Verwendung von bc wieder den Ursprungszustand herstellen. Dazu geben Sie einfach setxkbmap, gefolgt von [Eingabe] ein, und alles ist wie vorher.

Tipp: Alias für den neuen Dezimaltrenner

Um nicht alle Kommandos aus dem letzten Tipp jedes Mal von Hand eintippen zu müssen, wenn Sie bc aufrufen, definieren Sie sich einfach einen Shell-Alias. Tippen Sie dazu am Prompt z. B.:

alias rechner='xmodmap -e "keycode 59 = period" && bc -l; setxkbmap'

Anschließend müssen Sie nur rechner eintippen, und die Bash führt die gesamte Befehlsfolge aus, das heißt, xmodmap verändert die Tastenbelegung, bc -l startet den Taschenrechner, und setxkbmap stellt den Originalzustand wieder her. Durch die &&-Verknüpfung veranlassen Sie, dass bc nur aufgerufen wird, wenn das xmodmap-Kommando erfolgreich war. Das Semikolon hinter bc -l sorgt dafür, dass setxkbmap die veränderte Tastaturbelegung auf jeden Fall rückgängig macht.

Ein auf diese Weise definierter Alias gilt nur für die aktuelle Shell-Sitzung. Um die Abkürzung dauerhaft einzurichten, barbeiten Sie die Konfigurationsdatei der Bash (~/.bashrc) mit einem Texteditor Ihrer Wahl und geben die Zeile aus dem letzten Listing dort ein. Speichern Sie die Änderungen und lesen Sie die modifizierte Konfiguration mit source ~/.bashrc ein. Alternativ melden Sie sich ab und wieder neu an bzw. schließen alle Terminalfenster und öffnen neue.

Tipp: Alias-Definitionen anzeigen und löschen

Wie im vorigen Tipp gezeigt, definieren Sie über das Kommando alias Abkürzungen für lange und komplizierte Befehle oder ganze Befehlsfolgen. Wenn Sie einen Blick in die Bash-Konfigurationsdatei ~/.bashrc werfen, sehen Sie dort einige dieser Alias-Definitionen – manche hat der Distributor für Sie eingerichtet, andere haben Sie vielleicht selbst ergänzt. Um in Erfahrung zu bringen, welche Abkürzungen es gibt, müssen Sie aber nicht jedes Mal die Bash-Einrichtung im Texteditor öffnen. Sie können stattdessen den Befehl alias ohne weitere Parameter auf der Kommandozeile eintippen:

$ alias
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias rechner='xmodmap -e "keycode 59 = period" && bc -l; setxkbmap'
alias mein_server='ssh -p 2222 -l huhn blubb.bla.de'
alias huhnix='ssh huhn@huhnix.org'

Um einen Alias temporär zu deaktivieren, verwenden Sie das Kommando unalias. Dahinter geben Sie den Namen des Shell-Kürzels ein, also z. B.:

unalias huhnix

Um alle Abkürzungen auf einen Rutsch loszuwerden, tippen Sie hingegen:

unalias -a

Starten Sie eine neue Bash-Sitzung, sind alle Aliasse wieder da, denn unalias beeinflusst nur die aktuelle Session. Um etwas dauerhaft zu entfernen, bearbeiten Sie also wieder die Datei ~/.bashrc und löschen die entsprechende Zeile. Tipp: Setzen Sie vor den Alias-Eintrag in der Bash-Einrichtungsdatei ein Rautezeichen #, um sie auszukommentieren. Auf diese Weise können Sie durch Entfernen der Raute den Eintrag schnell wieder reaktivieren.

Tipp: Inhalt von Tar-Archiven auflisten

Sie haben von einer Webseite ein Tar-Archiv heruntergeladen und möchten dieses nicht direkt auspacken, sondern einfach nur in Erfahrung bringen, was drin steckt? Nichts leichter als das: Verwenden Sie dazu einfach den Parameter t in Kombination mit f und geben Sie dahinter den Dateinamen des Tar-Archivs an (Abbildung 4). In der Standardausgabe des Terminals sehen Sie nun alle eingepackten Dateien und Verzeichnisse. Sollte die Liste sehr lang sein, leiten Sie diese einfach mit | less an den Pager less weiter und blättern mit den Pfeiltasten nach oben und unten in der Ausgabe. Mit komprimierten Tar-Archiven (Endung .tar.gz, .tgz oder auch .tar.bz2 funktioniert das genauso, aber Sie benötigen zusätzlich die Option z (für die ersten zwei Endungen) oder j (für die letzte): Dann nutzt tar einen der beiden (Ent-)packer gzip und bzip2.

Abbildung 4: Wenn Sie wissen möchten, was in einer Tar-Datei steckt, listen Sie den Inhalt mit "tar tf archivname.tar" einfach nur auf.

Abbildung 4: Wenn Sie wissen möchten, was in einer Tar-Datei steckt, listen Sie den Inhalt mit “tar tf archivname.tar” einfach nur auf.

Tipp: Aus “less” heraus einen Editor starten

Lesen Sie mit less eine Textdatei (und nicht eine Programmausgabe wie im vorigen Tipp gezeigt) und fällt Ihnen ein Tippfehler ins Auge, müssen Sie den Pager nicht erst beenden, die Datei im Texteditor öffnen und die Stelle mit dem Vertipper suchen und korrigieren. Sie können stattdessen in less die Taste [V] drücken, um den Standardeditor zu starten. Auf vielen Distributionen, so auch unter OpenSuse und Ubuntu, ist die Voreinstellung ein Link im Verzeichnis /etc/alternatives:

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 13 Sep  1 11:41 /etc/alternatives/editor -> /usr/bin/joe

Sagt Ihnen die Wahl nicht zu, definieren Sie ihn temporär über die Umgebungsvariable EDITOR, z. B.:

export EDITOR=vim

Drücken Sie nun [V], während Sie mit less in einer Datei blättern, öffnet Vim diese genau an der Stelle, wo Sie sich auch in less befunden haben. Nachdem Sie den Editor beendet haben, finden Sie sich im Dateibetrachter wieder, den Sie mit Druck auf [Q] beenden.

Glossar

User Agent

Programm, mit dem Anwender einen Netzwerkdienst nutzen, also ein Client. Dazu gehören neben Webbrowsern auch E-Mail-und Chatprogramme. Die meisten User Agents übertragen ihren Namen, die Versionsnummer und manchmal auch das Betriebssystem an den Server. Ein Firefox unter Ubuntu meldet sich z. B. als Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0.

Infos

[1] Liste von User Agents (Webbrowser): http://www.useragentstring.com/pages/Browserlist/

[2] EasyLinux-Mailinglisten: http://www.easylinux.de/Kontakt/Mailinglisten

[3] Abschnitt zu Patterns im Mutt-Handbuch: http://www.mutt.org/doc/manual/manual-4.html#ss4.2

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
EasyLinux 04/2014 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
Nach oben