17.11.2013 Aufrufe

6 Grundlagen aus Anwendersicht

6 Grundlagen aus Anwendersicht

6 Grundlagen aus Anwendersicht

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Subshells und Kommandogruppen 7.10<br />

Wie Ihnen vielleicht aufgefallen ist, wird eine Pipe beim »langen« Listing mit ls<br />

mit einem p gekennzeichnet. Dieses p steht für (Named) Pipe und zeigt Ihnen an,<br />

dass es sich um keine reguläre Datei handelt. Versuchen Sie einmal, sich mit dem<br />

Programm file den Typ der Datei anzeigen zu lassen.<br />

7.10 Subshells und Kommandogruppen<br />

In der Shell können nicht nur einfach Kommandos aneinandergereiht werden. Es<br />

gibt neben den bloßen (bedingten) Aneinanderreihungen von Kommandos nämlich<br />

noch zwei weitere Möglichkeiten, dies zu organisieren.<br />

Die erste Möglichkeit ist das Bilden einer Prozessgruppe. Diese umfasst dabei die<br />

aneinandergereihten Prozesse. Dies bietet dem Anwender neue Möglichkeiten, etwa<br />

die Ausgabeumlenkung für die gesamte Prozessgruppe. Eine Prozessgruppe wird<br />

durch zwei geschweifte Klammern begrenzt. Innerhalb der Prozessgruppe können<br />

die in Abschnitt 7.7.2 besprochenen Bedingungen zur Ausführung (etwa das Semikolon<br />

zur unbedingten Ausführung) verwendet werden.<br />

Prozessgruppe<br />

$ { ls; uname } | tee log.txt<br />

CVS<br />

Makefile<br />

TODO<br />

ZEITPLAN<br />

anhg_komref.tex<br />

...<br />

Linux<br />

Listing 7.59 Prozessgruppe<br />

Ohne Prozessgruppe müsste nun die Ausgabe jedes Prozesses explizit umgelenkt<br />

werden, aber mit Gruppe benötigen wir nur eine Ausgabeumlenkung, die wir in<br />

diesem Fall durch eine Pipe mit tee ersetzt haben.<br />

Startet man hingegen durch Verwendung normaler Klammern eine komplette Subshell<br />

(und damit einen neuen Prozess mit eigenen Bereichen im Stack) für eine<br />

Prozessgruppe, so erhält diese Subshell auch ihre eigenen Variablen.<br />

Subshell<br />

Wenn Sie also in der Subshell die Werte von Variablen verändern, so ändern sich die Werte<br />

nicht in der Parent-Shell.<br />

user$ katze=Felix<br />

user$ ( katze=Mauzi; echo $katze )<br />

Mauzi<br />

241

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!