Die Bash - Eingabehilfen |
Übersicht |
Es ist durchaus typisch, dass bestimmte Befehlssequenzen immer wiederkehren. Welche Möglichkeiten die Bash uns bietet, den Tippaufwand gering zu halten, soll Gegenstand dieses Abschnitts sein.
Expansion von Datei- und Kommandonamen |
Beispiel: Durch Eingabe von
user@sonne> z[Tab] |
wird die Bash mit einem Signalton reagieren.
Durch Eingabe von [Tab] versucht die Bash die bisher eingegebenen Zeichen eindeutig einem Datei- oder Kommandonamen zuzuordnen. Dazu durchsucht sie das aktuelle Verzeichnis und alle in der Shell-Variablen »$PATH« angegebenen Verzeichnisse nach entsprechenden Einträgen.
user@sonne> z[Tab][Tab] |
veranlasst die Bash, alle möglichen Ergänzungen am Bildschirm anzugeben:
user@sonne> z[Tab] zcat zdiff zgrep zipcloak zipnote zless znew zcmp zforce zip zipinfo zipsplit zmore zsoelim |
Ist der Name eindeutig aufzulösen, ergänzt die Bash selbstständig:
user@sonne> zd[Tab] user@sonne> zdiff |
Dieser Mechanismus funktioniert auch bei Shell-Variablen und Heimat-Verzeichnissen:
user@sonne> $PA[Tab] user@sonne> $PATH user@sonne> ls ~ro[Tab] user@sonne> ls ~root/ |
Das Gedächtnis der Bash |
Das Kommando-Gedächtnis der Bash, im weiteren Text kurz History genannt, ist einer der wesentlichen Elemente, die ein komfortables Arbeiten mit der Kommandozeile erst ermöglichen. Das wird einem spätestens bewusst, wenn man sie einmal nicht zur Verfügung haben sollte, und nach einem Tippfehler womöglich die gesamte Zeile nochmals eingeben muss.
In der History werden die letzten auf der Kommandozeile getätigten Eingaben gespeichert. Diese können bei Bedarf über verschiedene Wege abgefragt werden. Damit diese Informationen auch nach einer Unterbrechung bestehen bleiben, wird die History beim Beenden der Shell oder nach Aufforderung in die Datei ».bash_history« geschrieben, die sich standardmäßig im Heimatverzeichnis des Nutzers befindet.
Die Größe der History und der History-Datei werden dabei von den Umgebungsvariablen »$HISTSIZE« und »$HISTFILESIZE« bestimmt. Der Standardwert für beide beträgt 500 Zeilen.
user@sonne> echo $HISTSIZE
$HISTFILESIZE 500 500 |
Der einfachste Weg, um auf die History zuzugreifen, geht über die - und - Pfeiltasten der Tastatur, mit Hilfe derer man durch die gespeicherten Eingabezeilen scrollen kann. Hat man den entsprechenden Eintrag gefunden, kann dieser bei Bedarf editiert und anschließend ausgeführt werden.
Andere Möglichkeiten zum Zugriff auf die History sind die Verwendung spezieller Kommandos und Tastenkombinationen. Hierzu zählen u.a.:
user@sonne> [Ctrl]+[R] # Nach Eingabe von "fi" (reverse-i-search)`fi': chown :fibel bla # Nach Eingabe von "fin" (reverse-i-search)`fin': find /tmp -user user # Nach Eingabe von "fin[CtrL]+[R]" (reverse-i-search)`fin': find /root -name "*txt" 2>1 |
Ein gezieltes Zugreifen auf die einzelnen durchnummerierten Zeilen der History wird außerdem ermöglicht durch:
!! bzw. !-1
Letztes Kommando
!n
Auf die n-te Zeile der History
!-n
Auf die von der aktuellen Zeile n Schritte rückwärts gehende Zeile
!string
Auf das letzte Kommando, das mit »string« begonnen hat
!?string[?]
Auf die letzte Kommandozeile, die am meisten mit »string« übereinstimmt. Wenn die Zeichenkette direkt mit einem NEWLINE endet, kann das abschließende Fragezeichen entfallen.
^string1^string2^
Wiederholung des letzten Kommando, wobei die Zeichenkette »string1« durch die Zeichenkette »string2« substituiert wird.
!#
Vor der Ausführung der Kommandozeile wird diese ausgegeben.
Um einzelne als auch aufeinander folgende Kommandos zu wiederholen bzw. zu editieren und anschließend abzuspeichern, verwendet man das Kommando fc, welches den Befehl bzw. die Befehlsliste an den per Umgebungsvariable »$FCEDIT« oder - falls erstere Variable nicht gesetzt ist - »$EDITOR« gesetzten Editor übergibt und nach Beendigung dessen die zurück gegebenen Kommandozeilen ausführt.
user@sonne> fc find find /tmp -user user ~ ~ ~ ~ ... ~ "/tmp/bash960371544" 1L, 23C 1,1 All |
Wichtige Tastenkürzel der Bash |
Die folgende Auflistung fasst die wichtigsten in der Bash verfügbaren Tastenkombinationen zusammen.
,
Durch die zuletzt eingegebenen Kommandos scrollen
,
Cursor bewegen
[Pos 1], [Ende]
Cursor an Beginn/Ende der Zeile
[Ctrl]+[A], [Ctrl]+[E]
Wie oben
[Alt]+[B], [Alt]+[F]
Cursor um ein Wort vor/zurück
[Alt]+[D]
Wort löschen
[Ctrl]+[K]
Alles bis Zeilenende löschen
[Ctrl]+[T]
Die beiden vorangegangenen Zeichen vertauschen
[Alt]+[T]
Die beiden vorangegangenen Wörter vertauschen
[Ctrl]+[L]
Bildschirm löschen
[Ctrl]+[R]
Bereits eingegebenes Kommando suchen
Anmerkung: Die Belegung der Tasten ist hochgradig konfigurierbar. Die dargestellten Kombinationen entsprechen den »üblichen« Standardeinstellungen, so wie sie zumeist ausgeliefert werden.
Alias |
Zur Abkürzung immer wiederkehrender Kommandofolgen lassen sich für diese so genannte Aliasse definieren. Eine Alias wird mit dem Kommando alias erzeugt:
user@sonne> alias dir='ls -l' user@sonne> alias md=mkdir user@sonne> alias rd=rmdir user@sonne> alias rename=mv user@sonne> alias cdlin='cd /usr/src/linux' |
Ein Alias wird genauso benutzt wie das entsprechende Kommando:
user@sonne> dir / insgesamt 65 drwxr-xr-x 2 root root 2048 Dec 14 13:23 bin drwxr-xr-x 3 root root 1024 Dec 21 10:59 boot drwxr-xr-x 2 root root 1024 Dec 14 13:05 cdrom drwxr-xr-x 6 root root 30720 Dec 29 08:50 dev ... user@sonne> md directory user@sonne> rd directory user@sonne> rename nt refuse user@sonne> cdlin; pwd /usr/src/linux |
Ein Alias existiert bis zum Ende der Shell, in der er definiert wurde oder bis zum expliziten Löschen mittels unalias:
user@sonne> unalias dir user@sonne> unalias cdlin user@sonne> cdlin bash: cdlin: command not found # ein Alias ist nur in der Shell seiner Definition bekannt: user@sonne> bash user@sonne> md tmp bash: md: command not found |
Möchten Sie einen Alias permanent einrichten, so tragen Sie die entsprechende Befehlszeile in die Datei .profile in Ihrem Home-Verzeichnis ein. Der Aufruf von alias ohne Argumente bewirkt eine Auflistung aller definierten Abkürzungen.