SUCHE MIT Google
Web virtualuniversity.ch
HOME DIDAKTIK ECDL ELEKTRONIK GUIDES HR MANAGEMENT MATHEMATIK SOFTWARE TELEKOM
DIENSTE
Anmeldung
Newsletter abonnieren
Sag's einem Freund!
VirtualUniversity als Startseite
Zu den Favoriten hinzufügen
Feedback Formular
e-Learning für Lehrer
Spenden
Autoren login
KURSE SUCHEN
Kurse veröffentlichen

Suche nach Datum:

Suche mit Schlüsselwort:

Suche nach Land:

Suche nach Kategorie:
PARTNER
ausbildung24.ch - Ausbildungsportal, Seminare, Kursen... 

 
HTMLopen.de - Alles was ein Webmaster braucht

 
PCopen.de - PC LAN Netze und Netzwerke - alles was ein IT Profi und Systemtechnicker braucht

GUIDES UND TUTORIAL

Verkettung und Zusammenfassung von Kommandos

Hintereinanderausführung

Will man mehrere Kommandos ausführen lassen, braucht man nichtjedes Kommando einzeln einzugeben und mit der Eingabe des nächstenKommandos auf die Beendigung des vorhergehenden warten. Die Kommandos werden,getrennt durch Strichpunkt, hintereinander geschrieben:

kommando1 ; kommando2; kommando3

Sequentielles UND

Das zweite Kommando wird nur dann ausgeführt, wenn das erste erfolgreich war.

Kommando1 && Kommando2

Für die Bewertung der Abarbeitung wird folgende Wahrheitstabelle verwendet:

Exitstatus Kommando 1 Exitstatus Kommando 2 &&-Verkettung
Exitstatus gleich 0 --> ok Exitstatus gleich 0 --> ok Exitstatus gleich 0 --> ok
Exitstatus gleich 0 --> ok Exitstatus ungleich 0 --> nicht ok Exitstatus ungleich 0 --> nicht ok
Exitstatus ungleich 0 --> nicht ok wird nicht gestartet! Exitstatus ungleich 0 --> nicht ok

Sequentielles EXOR

(EXOR gleich Exklusives ODER) Das zweite Kommando wird nur dann ausgeführt, wenn das erste erfolglos war.

Kommando1 || Kommando2

Für die Bewertung der Abarbeitung wird folgende Wahrheitstabelle verwendet:

Exitstatus Kommando 1 Exitstatus Kommando 2 ||-Verkettung
Exitstatus gleich 0 --> ok wird nicht gestartet! Exitstatus gleich 0 --> ok
Exitstatus ungleich 0 --> nicht ok Exitstatus gleich 0 --> ok Exitstatus gleich 0 --> ok
Exitstatus ungleich 0 --> nicht ok Exitstatus ungleich 0 --> nicht ok Exitstatus ungleich 0 --> nicht ok

Zusammenfassung von Kommandos

Kommandofolgen lassen sich - analog der Blockstruktur höherer Sprachen - logisch klammern. Das Problem der normalen Hintereinander-Ausführung mit Trennung durch ";" ist die Umleitung von Standardeingabe und Standardausgabe, z. B.:

pwd > out ; who >> out ; ls >> out

Die Umleitung läßt sich auch auf die Fehlerausgabe erweitern

echo "Fehler!" # geht nach stdout
echo "Fehler!" 1>&2 # geht nach stderr

Kommandos lassen sich zur gemeinsamen E/A-Umleitung mit {...} klammern:

{ Kommando1 ; Kommando2 ; Kommando3 ; ... ; }

Wichtig: Die geschweiften Klammern müssen von Leerzeichen eingeschlossen werden!

Die Ausführung der Kommandos erfolgt nacheinander innerhalb der aktuellen Shell, die Ausgabe kann gemeinsam umgelenkt werden, z. B.:

{ pwd ; who ; ls ; } > out

Die schließende Klammer muß entweder durch einen Strichpunkt vom letzen Kommando getrennt werden oder am Beginn einer neuen Zeile stehen. Die geschweiften Klammern sind ein ideales Mittel, die Ausgabe aller Programme eines Shell-Skripts gemeinsam umzuleiten, wenn das Skript beispielsweise mit 'nohup' oder über cron gestartet wird. Man fügt lediglich am Anfang eine Zeile mit der öffnenden Klammer ein und am Schluß die gewünschte Umleitung, z. B.:

                                        {  
                                          ... 
                                          ... 
                                          ... 
                                          ... 
                                        } | mailx -s "Output from Foo" $LOGNAME 
                                        

Eine Folge von Kommandos kann aber auch in einer eigenen Subshell ausgeführt werden:

( Kommando1 ; Kommando2 ; Kommando3 ; ... )

Das Ergebnis des letzten ausgeführten Kommados wird als Ergebnis der Klammer zurückgegeben. Auch hier kann die Umleitung der Standardhandles gemeinsam erfolgen. Auch dazu ein Beispiel. Bei unbewachten Terminals "bastle" ich gerne an der Datei '.profile' des Users. Eine Zeile

( sleep 300 ; audioplay /home/local/sounds/telefon.au ) &

ist schnell eingebaut. Fünf Minuten nach dem Login rennt dann jemand zum Telefon (geht natürlich nur, wenn der Computer auch soundfähig ist). Noch gemeiner wäre

( sleep 300 ; kill -9 0 ) &

Abschließend vielleicht noch etwas Nützliches. Wenn Sie feststellen daß eine Plattenpartition zu klein geworden ist, müssen Sie nach Einbau und Formatierung einer neuen Platte oftmals ganze Verzeichnisbäme von der alten Platte auf die neue kopieren. Auch hier hilft die Kommandoverkettung zusammen mit dem Programm tar (Tape ARchive), das es nicht nur erlaubt, einen kompletten Verzeichnisbaum auf ein Gerät, etwa einen Streamer, zu kopieren, sondern auch in eine Datei oder auf die Standardausgabe. Wir verknüpfen einfach zwei tar-Prozesse, von denen der erste das Verzeichnis archiviert und der zweite über eine Pipe das Archiv wieder auspackt. Der Trick am ganzen ist, das beide Prozesse in verschiedenen Verzeichnissen arbeiten. Angenommen wir wollen das Verzeichnis /usr/local nach /mnt kopieren:

( cd /usr/local ; tar cf - . ) | ( cd /mnt ; tar xvf - )

Der Parameter "f" weist tar an, auf eine Datei zu schreiben oder von einer Datei zu lesen. Hat die Datei wie oben den Namen "-", handelt es sich um stdout bzw. stdin.

DIPLOMARBEITEN UND BÜCHER

Diplomarbeiten zum Runterladen:

Suche im Katalog:
Architektur / Raumplanung
Betriebswirtschaft - Funktional
Erziehungswissenschaften
Geowissenschaften
Geschichtswissenschaften
Informatik
Kulturwissenschaften
Medien- und Kommunikationswissenschaften
Medizin
Psychologie
Physik
Rechtswissenschaft
Soziale Arbeit
Sozialwissenschaften


JOBS
HOME | E-LEARNING | SITEMAP | LOGIN AUTOREN | SUPPORT | FAQ | KONTAKT | IMPRESSUM
Virtual University in: Italiano - Français - English - Español
VirtualUniversity, WEB-SET Interactive GmbH, www.web-set.com, 6301 Zug

Partner:   Seminare7.de - PCopen.de - HTMLopen.de - WEB-SET.com - YesMMS.com - Ausbildung24.ch - Manager24.ch - Job und Karriere