Linuxfibel - Die Bash - Eingabehilfen
Aus LinWiki.de
Inhaltsverzeichnis |
[Bearbeiten] Ü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.
[Bearbeiten] 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/
[Bearbeiten] 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 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
[Bearbeiten] Wichtige Tastenkürzel der Bash
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]+[U]
- Alles vor dem Cursor ausschneiden/löschen
- [Ctrl]+[K]
- Alles nach dem Cursor auschneiden/löschen
- [Ctrl]+[Y]
- Ausgeschnittenes einfügen
- [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.
[Bearbeiten] 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 .bashrc in Ihrem Home-Verzeichnis ein. Der Aufruf von alias ohne Argumente bewirkt eine Auflistung aller definierten Abkürzungen.


