Shell-Sitzungen beschleunigen

Aus EasyLinux 07/2017

Shell-Sitzungen beschleunigen

© lucadp, 123rf

Mehr Umdrehungen

Im Guru-Training und in den Linux-Tipps geben wir regelmäßig Hilfestellung zum Arbeiten auf der Shell – Zeit, das Wissen einmal zu vertiefen und mehr über die Bash selbst zu lernen. Wir zeigen, wie Sie die Kommandozeile effizienter nutzen.

Die Bash vermittelt als Kommandozeileninterpreter zwischen Ihnen und dem Linux-System. Im Klartext heißt das: Sie geben einen Befehl am Prompt ein, und die Bash interpretiert das Kommando und gibt den Auftrag weiter. Darüber hinaus wertet die Shell auch Platzhalter und Variablen aus, steht also als “Übersetzer” hilfreich zur Seite.

Viele Kommandozeilenprofis schätzen an der Shell vor allem, dass sie Befehle miteinander kombinieren und Programmausgaben umleiten können. So schauen Sie eine lange Meldungsflut beispielsweise in Betrachtern wie less seitenweise an. Ebenso ist es möglich, ganze Ausgaben durch eine einfache Umleitung in einer anderen Datei zu speichern.

Mit welchen Tricks und Kniffen Sie auf der Bash leichter und effizienter arbeiten, zeigen wir in diesem Artikel. Dabei geht es zunächst um vergangene Kommandos und das Durchforsten der Bash-History. Danach stellen wir Tastaturkombinationen vor, mit denen Sie Tipparbeit sparen. Zu guter Letzt erfahren Sie, wie Sie Programmausgaben umleiten und Befehle miteinander verketten.

Vergangenes

Praktischerweise “merkt” sich die Bash, welche Befehle Sie zuletzt am Prompt eingegeben haben. Drücken Sie beispielsweise [Pfeil hoch]+, gehen Sie in dieser “History” (wörtlich: Geschichte) zurück, und der zuletzt getippte Befehl erscheint am Prompt. Drücken Sie mehrmals [Pfeil hoch]+, wandern Sie weiter zurück; entsprechend gehen Sie mit [Pfeil runter] wieder nach vorne. Ertönt ein Piepton, haben Sie das Ende der Liste erreicht. Wie lang die History ist, erfahren Sie auf der Kommandozeile, indem Sie den Inhalt der Umgebungsvariable HISTSIZE mit echo anzeigen:

$ echo $HISTSIZE
1000

Die Ausgabe verrät: Insgesamt 1000 Einträge können Sie speichern. Wem die Liste nicht lang genug ist, kann durch Neudefinieren der Umgebungsvariable HISTSIZE mehr Platz für die History schaffen. Das geht wie folgt:

  1. Öffnen Sie mit einem Editor die Datei .bashrc in Ihrem Home-Verzeichnis, z. B. über KDEs Schnellstarter [Alt]+[F2] und Eingabe von
  2. kwrite ~/.bashrc

    (Unter Kubuntu ist kwrite nicht installiert; dort verwenden Sie stattdessen kate.)

  3. Springen Sie ans Dateiende und fügen Sie eine neue Zeile ein: Um die History auf 2000 Einträge zu vergrößern, lautet der Eintrag
  4. export HISTSIZE=2000
  5. Speichern Sie die Änderung mit Datei / Speichern und verlassen Sie den Editor.
  6. Damit die Änderungen greifen, melden Sie sich ab und wieder an.

In welcher Datei die Bash ihre History ablegt, erfahren Sie ebenfalls auf der Kommandozeile:

$ echo $HISTFILE
/home/huhn/.bash_history

Die Bash-History liegt also in der versteckten Datei .bash_history im eigenen Home-Verzeichnis – dass diese versteckt ist, erkennen Sie daran, dass der Dateiname mit einem Punkt anfängt. Wenn Sie die Datei in einem Text-Editor öffnen, sehen Sie die zuletzt ausgeführten Kommandos.

Gesucht, gefunden

Um einen Befehl in der History wiederzufinden, müssen Sie allerdings nicht dauernd hoch- und runterblättern: Die Bash bietet eine eingebaute Suchfunktion. Anstatt so lange [Pfeil hoch]+ und [Pfeil runter] zu drücken, bis das gesuchte Kommando auftaucht, rufen Sie über [Strg]+[R] die Befehlssuche auf. Der Prompt verändert sich und wird zu

(reverse-i-search)`':

Am Doppelpunkt beginnen Sie nun, das gesuchte Kommando einzugeben. Dabei vervollständigt die Shell das Kommando automatisch. Um beispielsweise nach dem letzten scp-Befehl zu suchen, geben Sie nur die ersten zwei Buchstaben (sc) ein – schon hat die Bash ein Kommando aufgespürt und zeigt den kompletten Befehl an (Abbildung 1). Sie müssen hier nicht zwingend mit den ersten Buchstaben des Kommandos anfangen; auch mit Teilstücken aus der Mitte des Befehls funktioniert die Suche problemlos.

Abbildung 1: Mit <span class="key-combo">[Strg]+[R]</span> durchsuchen Sie die Shell-History und sp&uuml;ren vergangene Befehle auf.

Abbildung 1: Mit [Strg]+[R] durchsuchen Sie die Shell-History und spüren vergangene Befehle auf.

Um den ersten gefundenen Befehl direkt auszuführen, drücken Sie [Eingabe]+; alternativ wählen Sie [Esc], wenn Sie das Kommando noch verändern möchten. Der Befehl erscheint dann wie frisch eingetippt am Prompt, und Sie können ihn verändern oder ergänzen. Ist der angezeigte Befehl hingegen noch nicht der richtige Treffer, suchen Sie weiter: Drücken Sie so lange erneut [Strg]+[R], bis der richtige Befehl auftaucht.

Besser tippen

Neben der Kombination [Strg]+[R] für das Stöbern in der History hat die Bash noch einige weitere praktische Tastenkombinationen zu bieten, die das Kommandozeilenleben leichter machen. In ein paar Fingerübungen zeigen wir jetzt, wie Sie die Tipparbeit verringern können. Die Tabelle Tastaturfunktionen in der Bash enthält darüber hinaus die wichtigsten Kombinationen.

Dass Sie mit [Pfeil hoch]+ und [Pfeil runter] in der History blättern, wissen Sie schon. Ebenso verwenden Sie die anderen beiden Pfeiltasten, um nach rechts oder links in der Befehlseingabe zu wandern. Da die Entfernung zwischen dem ersten und dem letzten Zeichen – gerade bei langen Kommandos – ziemlich groß ist, bietet die Bash Abkürzungen, um an den Anfang ([Strg]+[A]) oder ans Ende ([Strg]+[E]) der Eingabezeile zu springen. Es geht auch wortweise nach links ([Alt]+[B], “B” wie back: zurück) oder rechts ([Alt]+[F], “F” wie forward: vorwärts); genauso sollten [Strg]+[Pfeil links] und [Strg]+[Pfeil rechts] funktionieren.

Zeichen löschen Sie mit [Rückschritt]+ (nach links) und [Entf] (nach rechts). Auch hier gibt es wieder schnellere Wege: [Strg]+[K] löscht von der aktuellen Position aus bis zum Ende der Zeile, [Strg]+[U] bis zum Anfang (also bis zum Prompt); ein ganzes Wort nach links löschen Sie mit [Alt]+[Rückschritt] oder (wenn das nicht funktioniert) mit [Strg]+[W].

Vervollständigungen

Eine besondere Funktion hat die Tabulatortaste. Dank Tab-Completion (auf Deutsch etwa: Vervollständigung mit [Tab]) ersparen Sie sich jede Menge Tipperei, denn die Tab-Taste ergänzt Ihre Eingaben. Um mit dem Kommando ls etwa den Inhalt des Verzeichnisses /etc/X11/xinit/ anzuzeigen, geben Sie nicht umständlich jeden Buchstaben ein – schreiben Sie einfach

$ ls /e

und drücken Sie dann [Tab]+. Die Bash vervollständigt direkt zu /etc/. Auch das nächste Verzeichnis ist schon nach dem großen X eindeutig und wird mit einem Druck auf [Tab] zu X11 komplettiert – am Prompt steht jetzt also:

$ ls /etc/X11/

Nach Eingabe des nächsten Buchstabens ist das Verzeichnis noch nicht eindeutig – darum piept es, wenn Sie x eingeben und [Tab]+ drücken. Drücken Sie dann ein zweites Mal [Tab], erhalten Sie eine Auswahl mit allen Möglichkeiten:

$ ls /etc/X11/x
xdm/  xinit/  xkb/   xsm/

(Je nach Distribution gibt es hier andere Dateien und Ordner.) Geben Sie einfach weitere Buchstaben des Verzeichnisnamens ein – sobald die Eingabe eindeutig ist, können Sie mit [Tab] vervollständigen.

Das Feature funktioniert nicht nur mit Pfadnamen: Geben Sie am Prompt einen Buchstaben ein und drücken zweimal [Tab], zeigt die Bash alle Befehle an, die mit diesem Zeichen beginnen. Falls die Liste zu lang ist, fragt die Shell vorsichtshalber nach, ob Sie wirklich alle Kommandos sehen wollen (Abbildung 2).

Abbildung 2: Die Liste der Kommandos ist lang &ndash; sicherheitshalber fragt die Bash nach, ob Sie wirklich alle sehen wollen.

Abbildung 2: Die Liste der Kommandos ist lang – sicherheitshalber fragt die Bash nach, ob Sie wirklich alle sehen wollen.

[Pfeil hoch]+ und [Pfeil runter]

blättert in der Bash-History zurück und vor

[Pfeil links]+ und [Pfeil rechts]

bewegt die Cursor-Position nach links und rechts

[Strg]+[A]

springt an den Anfang der Eingabezeile

[Strg]+[E]

springt ans Ende der Eingabezeile

[Alt]+[B]

springt ein Wort nach links in der Eingabezeile

[Alt]+[F]

springt ein Wort nach rechts in der Eingabezeile

[Rückschritt]

löscht ein Zeichen nach links

[Entf]

löscht das Zeichen unter dem Cursor

[Strg]+[K]

löscht von der Cursor-Position aus bis zum Ende der Zeile

[Strg]+[U]

löscht von der Cursor-Position aus bis zum Anfang der Zeile

[Strg]+[W]

löscht ein Wort nach links

[Strg]+[T]

vertauscht die beiden Zeichen vor und unter dem Cursor

[Alt]+[T]

vertauscht die beiden vorangehenden Wörter in der Eingabezeile

[Strg]+[L]

räumt den “Bildschirm”, also meist das Terminal-Fenster, auf

[Tab]

vervollständigt einen Befehl oder Dateinamen (“Tab-Completion”)

Umleitung

Standardmäßig schreibt die Bash die Programmausgaben direkt ins Terminalfenster. Wer Ausgaben lieber in eine Datei speichern und in Ruhe lesen möchte, verwendet dazu den >-Operator:

ls /etc > etc_inhalt.txt

Eine Sache sollten Sie bei der Verwendung des Größerzeichens zur Umleitung allerdings beachten: Der Operator leitet nicht nur in die Datei um, sondern überschreibt eine eventuell vorhandene Datei mit gleichem Namen einfach.

Sicherer ist es, das doppelte Größerzeichen >> zu verwenden: Wenn die Zieldatei noch nicht existiert, wird sie angelegt; besteht die Datei schon, hängt die Shell die Programmausgabe einfach an:

ls /etc >> etc_inhalt.txt

Verkettung von Kommandos

Ein nützliches Shell-Feature ist die Verkettung mehrerer Befehle. Um zwei oder mehr Kommandos nacheinander auszuführen, können Sie diese hintereinander am Prompt eingeben und dabei durch ein Semikolon ; voneinander trennen. Erst ganz am Schluss drücken Sie [Eingabe], dann führt die Bash alle Befehle aus. Mit der Kommandoreihe

cd Documents; ls > ausgabe.txt; cd -

wechseln Sie zunächst in das Unterverzeichnis Documents, führen in diesem das Kommando ls aus, leiten die Ausgabe in die Datei ausgabe.txt um und gehen anschließend mit cd - ins vorherige Verzeichnis zurück.

Besonders praktisch ist für eine lange Befehlskette das Programm sleep: Es wartet einen genau definierten Zeitraum, bevor es sich selbst beendet – in der Zwischenzeit tut es einfach nichts, es “schläft”. So legen Sie die Shell mit sleep 10 für zehn Sekunden schlafen. Eingereiht in eine ganze Kommandoliste sorgt sleep für die nötigen Pausen:

sleep 15; import -window root screen.png

Hier legt sleep zunächst eine 15 Sekunden lange Pause ein; danach erstellt das Programm import (aus dem ImageMagick-Paket) mit dem Parameter -window root einen Screenshot vom kompletten Bildschirm und speichert diesen in der Datei screen.png. So haben Sie genug Zeit, die Fenster auf dem Bildschirm anzuordnen, bevor import den Bildschirm knipst.

Pipes

Statt in eine Datei können Sie die Ausgabe eines Kommandos auch direkt ohne Zwischenschritt an einen weiteren Befehl übergeben, dazu verwenden Sie das Pipe-Zeichen (den senkrechten Strich “|”, den Sie über [AltGr]+[<] erreichen). Ist etwa die Ausgabe von ls -l zu lang, so dass sie aus dem Terminalfenster heraus scrollt, leiten Sie das überlange Listing mit dem Pipe-Zeichen an less weiter:

ls -l | less

Es ist sogar möglich, mehrere dieser Pipes nacheinander zu verwenden – Ihrer Phantasie sind hier keine Grenzen gesetzt. Wer z. B. alle laufenden Prozesse eines Systems anzeigen (ps x), diese Ausgabe direkt nach der Zeichenkette huhn durchsuchen und das Ergebnis wiederum mit less betrachten möchte, hängt alles hintereinander:

ps x | grep huhn | less

Fazit

Auch wenn die Arbeit auf der Kommandozeile für viele Linux-Einsteiger ungewöhnlich und manchmal kompliziert erscheint, erledigen Sie manches einfach schneller mit der Shell. Wenn Sie die hier gezeigten Funktionen und Fingerübungen ein bisschen trainieren, arbeiten Sie effizienter und lernen die Bash besser kennen.

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