Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
TEIL I: Einstieg in Linux
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
TEIL II: Grundlagen
5 Kernel
6 Grundlagen aus Anwendersicht
TEIL III: Die Shell
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
TEIL IV: System- & Netzwerkadministration
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP & Co.
20 DNS-Server
21 Secure Shell
TEIL V: Die grafische Oberfläche
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
TEIL VI: Systeminterna
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
TEIL VII: Programmierung und Sicherheit
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in Computersicherheit
33 Netzwerksicherheit überwachen
TEIL VIII: Anhang
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Buch-DVDs
F Glossar
G Literatur
Stichwort
Ihre Meinung?

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
Pfeil 7 Die Shell
Pfeil 7.1 Was ist eine Shell?
Pfeil 7.1.1 Eine Shell verlassen
Pfeil 7.1.2 nologin
Pfeil 7.1.3 /etc/shells
Pfeil 7.1.4 Die Login-Shell wechseln
Pfeil 7.2 Welche Shells gibt es?
Pfeil 7.3 Welche Shell für dieses Buch?
Pfeil 7.4 Konsolen
Pfeil 7.5 screen
Pfeil 7.6 Die Shell anwenden
Pfeil 7.7 Grundlagen der Shellnutzung
Pfeil 7.7.1 Programme starten
Pfeil 7.7.2 Kommandos aneinanderreihen
Pfeil 7.7.3 Mehrzeilige Kommandos
Pfeil 7.7.4 Shell-Aliase
Pfeil 7.7.5 Verzeichniswechsel
Pfeil 7.7.6 Shellvariablen
Pfeil 7.7.7 Variablen einlesen
Pfeil 7.7.8 Kommandosubstitution
Pfeil 7.8 Ein- und Ausgabeumlenkung
Pfeil 7.8.1 Ausgabeumlenkung
Pfeil 7.8.2 Fehlerumlenkung
Pfeil 7.8.3 Die Ausgabe an eine Umlenkung anhängen
Pfeil 7.8.4 Eine Ausgabe in eine bestehende Datei umlenken
Pfeil 7.8.5 Eingabeumlenkung
Pfeil 7.9 Pipes
Pfeil 7.9.1 Duplizieren der Ausgabe mit tee
Pfeil 7.9.2 Named Pipes (FIFOs)
Pfeil 7.10 Subshells und Kommandogruppen
Pfeil 7.11 Effektives Arbeiten mit der Bash
Pfeil 7.11.1 Die Kommando-History
Pfeil 7.11.2 Automatische Vervollständigung von Dateinamen
Pfeil 7.12 xargs
Pfeil 7.13 Zusammenfassung
Pfeil 7.14 Aufgaben

Rheinwerk Computing - Zum Seitenanfang

7.11 Effektives Arbeiten mit der BashZur nächsten Überschrift

Dieses Unterkapitel soll Ihnen zeigen, wie man sich die tägliche Arbeit mit der bash (Bourne-Again-Shell) erleichtern kann.


Rheinwerk Computing - Zum Seitenanfang

7.11.1 Die Kommando-HistoryZur nächsten ÜberschriftZur vorigen Überschrift

Das einfachste Feature der bash, das Ihnen etwas Arbeit abnimmt, sollten Sie unbedingt kennen: die Kommando-History. Sie speichert die zuletzt eingegebenen Befehle. Sie können diese abrufen und brauchen sie nicht erneut einzugeben, um sie wieder aufzurufen. Zudem bietet die bash die Möglichkeit, diese Befehle zu editieren.

Eine Übersicht über die in der History enthaltenen Befehle liefert Ihnen ein bloßer Aufruf von history. Durch Angabe einer Nummer bekommen Sie die letzten n Einträge angezeigt.

Listing 7.59 Das Kommando history

user$ history 3
22 cvs commit -m ''
23 exit
24 history 3

Unerwünschte Einträge in der History können Sie über history -d <Nummer> aus der History-Liste löschen.

Scrollen in der History

Nehmen wir einmal an, es wurde der Befehl find /usr/local/bin -name "Dateiname" ausgeführt. Nun möchten Sie den gleichen Befehl mit einem anderen Dateinamen ausführen. Um nicht alles noch einmal eintippen zu müssen, können Sie durch die Cursor-Taste Nach oben den zuletzt eingegebenen Befehl in die Kommandozeile laden.

Durch erneutes Betätigen der Nach-oben-Taste lädt die bash wiederum den Befehl, der vor dem letzten aufgerufen wurde, in die Kommandozeile und so weiter – so einfach ist das. Mit der Nach-unten-Taste können Sie die History wieder vorwärts durchsuchen.

Editieren in der Befehlszeile

Um nun den alten find-Aufruf anzupassen, muss der neue Dateiname in die alte Kommandoeingabe eingefügt werden. Sie können sich mittels der Cursor-Tasten Nach links und Nach rechts in der Kommandozeile bewegen und an allen Positionen Zeichen löschen und einfügen.

Ausrufezeichen

Das Ausrufezeichen hat eine ganz besondere Funktion in der bash. Es dient zum Aufruf von Befehlen aus der History.

Vorheriger Befehl

Den zuletzt eingegebenen Befehl können Sie durch zwei Ausrufezeichen wiederholt ausführen lassen:

Listing 7.60 Erneutes Ausführen des letzten Befehls

user$ uname -a
OpenBSD eygo.sun 3.6 EYGO#0 i386
user$ !!
OpenBSD eygo.sun 3.6 EYGO#0 i386

Ebenso können Sie durch Angabe der Befehlsnummer in der Kommando-History einen der darin gespeicherten Befehle wiederholen. Die History-Nummer eines Befehls erhalten Sie durch Aufruf des history-Befehls. Der Befehl wird dann durch !n (wobei n die Befehlsnummer ist) erneut ausgeführt.

Listing 7.61 !n

user$ history 3
392 make all view
393 uname -a
394 history 3
user$ !393
OpenBSD eygo.sun 3.6 EYGO#0 i386

Suchen nach Befehlen

Ein äußerst praktisches Feature der bash ist das Suchen nach Befehlen durch Angabe der ersten Zeichen eines Befehls. Nun werden Sie sich wohl fragen, was man sich denn bitteschön darunter vorstellen kann? Man kann – wie so oft – auch diese Funktionalität am besten durch ein Beispiel erläutern.

[zB]Ein Benutzer gibt zunächst den Befehl uname und anschließend den Befehl uptime ein. Nun möchte er erst uptime, später uname erneut aufrufen, ohne diese Befehle erneut einzugeben. Erst in der Kommando-History nachzusehen ist oftmals umständlich. Daher verwendet der Benutzer die Befehlssuche.

Die simpelste Variante ist nun folgende: Der Benutzer gibt ein Ausrufezeichen und darauf unmittelbar folgend den ersten Buchstaben des Befehls, also ein »u«, ein. Daraufhin ruft die Shell den letzten Befehl auf, der mit »u« began, also uptime. Möchte der Benutzer nun aber uname aufrufen, so reicht es nicht, ein »u« hinter das Ausrufezeichen zu stellen. Hierzu muss noch der zweite Buchstabe des Befehls, also ein »n«, angegeben werden, worauf der letzte Befehl, der mit »un« begann, erneut ausgeführt wird:

Listing 7.62 Die Suche nach Befehlen

user$ !u
uptime
9:20PM up 7:30, 3 users, load averages: 0.22,
0.21, 0.17
user$ !un
uname
OpenBSD

Den letzten Befehl, der einen bestimmten String enthielt, können Sie durch den Aufruf von !?<String> erneut ausführen lassen.

Aus der Trickkiste

Bedeutend komfortabler ist dies mit der Tastenkombination Strg + R zu bewerkstelligen. Bei diesem Verfahren wird Ihnen automatisch von der bash angezeigt, welcher Befehl ausgeführt werden würde, während Sie die Kommandozeile editieren:

Listing 7.63 Strg + R

(reverse-i-search)`un': uname

Teile alter Befehle ersetzen

Erinnern Sie sich noch an den wiederholten Aufruf von find, den es zu editieren galt, um nach einem neuen Dateinamen zu suchen? Dies kann in der bash nochmals vereinfacht werden, sofern der Befehl find der zuletzt eingegebene war. Durch Angabe der zu ersetzenden Zeichenkette im letzten Befehl kann ein alter Befehl modifiziert ausgeführt werden.

Der besagte find-Aufruf sah folgendermaßen aus: find /usr/local/bin -name "Dateiname". Um nun nach dem Dateinamen zsh zu suchen und den gleichen Befehl zu verwenden, muss nach dem Muster \Alter-String\NeuerString\ eine Manipulation des alten Befehls erfolgen, also:

Listing 7.64 Das Kommando find mit neuem Dateinamen

user$ find /usr/local/bin -name "Dateiname"
...
user$ ^Dateiname^zsh^
find /usr/local/bin -name "zsh"
/usr/local/bin/zsh

Rheinwerk Computing - Zum Seitenanfang

7.11.2 Automatische Vervollständigung von DateinamenZur vorigen Überschrift

Ein ähnlich praktisches Feature wie die Kommando-History stellt die automatische Vervollständigung von Dateinamen dar. Sie wird in der bash durch die Tab-Taste angesteuert. Da unter Unix auch Programme Dateien darstellen, funktioniert dieses Feature natürlich auch mit diesen.

Bei der Nutzung der Tab-Taste sind allerdings zwei Fälle zu unterscheiden:

  • Es ist nur eine passende Datei vorhanden.
  • Es sind mehrere passende Dateien vorhanden.

Nur ein Kandidat

Für den ersten Fall erstellen wir ein Beispielverzeichnis, in dem wir eine Datei mit dem Namen abc.txt unterbringen.

Listing 7.65 Beispielverzeichnis mit einer Datei erstellen

$ mkdir test
$ touch test/abc.txt
$ cd test

Verwenden wir nun ein Programm wie /bin/ls, dem wir diese Datei als Parameter übergeben, müssen wir, da es nur eine Datei im Verzeichnis gibt, bloß die Tab-Taste betätigen, und die bash setzt uns den Dateinamen automatisch an die gewünschte Position in der Eingabe.

[zB]Versuchen Sie es einmal selbst: Wechseln Sie in das neue Verzeichnis, geben Sie ls und ein Leerzeichen ein, und drücken Sie die Tab-Taste. Die bash sollte nun den Dateinamen abc.txt automatisch in die Befehlszeile schreiben.

Mehrere Kandidaten

Nun erstellen wir im Verzeichnis noch eine Datei mit dem Namen xyz.txt. Wenn Sie das letzte Beispiel unter den neuen Bedingungen wiederholen, wird es nicht ohne weiteres funktionieren. Die bash weiß nicht von selbst, welche der beiden Dateien sie als Parameter übergeben soll. Der Trick funktioniert nun so, dass so viele Zeichen des Dateinamens eingegeben werden, bis es nur noch einen Dateinamen gibt, auf den die ersten Zeichen zutreffen – in diesem Fall genügt der erste Buchstabe der Datei (entweder ein »a« oder ein »x«), da kein Dateiname gleiche Zeichen enthält. Wird dann erneut die Tab-Taste gedrückt, vervollständigt die bash den Dateinamen wieder automatisch.

Gleiche Anfangsbuchstaben

Doch die bash kann Ihnen noch ein Stück Arbeit abnehmen. Nehmen wir an, es seien zwei Dateien abc und abd in einem Verzeichnis vorhanden. Sofern es sowieso keine Wahl zwischen den Zeichen gibt, bringt eine Betätigung der Tab-Taste immer diese Zeichen auf den Monitor. Drücken Sie also in solch einem Verzeichnis die Tab-Taste, so schreibt die bash Ihnen die beiden ersten Zeichen (da diese sowieso gleich sind und von Ihnen eingegeben werden müssten) auf den Bildschirm. Sie müssen anschließend nur noch ein »c« bzw. »d« eingeben.

Für den Fall, dass im Verzeichnis noch die Datei xyz vorhanden ist, müsste der erste Buchstabe wieder eingegeben werden, da nun wieder zwei Fälle eintreten könnten.

Doppel-Tab

Wenn mehrere Dateien vorhanden sind, können Sie die Tab-Taste auch zweimal betätigen, um sich während der Befehlseingabe eine Übersicht über die Dateien im Verzeichnis zu verschaffen. Durch dieses doppelte Betätigen liefert Ihnen die bash immer die nach Ihrer bisherigen Eingabe noch möglichen Dateiauswahlen.

Das bedeutet im Beispiel: Hätten Sie wieder die drei Dateien xyz, abc und abd im Verzeichnis, so würde Ihnen die bash zunächst alle drei auflisten. Wenn Sie dann ein »a« eingeben und die Tab-Taste drücken, gibt Ihnen die bash das »b« (die einzig sinnvolle Möglichkeit) auf dem Bildschirm aus. Wenn Sie dann wieder doppelt die Tab-Taste betätigen, gibt Ihnen die bash nun die beiden noch möglichen Dateinamen abc und abd aus.

Weiterhin ist das Tab-Taste »intelligent«: Am Anfang einer Shelleingabe ist nur ein ausführbares Kommando sinnvoll – entsprechend werden auch nur ausführbare Dateien bzw. Shellbuiltins vervollständigt.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de