Home / LinuxUser / 2000 / 07 / Hardcore-Linux

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Apache Open Office
(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

1152 Hits
Wertung: 69 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/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

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 7 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 1 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 0 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...
OpenLDAP Replikation
Ludwig jun. B., 25.04.2012 14:04, 2 Antworten
Hallo, bis jetzt habe ich nur gering Erfahrung mit OpenLDAP. Doch ich muss mich da jetzt einar...