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

Slides:



Advertisements
Ähnliche Präsentationen
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Advertisements

Ausführen.
Forschungszentrum caesar
Zusammenfassung der Vorwoche
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Imperative Programmierung -Entwicklungswerkzeuge
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Unix-Shells Shell: Unix-Shell-Varianten:
ARRAY oder FELD oder VEKTOR
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1A: POSIX POSIX (Portable Operating System) ist ein Standard für UNIX-Systeme. Er dient dazu, Programme portabel unter UNIX und Derivaten zu tauschen und.
Perl-Grundlagen Teile der Präsentation von A. Grupp,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Batch-Programmierung Grundlagen
UNIX-Dateisystem Vortrag: Ronny Kuhnert am
Einführung in die Programmierung Datensammlung
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Einleitung Suse Linux (System- und Software-Entwicklung) Allgemein:
SOFTWARE.
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
Linux GOIT – Der Kurs. Linux GOIT – Der Kurs Geschichte Mainframes (IBM System/360) Workstation Personal Computer Stapelverarbeitung Workstation Mehrbenutzersystem.
DOS GOIT Der Kurs. Versionen 1.0 (1981 – Erster IBM-PC) 2.0 (1983 – Unterverzeichnisse) 3.0 (1984 – Festplatten) 4.0 (1988 – DOS Shell) 5.0 (1991 – Task.
Einführung in die Programmiersprache Java
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Patrick Schmerlaib. Scriptsprachen: sind Programmiersprachen Verzichten auf Sprachelemente Vorteile: schnelle Erstellung kleiner Programme Flexible Sprache.
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
© 2000,2001,2002 Rader Udo, bestsolution.at GmbH released under the GNU Free Documentation License, Version 1.1 graphische Oberfläche.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Seminar Internet Technologien
Betriebssysteme: Unix
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Mo., – Uhr Ort: Hörsaal 5.01, Institut für Physik, Universitätsplatz 5, A-8010.
Einführung in 2 Betriebssysteme
PHP Basic.
Einführung in PHP.
Einführung in PHP 5.
Projekt SBI 2007 Migration Benutzerdaten Was geschieht wann ? M-Training.
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Kommandozeile und Batch-Dateien Molekulare Phylogenetik – Praktikum
Vortrag: Frames & Javascript.
Einführungstutorial: Linux Konsole
Shell-Programmierung
Übung 2 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 2 – Basics Vom ersten Befehl zum Plot.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Blockseminar Allgemeine Technologien II Dozent: P. Sahle März 2009 PHP in HTML Referentin: Angela Brinck.
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Übung Betriebssystem, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil I Grundlagen von Unix.
Vieren - Programmierung Im Jahre 1981 traten die ersten Viren auf, die noch sehr einfach gestrickt waren, und nicht sehr destruktiv waren. Mittlerweile.
Die Bourne-Shell (cygwin), UNIX- Tools und treetagger Seminar: Strukturierung und Analyse linguistischer Korpusdaten Leiter: Leiter: Dr. Christian Riepl.
Besitzrechte. Datei- und Verzeichnis-Besitzer Dateien und Verzeichnisse gehören einem Benutzer und einer Gruppe Besitzer wird bei ls -l in der dritten.
1 Shell Manuel Blechschmidt & Volker Grabsch CdE Sommerakademie 2006 Kirchheim.
Linux.
Betriebssysteme LB BB SS2017
 Präsentation transkript:

UNIX SHELL Christian Benz SS #!/bin/bash

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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: While-Schleife funktioniert ebenso wie in anderen Programmiersprachen.

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

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.

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)

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);

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

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

ABSCHLUSS Vielen Dank für Ihre Aufmerksamkeit Fragen? 25

QUELLENHINWEISE freiburg.de/ freiburg.de/ trippler.de/de/script_tipps/index.html trippler.de/de/script_tipps/index.html Shell-Programmierung in Unix Alexander Mayer (C&L Computer und Literaturverlag) Shell-Programmierung Wolfgang Bock (verlag moderne industrie) 26