Home / LinuxUser / 2000 / 07 / Hardcore-Linux

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Die Bash, das unbekannte Wesen

Hardcore-Linux

01.07.2000 In diesem ersten Teil einer Serie über die Bash verraten wir Ihnen erste Geheimnisse beim Umgang mit dem Befehlszeileninterpreter. Probieren Sie alles aus! Nur so kann man das erlernte Wissen behalten und vertiefen.

Ein Überblick

Der erste Kontakt mit einer Shell ist häufig ernüchternd: Sie haben ein Terminal gestartet und sehen (fast) nichts, nur einen Prompt. Das soll die hoch gelobte Shell sein?

In diesen und den folgenden Beispielen verwenden wir "$>" als Prompt. Bei Ihnen kann das – abhängig von der Konfiguration Ihrer Shell – etwas anders aussehen, z. B. so (oder noch ganz anders):

Wie man den Prompt ändert, verraten wir Ihnen in einem der folgenden Teile. Der Prompt wird im Deutschen als "Eingabeaufforderung" bezeichnet (bleiben wir lieber beim englischen Begriff) und signalisiert dem Anwender, dass er nun seine Befehle eingeben kann.

Eine Befehlszeile ist dabei etwa in der folgenden Weise aufgebaut:

Prompt Befehl Argumente und Optionen

Der genaue Aufbau einer Befehlszeile ergibt sich aus vielen Faktoren, die wir in den nächsten Teilen besprechen werden. Unter anderem spielt der angegebene Befehl eine Hauptrolle. Er bestimmt, welche Argumente und Optionen verwendet werden können. Befehlszeilen beginnen immer mit einem Befehlsnamen (oder einem Shell-abhängigen Spezialzeichen), der normalerweise direkt angegeben wird, oder mit seinem Pfad, falls es sich um einen externen Befehl handelt, der nicht im Suchpfad der Shell liegt.

Hardcore-Linux?

Die Artikel dieser Serie verlangen Ihnen mehr ab als die übrigen LinuxUser-Texte. Auch wenn Sie die Informationen teilweise unverständlich finden, sollten Sie sich davon nicht abschrecken lassen. Anhand der Beispiele können Sie die einzelnen Features der Shell ausprobieren und so einiges über den Umgang mit der Befehlszeile lernen.

Bearbeiten von Befehlszeilen

Befehlszeilen können editiert werden, solange sie nicht mit [Return] an die Shell übergeben wurden. Bis zu diesem Zeitpunkt handelt es sich quasi um eine normale Textzeile, wie sie auch in einen Editor eingegeben werden könnte. Dem Anwender stehen in der Eingabezeile eine Reihe von Editierfunktionen zur Verfügung, die durch verschiedene Tastenkombinationen aufgerufen werden.

Innerhalb einer Befehlszeile kann der Anwender mit den normalen Tasten arbeiten, vorausgesetzt sein Terminal und die Shell sind korrekt konfiguriert. [Pos1] lässt den Cursor an den Anfang der Befehlszeile springen, [Ende] an deren Ende. In der Bash können diese Aktionen auch durch [Strg+A] bzw. [Strg+E] ausgeführt werden. Hier zeigt sich ein grundlegendes Konzept der Bash: Die einzelnen Tastendrücke werden mit speziellen Funktionen verknüpft – "gebunden" heißt das im Fachjargon.

Die Bash verwendet die Funktionen der Readline-Library zur Bearbeitung der Befehlszeile. Die Funktion beginning-of-line ist an [Strg+A] gebunden, end-of-line an [Strg+E]. Diese Bindungen lassen sich auch vom Anwender verändern, siehe unten. Die Cursortasten [<--] und [-->] verschieben die Schreibmarke um jeweils eine Position. Das geht auch, wenn keine Cursortasten zur Verfügung stehen: [Strg+F] (forward-char) und [Strg+B] (backward-char) bewegen den Cursor. Auch wortweise kann der Cursor versetzt werden: [Meta+F] springt mit der Funktion forward-word nach rechts, [Meta+B] (backward-word) nach links. Da die meisten Tastaturen über keine "Meta"-Taste verfügen, emuliert Linux deren Funktion. Zum einen wird die linke Alt-Taste [Alt] als Meta-Taste belegt, zum anderen kann die Escape-Taste vor einer Meta-Tastenkombination betätigt werden. Also: die an [Meta+B] gebundene Funktion kann als [Alt+B] oder durch [Esc] mit anschließendem [B] ausgeführt werden.

Die [Einfg]-Taste sollte eigentlich den Überschreibmodus aktivieren, dies ist aber bei den wenigsten Terminals möglich. Meistens fügt diese Taste die zuletzt ausgeschnittene Textpassage links vom Cursor ein oder hat einfach gar keine Funktion. Dafür wird mit der [Entf]-Taste in den meisten Systemen das Zeichen unter dem Cursor oder links davon gelöscht.

Entsprechendes gilt für die [Backspace]- (Rückschritt-) Taste oben rechts über der Return-Taste. Welche Aktion diese Taste auslöst, kann der Anwender unter X im Terminalemulator meistens einstellen. Beim klassischen xterm entscheidet die Einstellung der Ressource backarrowKeyIsErase über deren Funktion. Einfacher ist die Einstellung bei den KDE-Terminals vom Typ kvt vorzunehmen: Dort kann mit dem Menüpunkt Terminal ein kleines Dialogfenster geöffnet werden, in dem verschiedene Einstellungen möglich sind.

Konfiguration der [Backspace]-Taste bei kvt

Die Bash stellt Ihnen natürlich noch viel mehr Funktionen zur Verfügung: Sie können beispielsweise mit der an [Meta+Backspace] gebundenen Funktion das Wort links vom Cursor löschen und es später mittels [Strg+Y] (yank) erneut in die Befehlszeile einfügen. Das Löschen von Bereichen ist noch allgemeiner: mit [Strg+Leerzeichen] definieren Sie den Anfang eines Bereichs, setzen den Cursor auf das Ende des Bereichs und löschen den Text dazwischen mittels [Strg+W] (kill-region). Ein Beispiel verdeutlicht dies:

Abbildung 1: Arbeitsweise des kill ring-Speichers

$> dd if=/dev/urandom of=del1 count=3

Am Ende dieser Befehlszeile bemerkt der Anwender, dass er statt Daten aus dem Gerät urandom vielleicht doch lieber welche aus zero verwenden will. Er kann nun mittels backward-word dreimal nach links springen und landet dann auf dem "o" von "of".

Mit der Tastenkombination [Meta+Backspace] entfernt er das falsche Wort urandom und gibt stattdessen zero ein. Dabei ist es ausreichend, wenn er ze gefolgt von der Tabulatortaste eintippt – die Bash komplettiert diese Angabe.

Durch das Return wird die geänderte Zeile ausgeführt. Die dabei ausgeführte Funktion heißt accept-line und ist neben [Return] ebenfalls an [Strg+J] und [Strg+M] gebunden. Auch das Löschen ab der Cursor-Position bis zum Zeilenende ist mit [Strg+K] (kill-line) vorgesehen, umgekehrt: Löschen bis zum Zeilenanfang erfolgt durch [Strg+U] (unix-line-discard).

Auf zwei Besonderheiten beim Editieren der Befehlszeile sollten wir noch hinweisen: Es gibt die Möglichkeit, in einer Befehlszeile mehr als eine Textpassage auszuschneiden. Alle ausgeschnittenen Passagen werden der Reihe nach in einem speziellen Speicher zwischengespeichert, dem kill-ring, siehe Abbildung 1. Jeweils die zuletzt gespeicherte Passage wird durch einen yank-Befehl ([Strg+Y]) vor der Cursor-Position eingefügt. Es besteht mittels [Meta+Y] die Möglichkeit, den kill-ring um eine Position zu rotieren, so dass die zuvor ausgeschnittene Passage eingefügt wird.

$>  mv  /etc/inputrc  /etc/inputrc.system

inputrc.system wird ausgeschnitten (z. B. mit [Meta+Backspace]), anschließend wird inputrc ausgeschnitten …

$>  cp  /etc/inputrc.system

der zuerst ausgeschnittene Text wird mit [Strg+Y] eingefügt …

$>  cp  /etc/inputrc.system  ~/.inputrc

[Meta+y] rotiert den kill-ring, und der zuletzt ausgeschnittene Text wird eingefügt.

So könnten also beispielsweise auch die Angaben einer Eingabedatei mit einer Ausgabedatei vertauscht werden. Der kill-ring-Speicher verfügt normalerweise über 30 Speicherplätze. Werden mehr Textpassagen ausgeschnitten, verschwinden die zuerst in den Speicher aufgenommenen. Zu einer Passage zählen alle nacheinander mittels einer der kill-Funktionen (kill-line, kill-region, kill-whole-line, kill-word, forward-/backward-kill-word, unix-line-discard und unix-word-rubout, nicht aber forward-backward-delete-char) gelöschten Texte, wenn keine anderen Funktionen zwischenzeitig ausgeführt wurden. Das Bewegen des Cursors mit den Cursortasten beispielsweise reicht aus, um eine kill-Aktion zu beenden. Wenn alles schief geht, gibt es eine Undo-Funktion für die Befehlszeile, die es ermöglicht, alle Änderungen schrittweise in umgekehrter Reihenfolge zurückzunehmen. Die Funktion undo ist, wie unten gezeigt wird, normalerweise an die Tastenkombination [Strg+Shift+-] (also: Strg, Shift und -) gebunden.

Alle Änderungen in der Befehlszeile können auch in einem Schritt revidiert werden, dies ist durchrevert-line – gebunden an [Meta+R] oder [Strg+Meta+R] möglich.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

995 Hits
Wertung: 69 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Suse 12.1 Bootvorgang bleibt seit Update stehen
Wimpy *, 12.02.2012 09:22, 0 Antworten
Seit Update auf Kernel 3.1.9-1.4-desktop i686 bleibt der Bootvorgang stehen. Es erscheint der gr...
N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...
Skype für 64-Bit-Prozessor u. Suse 12.1
Klaus Sigerist, 05.02.2012 11:39, 3 Antworten
Hallo Gemeinde! Ich bin nur ein einfacher Nutzer und habe Probleme mit der Installation von Skyp...