Für schnelleres arbeiten auf der Shell!

Als ich vor knapp 4 Jahren mal einige ruhige Minuten hatte, wollte ich meine Beweglichkeit auf der Shell ein wenig ausbauen:

Ich bin dabei auf einen englischen Blog-Eintrag von Alan Skorkin gestoßen, der mich recht gut vorwärts gebracht hat. Weshalb ich diesen dann übersetzte und als Nachschlagewerk auf meiner owncloud abgelegt hatte.
Ich hab ihn dann auf eine meiner anderen Seiten gepostet. Ich schaue immer mal wieder rein, für seltener benutzte Tastenkombinationen.

Bash Shortcuts For Maximum Productivity

by Alan Skorkin on September 15, 2009
Übersetzt durch Dirk Mader am 22.02.2013

Es wird dich vielleicht überraschen (oder auch nicht), das die BASH eine reichhaltige Liste an Abkürzungen hat, die dein Leben, beim arbeiten mit der Kommandozeile, viel einfacher macht. Das Bearbeiten der Komandozeile wird durch die GNU Readline Bibliothek ermöglicht. Diese Bibliothek wird neben der BASH auch von vielen andern *nix Programmen verwendet, das Lernen einiger dieser Abkürzungen wird dir also nicht nur erlauben wie verrückt auf der Komandozeile umher zu schwirren 🙂 , sondern lässt dich bestimmt auch verschiedene *nix Anwendungen, die Readline verwenden, besser beherrschen. Ich will jetzt nicht zu sehr ins Thema Readline abschweifen, nur noch eines Sache dazu: Standardmäßig verwendet Readline emacs Tasten-Bindungen, es ist aber auch mögliche das auf die Vi Editiermodus um zu schalten, ich ziehe es allerdings bei den meisten Anwendungen vor, den Standard zu lernen (Ich bin der Meinung es macht mir das Leben leichter nicht immer alles zu Individualiesieren). Wenn du bereits Erfahrungen mit emacs hast werden dir viele der folgenden Abkürzungen nicht neu sein, anders als dem Rest von uns 🙂

Command Editing Shortcuts

Strg + a – Gehe zum Anfang der Kommandozeile
Strg + e – Gehe zum Ende der Kommandozeile
Strg + k – Lösche vom Cursor bis zum Ende der Kommandozeile
Strg + u – Lösche vom Cursor bis zum Anfang der Kommandozeile
Strg + w – Lösche vom Cursor bis zum Anfang des Wortes (bedeutet es löscht ein Wort zurück)
Strg + y – Fügt hinter dem Cursor das Wort oder den Text, der durch einen der Lösch-Abkürzungen entfernt wurde, an
Strg + xx – Wechselt zwischen der aktuellen Position des Cursors und dem Anfang der Kommandozeile hin und her
Alt + b – Gehe ein Wort zurück (oder zum Anfang der Wortes unter dem Cursor)
Alt + f – Gehe ein Wort vor (oder zum Ende des Wortes unter dem Cursor)
Alt + d – Lösche bis zum Ende des Wortes beginnend beim Cursor (das gesammte Wort wenn sich der Cursor am Wortanfang befindet)
Alt + c – Ändere in Großschreibung vom Cursor bis zum Ende des Wortes (das gesammte Wort wenn sich der Cursor am Wortanfang befindet) (Capitalize)
Alt + u – Ändere alle Buchstaben vom Cursor bis zum Ende des Wortes in Großbuchstaben
Alt + l – Ändere alle Buchstaben vom Cursor bis zum Ende des Wortes in Kleinbuchstaben
Alt + t – Tausche aktuelles Wort mit dem davor
Strg + f – Gehe ein Zeichen vor
Strg + b – Gehe ein Zeichen zurück
Strg + d – Lösche das Zeichen unter dem Cursor
Strg + h – Lösche das Zeichen vor dem Cursor
Strg + t – Tausche das Zeichen unter dem Cursor mit dem davor

„Kommando wiederholen“ Abkürzungen

Strg + r – Durchsuche die Historie rückwärts
Strg + g – Unterbreche die Historien Rückwärts-suche
Strg + p – Vorheriges Kommando in der Historie (Gehe rückwärts durch die Kommando Historie)
Strg + n – Nächstes Kommando in der Historie (Gehe vorwärts durch die Kommando Historie)
Alt + . – Benutze das letzte Wort des vorherigen Kommandos

Kommando Kontroll Abkürzungen

Strg + l – Lösche den Bildschirm
Strg + s – Stoppe die Ausgabe auf dem Bildschirm (für lang laufende, „geschwätzige“ Kommandos)
Strg + q – Erlaube die Ausgabe auf dem Bildschirm (wenn man sie mit dem vorherigen Kommando gestopt hat)
Strg + c – Untbreche ein Kommando
Strg + z – Pausiere/Stoppe ein Kommando

Bash Bang (!) Kommandos

BASH hat auch ein hilfreiche Fähigkeit, die dir mit ! (bang) ein paar irre Sachen mit den BASH History erlauben.

!! – Wiederhole das letzte Kommando
!blah – Starte das letzte Kommando mit ‚blah‘ (z.B. !ls)
!$ – Benutze das letzte Wort des vorherigen Kommandos (das selbe wie Alt + .)
!* – Benutze die letzte Kommandozeile ausser dem ersten Wort (z.B. Wenn du ‚find -name ne_datei.txt /‘ eingibst, führt dir !* ‚-name ne_datei.txt /‘ aus)

!:n – Benutzt gibt das n-te wort der vorherigen Zeile aus. Wobei „0“ das Kommando ist, „1“ erster Parameter,Schalter oder Pfad, usw. Achtung es werden durch space getrennte Zeichen oder Zeichenketten gezählt.
!n – gibt die Zeile an position n in der History aus
!-n – gibt die n-letzte Zeile in der History aus (also !-2 ist die Vorletzte Zeile in der History etc)

Modifyer werden am Ende eines Bang Kommandos mit doppelpunkt angehängt
h – löscht den Teil einer Ausgabe ab dem letzten / (Slash) also z.B. „touch /home/testuser/testordner/testdatei.txt“ würde man mit „cd !$:h“ in den ordner /home/testuser/testordner wechseln
t – löscht den Teil einer Ausgabe vor dem letzten /
r – löscht den letzten suffix inklusive des punktes etwa von einem Dateiname
e – gibt nur den letzten suffix inklusive des punktes aus
p – Zeigt das letzte Kommando an und fügt es als das letzte Kommando zur Kommando Historie hinzu ohne es auszuführen
q – setzt die Ausgabe in einfache Anführungszeichen (single Quota)
x – setzt Wörter der Ausgabe in einfache Anführungszeichen… zwischen
s – suchen und ersetzen einer Zeichenfolge in dem Bang Kommando z.B. vorheriges kommando ’ssh sierrax@172.16.1.1 „ls“‚ !!:s/ls/hostname führt das Kommando ssh sierrax@172.16.1.1 „hostname“

Da ist noch eine weitere hilfreiche Sache die du verwenden kannst. Das ^^ ‚Kommando‘. Wenn du ein Kommando eingibst und startest, kannst du die vorherige Kommandozeile mit den Zirkumflex (^) verändern. Dabei löscht das erste Zirkumflex den ersten Suchbegriff der dahinter steht und ersetzt ihn durch den Text der nach dem zweiten Zirkumflex steht. z.B.

$ ls -al
total 12
drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:38 .
drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:34 ..
-rwxr-xr-x 1 Administrator None 1150 Jul 21 23:34 .bash_profile
-rwxr-xr-x 1 Administrator None 3116 Jul 21 23:34 .bashrc
drwxr-xr-x+ 4 Administrator None 0 Jul 21 23:39 .gem
-rwxr-xr-x 1 Administrator None 1461 Jul 21 23:34 .inputrc
$ ^-al^-lash
ls -lash
total 12K
0 drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:38 .
0 drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:34 ..
4.0K -rwxr-xr-x 1 Administrator None 1.2K Jul 21 23:34 .bash_profile
4.0K -rwxr-xr-x 1 Administrator None 3.1K Jul 21 23:34 .bashrc
0 drwxr-xr-x+ 4 Administrator None 0 Jul 21 23:39 .gem
4.0K -rwxr-xr-x 1 Administrator None 1.5K Jul 21 23:34 .inputrc

Hier ersetzt das Kommando ^-al^-lash das -al durch -lash in dem vorherigen ls Kommando und führt die veränderte Zeile gleich aus.

Es gibt noch viel, viel mehr was man mit Abkürzungen in der BASH tun kann. Aber die gezeigten Abkürzungen sind schon 90% des Weges zur maximalen BASH Produktivität. Wenn du denkst das ich eine essenzielle BASH Abkürzung vergessen habe ohne die man nicht leben kann (ich bin mir sicher das ich das habe), dann lasse es mich wissen und ich werde den Eintrag aktualisieren.

Dieser Beitrag wurde unter Allgemein, Shell veröffentlicht. Setze ein Lesezeichen auf den Permalink.