Druckversion

Die Bash - Eingabehilfen

Übersicht Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück- und - Weiter 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.:

  • Ein komplettes Auflisten des Inhaltes der History mit dem Kommando history
  • Durchsuchen der History auf der Kommandozeile mit der Tastenkombination [Ctrl]+[R] und dem darauf folgenden Suchbegriff:

    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


    Mit Eingabe jedes weiteren Zeichens wird das Muster neu bewertet und das zuletzt aufgerufene Kommando, das dem Muster entspricht, angezeigt. Wird innerhalb der Eingabe wiederholt [Ctrl]+[R] eingegeben, so wird der nächste übereinstimmende Eintrag in der History gesucht und, falls vorhanden, dargestellt.

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 Zurück Anfang Weiter

Die folgende Auflistung fasst die wichtigsten in der Bash verfügbaren Tastenkombinationen zusammen.

Zurück, Weiter

Durch die zuletzt eingegebenen Kommandos scrollen

nach links, nach rechts

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ück Anfang

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.

Korrekturen, Hinweise?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang