Bash kurz & gut (eBook)
176 Seiten
O'Reilly Verlag
978-3-95561-765-3 (ISBN)
Kapitel 5. Umleitungen (Redirections)
Alle drei Standardkanäle, die voreingestellt mit dem kontrollierenden Terminal verbunden sind, und weitere Ein- bzw. Ausgabekanäle lassen sich mit Hilfe von Umleitungen oder Redirections mit anderen Kanälen oder Filedescriptoren verbinden.
Neue Kanäle erzeugen
Der eingebaute Befehl exec
(„Eingebaute Befehle, alphabetisch sortiert“) erlaubt das Bereitstellen und die Verwendung zusätzlicher Descriptoren. Eine Reihe von Redirection-Operatoren steuert in der Befehlszeile die Umleitungen. Tabelle 5.1 fasst sie zusammen. Ihnen kann eine Kanalnummer vorbzw. nachgestellt werden, um andere als die Standarddescriptoren zu adressieren. Die Standarddescriptoren sind:
-
Descriptor
0
: Standardeingabekanal. Voreingestellt in der Tastatur verbunden, ließt Eingaben für Programme. -
Descriptor
1
: Standardausgabekanal. Voreingestellt mit dem Terminal verbunden, schreibt Ausgaben von Programmen. -
Descriptor
2
: Standardfehlerkanal. Oft mit dem Terminal verbunden, schreibt dort Fehlermeldungen und Warnungen.
Diese Descriptoren stehen immer zur Verfügung, die Bash verwendet sie voreingestellt. Eine Reihe von speziellen Dateinamen interpretiert die Bash als Filedescriptoren, wenn sie in einem Redirection-Kontext auftreten:
-
/dev/fd/
Nummer: Erzeugt bzw. nutzt den Filedescriptor mit der angegebenen Nummer. Dupliziert ihn bei Bedarf. -
/dev/stdin
: dupliziert den Standardeingabekanal. -
/dev/stdout
: dupliziert den Standardausgabekanal. -
/dev/stderr
: dupliziert den Standardfehlerkanal. -
/dev/tcp/
Host/
Port: Die Bash versucht (einen korrekten Host und Port vorausgesetzt), eine TCP-Verbindung zu dem Socket aufzubauen. -
/dev/udp/
Host/
Port: Die Bash versucht eine UDP-Verbindung zu Host mit Port aufzubauen.
Mehrere Kanäle lassen sich verbinden, wobei die Reihenfolge eine entscheidende Rolle spielt: ...>
file 2>&1
verbindet Standardfehlermit Standardausgabekanal und schreibt das Ergebnis nach file, während ... 2>&1 >
file nur den Standardausgabekanal in file speichert.
Ab Version 4.0 kennt die Bash mit |&
ein Synonym für 2>&1 |
. Der Standardfehlerkanal wird in die Pipe umgeleitet.
Die meisten Redirection-Operatoren lassen sich für verschiedene Kanäle (n, m) anwenden. Die Angabe einer fehlerhaften Nummer (eines nicht existierenden Filedescriptors) führt zu einer Fehlermeldung vom Typ Redirection Error. In Verbindung mit &
erzeugen die Operatoren neue Descriptoren als Kopie bestehender.
Der Unterschied zwischen >
und >>
besteht darin, dass >
bestehende Files löscht und anschließend (leer) neu anlegt. >>
hängt neue Inhalte an das Ende bereits bestehender Files an oder erstellt sie neu, falls sie bisher noch nicht existierten. Wichtig ist die Shelloption noclobber
: Sie verhindert das Überschreiben bestehender Dateien. Da dies oft unhandlich in der Anwendung ist, ermöglicht der Operator >|
auch bei aktivem noclobber
(ebenfalls bei ungesetzter Option) bestehende Files zu überschreiben.
Das Öffnen eines Files gleichzeitig zum Lesen und Schreiben ist nur in Ausnahmefällen (bei Gerätedateien etwa) sinnvoll.
Ebenfalls ab Version 4 kennt die Bash diesen Operator:
&>>
Datei verbindet Standardausgabe- und -fehlerkanal und leitet beide in die angegebene Datei.
Tabelle 5.1 Redirection-Operatoren; n, m sind wählbare Kanalnummern
Code | Funktion |
---|
<n | Eingabeumleitung, voreingestellt ist Kanal |
n> | Ausgabeumleitung, voreingestellt ist Kanal |
n& >file | Ausgabeumleitung von Kanal n in file |
2> | Fehlerausgabeumleitung |
2>&1 | verbindet Standardausgabe- und -fehlerkanal |
|& | Synonym für 2>&1, neu in Bash 4.0 |
n>&m | verbindet Kanal n mit m |
>&file | Standardfehler- und -ausgabeumleitung in file |
&>file | Standardfehler- und -ausgabeumleitung in file |
n<file | file als Eingabekanal n |
n>file | file als Ausgabekanal n, |
n>|file | wie n>file, übersteuert |
n>m | kopiert n als Ausgabekanal m |
n<m | kopiert n als Eingabekanal m |
n>>file | n als Ausgabekanal an file anhängen |
&>>file | Standardfehler- und -ausgabe an file anhängen, neu in Bash 4.0 |
<&- | schließt den Standardeingabekanal |
>&- | schließt den Standardausgabekanal |
n<&- | schließt Eingabekanal n |
n>&- | schließt Ausgabekanal n |
n<>file | n als Ein- und Ausgabekanal mit file verbinden |
<<[-]End | Here Document, durch End-String begrenzt |
<<<End | Here String, durch End-String begrenzt |
...|... | Pipe: verbindet linke Standardausgabe mit rechter Standardeingabe |
Ab Version 4.1 expandiert die Bash links von Redirection-Operatoren Variablen und öffnet oder schließt (abhängig vom Operator) die vom Variableninhalt repräsentierten Filedescriptoren.
Ab Version 4.3: Mit dem neuen Feature {
x
}<
word
erlaubt die Bash Wörter in der Form {array[
Index
]}
und kann dabei spezielle (Array-)Variablen verwenden, wie beispielsweise $BASH_XTRACEFD
(„Erweiterte Bash-Variablen“).
Die Bash hat dabei keinen Mechanismus, um sicherzustellen, dass x geöffnet bleibt.
Here Documents/Strings
Diese speziellen Umleitungen veranlassen die Shelleingaben so lange von der aktuellen Quelle zu lesen, bis eine End-Kennung erreicht ist. Dieser Kennung dürfen keine (unsichtbaren, nicht druckbaren oder sonstigen) Zeichen folgen, damit die Bash die Marke korrekt erkennt.
Innerhalb eines Here Documents/Strings führt die Bash keine Expandierungen oder Ersetzungen durch, sofern die End-Kennung eine Maskierung (Quotes, z.B. 'ENDE'
) aufweist.
Die Begrenzung selbst erkennt die Bash nach Entfernen der Maskierung(en), also in diesem Beispiel als ENDE
.
Wenn die End-Kennung von keiner Maskierung umfasst wird, führt die Bash Parameter-, Befehls- und Prozessersetzungen und arithmetische Expandierungen innerhalb des Here...
Erscheint lt. Verlag | 18.6.2014 |
---|---|
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Schlagworte | Bash • Bash-Shell • Linux • Shell • Shell-Programmierung • UNIX |
ISBN-10 | 3-95561-765-3 / 3955617653 |
ISBN-13 | 978-3-95561-765-3 / 9783955617653 |
Haben Sie eine Frage zum Produkt? |
Größe: 606 KB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich