Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

UNIX SHELL Christian Benz SS 2009 19.06.2009 1 #!/bin/bash.

Ähnliche Präsentationen


Präsentation zum Thema: "UNIX SHELL Christian Benz SS 2009 19.06.2009 1 #!/bin/bash."—  Präsentation transkript:

1 UNIX SHELL Christian Benz SS 2009 19.06.2009 1 #!/bin/bash

2 INHALTSVERZEICHNIS 1.Grundlegendes Begriffserklärung – Was genau ist eine Shell? Wofür braucht man eine Shell? Historie – Die Ären der Unix-Shells 2.Stärken und Schwächen von Shells 3.Unterschiede zwischen Bash und MS-DOS 4.Welche Kommandos beherrscht eine Shell? 5.Beispielcode 2

3 1. BEGRIFFSERKLÄRUNG – WAS GENAU IST EINE SHELL? Eine Shell… Ist das englische Wort für Hülle, Schale. Bezeichnet das Bindeglied zwischen Benutzer und Betriebssystems-Kernel. Schützt den Kernel vor Benutzerzugriffen. Verbirgt innere Details des Betriebssystems. Kernel Shell Benutzer 3 1 2 3 4

4 1. BEGRIFFSERKLÄRUNG – WAS GENAU IST EINE SHELL? Syntax eines Shellbegriffes: echo Hallo Welt 4 KommandoParameter 1Parameter 2 echo Hallo Welt ist also nichts anderes als der Aufruf des Scripts echo mit den Übergabewerten Hallo und Welt, die jeweils durch Leerzeichen getrennt werden. Echo gibt die Übergabewerte auf dem Bildschirm aus. Also erscheint auf dem Bildschirm nun: Hallo Welt

5 1. BEGRIFFSERKLÄRUNG – WAS GENAU IST EINE SHELL? Shell Script: Ein Shell-Script ist eine Textdatei, die eine Ansammlung von Shell-Kommandos enthält. Ein Shell-Script kann viele Programmier- Utensilien beinhalten, die man von höheren Programmiersprachen kennt. (diese Kommandos folgen später) Erspart häufig Tipparbeit: anstatt alle Befehle einzugeben, kann man einfach ein Script aufrufen, dass alle Kommandos nacheinander durchläuft 5

6 1. WOFÜR BRAUCHT MAN EINE SHELL? Starten von Programmen teilweise nur per Kommandozeilenoperationen möglich (z.B. über Netzwerk per PuTTy) Probleme unter Linux teilweise nur per Shell lösbar (z.B. bei fehlerhaftem Grafikkartentreiber) Automatisieren von Abläufen 6

7 1. HISTORIE – DIE ÄREN DER UNIX- SHELLS 1971 Thompson-Shell (erste UNIX-Shell) 1978 Bourne-Shell (in UNIX 7) 1978 C-Shell (C-ähnliche Syntax, nicht kompatibel mit Bourne Shell) Um 1980 Korn Shell (kompatibel zur Bourne Shell, viele Funktionen aus der C-Shell) 1987 Bourne-Again-Shell (Bash) (Shell des GNU-Projekts, meist verbreitet) 7

8 2. STÄRKEN Was spricht für Shell-Scripte? Schnell zu entwickeln (relativ) portabel Kein Compiler notwendig Selbst auf Minimalsystemen verwendbar, Shell ist fast immer vorhanden Trainiert den täglichen Gebrauch der Kommandozeile Nahe Verwandtschaft zu höheren Programmiersprachen 8

9 2. SCHWÄCHEN Wann sind Alternativen vorzuziehen? Wenn es auf Effizienz und Geschwindigkeit ankommt Komplexere Anwendungen (Objektorientierte Programmiersprachen wie Java oder C++ sind vorzuziehen, Type-Checking) Mehrdimensionale Arrays, spezielle Datenstrukturen notwendig GUIs, direkte Hardwarezugriffe, externe Bibliotheken 9

10 3. UNTERSCHIEDE ZWISCHEN BASH UND MS- DOS Syntax-Unterschiede wie z.B. 10 KommandoBashMS-DOS Datei kopieren cp joe.txt joe.docCOPY JOE.TXT JOE.DOC Datei löschen rm tempDEL TEMP Datei verschieben mv vortrag.txt tmp/MOVE VORTRAG.TXT TMP\ Schreib-/Leserechte ändern chmod 400 datei.txtATTRIB +R DATEI.TXT Verzeichnisinhalt anzeigen ls (auch: dir)DIR

11 4. WELCHE KOMMANDOS BEHERRSCHT EINE SHELL? GRUNDFUNKTIONEN Die meisten gängigen Unix-Shells bieten die folgenden Funktionen: Starten von Kommandos Dateinamen-Wildcards als Kommandoargumente Bedingungen (if, case) und Schleifen (while, for) interne Kommandos (cd, read) interne Variablen ($HOME) Manipulation der Umgebungsvariablen für die neuen Prozesse Ein-/Ausgabeumlenkung Starten mehrerer Prozesse, Verkettung über Pipes Starten von Prozessen im Hintergrund Funktionen und Funktionsaufrufe Reguläre Ausdrücke 11

12 4. WELCHE KOMMANDOS BEHERRSCHT EINE SHELL? ERWEITERTE FUNKTIONEN Moderne Shells können darüber hinaus: Vervollständigung von Kommandos, Dateinamen und Variablen Editieren der Kommandozeile Wiederholung und Editieren früherer Kommandos Stoppen und erneutes Starten von Prozessen Verschieben von Prozessen aus dem Vordergrund in den Hintergrund und umgekehrt Eingebautes Kommando zur Durchführung von Berechnungen ($((2+2))) Eingebautes Kommando zum Testen von Dateieigenschaften (test) 12

13 4. ZEICHEN DER BASH (AUSZUG) # Kommentare ; Befehlsseperator (mehrere Befehle in eine Zeile) ${ } Variablensubstitution (liefert den Inhalt einer Variable) ( ) command group (führt die enthaltenen Befehle in einer Subshell aus [das Script kann die Variablen der Subshell nicht auslesen]) { } Codeblock (erzeugt eine anonyme Funktion [Variablen bleiben für das Script sichtbar] [ ] prüft den Ausdruck zwischen [ ] (z.B. bei IF- Verzweigungen) AUCH: Array-Adressierung sowie reguläre Ausdrücke > leitet stdout (>) in Datei um (folgt später detaillierter) >> wie >, aber Ausgabe wird an bestehenden Inhalt angehängt < nutzt Dateiinhalt als Eingabe 13

14 4. ZEICHEN DER BASH (AUSZUG) Vergleichsoperatoren: Strings: Var1 = Var2sind Strings gleich? Var1 != Var2sind Strings nicht gleich? Ganze Zahlen: -eqgleich -nenicht gleich -gtgrößer als -gegrößer gleich -ltkleiner als -lekleiner gleich Beispiele folgen im Beispielcode 14

15 4. ZEICHEN DER BASH (AUSZUG) KommandoEffekt man -commando Zeigt den Unix-Handbucheintrag zum Thema commando cp [datei]Kopiert eine Datei lsListet Verzeichnisinhalt auf mv [datei] Verschiebt eine Datei oder benennt sie um rm [datei]Löscht eine Datei mkdir [verzeichnis]Erstellt ein Verzeichnis rmdir [verzeichnis]Entfernt ein Verzeichnis cd [verzeichnis]Wechseln in ein anderes Verzeichnis sudo [kommando] Kommando mit besonderen Rechten ausführen chmod [rechte] [datei]Ändert die Zugriffsrechte einer Datei 15

16 4. KOMMANDOS DER BASH IF-ELSE-ANWEISUNG Einfache IF-ELSE-Anweisung if [ ${#array[*]} -lt 2 ]; then echo Weniger als 2 Array-Elemente else echo Mehr oder genau 2 Array-Elemente fi 16 Gibt aus ob das Array array less than 2 Elemente hat oder nicht

17 4. KOMMANDOS DER BASH FOR-SCHLEIFE 1 For-Schleife 17 for element in list; do command done Durchläuft jedes Element der Liste und führt ein Kommando aus.

18 4. KOMMANDOS DER BASH FOR-SCHLEIFE 2 For-Schleife (Alternative) 18 for((i=0;i<4;i++)); do echo $i done Bekannt aus hohen Programmiersprachen wie Java, C oder C++. Ausgabe: 0 1 2 3 While-Schleife funktioniert ebenso wie in anderen Programmiersprachen.

19 4. KOMMANDOS DER BASH PIPES Eine Pipe (englisch für Rohr, Röhre) verwendet die Ausgabe eines Prozesses (ein Programm in Ausführung) als Eingabe für einen weiteren. 19

20 4. KOMMANDOS DER BASH PIPES Jeder Bash-Befehl verfügt über 3 Kanäle: Durch diese 3 Kanäle ist der Befehl mit dem Betriebssystem verbunden. Mit diesen Kanälen kann man Befehle untereinander verbinden mit Hilfe dieser Symbole: 20 Kanal 0Standard-EingabeEingabe, Tastatur Kanal 1Standard-AusgabeAusgabe am Bildschirm Kanal 2Standard-FehlerFehler-Ausgabe am Bildschirm > Umleitung der Standard-Ausgabe in eine Datei. Die Datei wird dabei neu erstellt. >> Umleitung der Standard-Ausgabe in eine bestehende Datei. Die aktuelle Ausgabe wird an die Datei angehängt. Wenn die Datei nicht existiert wird sie neu erstellt. < Umleitung von einer Datei in die Standard- Eingabe eines Befehls. | (Pipe-Symbol) Umleitung der Standard-Ausgabe in die Standard- Eingabe eines anderen Befehls.

21 4. KOMMANDOS DER BASH PIPES Beispiele: 21 A) C) D) Das Ergebnis des Befehls ls (Kanal 1) wird in die Datei liste umgeleitet. Die Standard-Ausgabe von befehl1 wird nach befehl2 umgeleitet. Dieselbe Funktion wie bei B). Die Ausgabe von befehl1 wird in eine Zwischenlagerungsdatei gespeichert und als Eingabe für befehl2 genutzt. Der Befehl rpm listet alle installierten Pakete. Da diese jedoch nicht alphabetisch sortiert sind, wird die Ausgabe des Befehls auf die Eingabe des Befehls sort umgeleitet. sort gibt die Liste alphabetisch sortiert am Bildschirm aus. B)

22 4. KOMMANDOS DER BASH Kommandosubstitution Kommandosubstitution heißt ein Verfahren, bei dem ein Kommando zum Teil oder komplett aus einer Ausgabe besteht. Beispiel: echo Im Verzeichnis existieren `ls | wc -w` Einträge Bildschirmausgabe: Im Verzeichnis existieren 15 Einträge Beispiel in Java (zum Nachempfinden): 22 Listet auf und zählt alle Wörter (wc = Word Count) Beispiel: 15 System.out.println(Im Verzeichnis existieren +countWords(listDir())+ Einträge);

23 4. KOMMANDOS DER BASH CronTabs/CronJobs: automatisieren Vorgänge und starten Scripts automatisch zu angegebenen Zeitpunkten Beispiel: 23 5 Minuten nach jeder vollen Stunde alle 5 Minuten Sonntags, 23:59 Uhr Täglich, 0:00 Uhr Mo-Fr., jeweils 1:20 Uhr und 1:30 Uhr

24 5. BEISPIELPROGRAMM (E-MAIL VALIDIERUNG) 24 Nun folgt ein kleines Codebeispiel anhand einer E-Mail-Validierung

25 ABSCHLUSS Vielen Dank für Ihre Aufmerksamkeit Fragen? 25

26 QUELLENHINWEISE www.wikipedia.de http://sommercampus2004.informatik.uni- freiburg.de/ http://sommercampus2004.informatik.uni- freiburg.de/ http://linuxseiten.kg-it.de/ http://www.jan- trippler.de/de/script_tipps/index.html http://www.jan- trippler.de/de/script_tipps/index.html http://linuxseiten.kg-it.de/ Shell-Programmierung in Unix Alexander Mayer (C&L Computer und Literaturverlag) Shell-Programmierung Wolfgang Bock (verlag moderne industrie) 26


Herunterladen ppt "UNIX SHELL Christian Benz SS 2009 19.06.2009 1 #!/bin/bash."

Ähnliche Präsentationen


Google-Anzeigen