Successfully reported this slideshow.
Your SlideShare is downloading. ×

Unixkurs 06 - Shellskripte

Ad

Unixkurs
Shellskripte

Ad

"Although most users think of the shell as an
interactive command interpreter, it is really a
programming language in whic...

Ad

Was ist eine Shell
• Schnittstelle zwischen dem Benutzer und
dem Betriebssystem
• unter Unix: Kommandozeileninterpreter
• ...

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Loading in …3
×

Check these out next

1 of 34 Ad
1 of 34 Ad

Unixkurs 06 - Shellskripte

Download to read offline

Folien aus einem Unixkurs, den ich gehalten habe.

Im Kurs ging es um

Allgemeines zu Unix
Text editieren mit VIM Standard-Unix-Befehle Dateisysteme
Useraccounts und Rechte Prozess- und Speicherverwaltung Shellscripting

Folien aus einem Unixkurs, den ich gehalten habe.

Im Kurs ging es um

Allgemeines zu Unix
Text editieren mit VIM Standard-Unix-Befehle Dateisysteme
Useraccounts und Rechte Prozess- und Speicherverwaltung Shellscripting

Advertisement
Advertisement

Unixkurs 06 - Shellskripte

  1. 1. Unixkurs Shellskripte
  2. 2. "Although most users think of the shell as an interactive command interpreter, it is really a programming language in which each statement runs a command. Because it must satisfy both the interactive and programming aspects of command execution, it is a strange language, shaped as much by history as by design." Brian Kernighan
  3. 3. Was ist eine Shell • Schnittstelle zwischen dem Benutzer und dem Betriebssystem • unter Unix: Kommandozeileninterpreter • Eingabe und Ausgabe in der Konsole • Schleifen,Variablen und Kontrollstrukturen vorhanden • oft vollständige Programmiersprachen
  4. 4. Effizientes arbeiten • Aufgabe:“kopiere alle Dateien in diesem Verzeichnis mit der Dateiendung .doc in dasVerzeichnis /tmp/” • ls => cp datei1.doc, cp datei2.doc, ... • gehts das effizienter?
  5. 5. •Aufgabe:“kopiere alle Dateien in diesemVerzeichnis mit der Dateiendung .doc in das Verzeichnis /tmp/” • cp *.doc /tmp/ • Stern (*) steht für beliebig viele Zeichen Effizientes arbeiten
  6. 6. cp *.doc /tmp/ cp datei1.doc datei2.doc /tmp/ "Globbing" Aus Zeiten vor der Bourne- Shell. Programm "glob". Beim Globbing ersetzt die Shell Wildcards mit einer Zeichenkette, die alle passenden Dateinamen auflistet
  7. 7. Globbing • Beim Globbing ersetzt die Shell Wildcards mit einer Zeichenkette, die alle passenden Dateinamen auflistet • d.h. Programmen wie cp bleibt diese Arbeit erspart
  8. 8. Zeichen mit besonderer Bedeutung Zeichen Bedeutung * beliebig viele Zeichen ? ein beliebiges Zeichen [0-3] Zahl zwischen 0 und 3 [xyz] x,y oder z [:upper:] Großbuchstabe
  9. 9. Beispiele • *.* - Alle Dateien die einen Punkt im Namen enthalten • [:upper:]*.* - Dateiname muss mit Großbuchstaben beginnen • ??? - Dateiname muss 3 Zeichen lang sein
  10. 10. {string1, string2} • ls *.{cc,hh} => ls *.cc *.hh => Alle Dateien mit der Endung cc oder hh • Zeichenketten in geschweiften Klammern werden expandiert ohne das eine entsprechende Datei vorhanden sein muss • Kombinationen erzeugen: • echo {A,G,C,T}{A,G,C,T}{A,G,C,T} • echo {0,1}{0,1}{0,1}{0,1}{0,1}{0,1}{0,1}
  11. 11. Unix Pipes • Erlauben das Hintereinanderschalten von Programmen • Beispiel: who | grep zx => Welche User mit einem zx im Username sind eingeloggt?
  12. 12. Unix-Kurs • Die Kanäle werden über Pipes verbunden who Eingabe (0) Fehler (2) grep zx
  13. 13. Pipesyntax • programm1 | programm2 | programm3 • programm > ausgabe • programm < eingabe • programm >> ausgabe • programm 1> ausgabe 2> fehler
  14. 14. Programmierzutaten • Wertzuweisung • Arithmetik • Vergleichsoperatoren • Kontrollstrukturen • Schleifen Programmier sprache
  15. 15. Wertzuweisung • Einem Bezeichner kann mit “=” ein Wert zugewiesen werden • Auf den Wert kann durchVoranstellen eines $-Zeichens zugegriffen werden foo=23 echo $foo
  16. 16. Kommandosubstitution • Einem Bezeichner kann mit “=” und `befehl` die Ausgabe von befehl zugewisen werden foo=`ls` echo $foo
  17. 17. Befehle gruppieren • Nacheinander: • befehl1; befehl2 • Nur wenn befehl1 erfolgreich (UND): • befehl1 && befehl2 • Nur wenn befehl1 nicht erfolgreich (ODER): • befehl1 || befehl2
  18. 18. Befehle gruppieren ls *.doc > /dev/null && echo "Dokumente gefunden" ls *.doc > /dev/null || echo "keine Dokumente gefunden"
  19. 19. Funktionen • mit "Bezeichner () {Befehl1; Befehl2;...}" können sie mehrere Befehle zur Wiederverwendung gruppieren und einem Bezeichner zuweisen. searchdocfiles () { echo "Suche Dokumente"; ls *.doc > /dev/null && echo "Dokumente gefunden"; }
  20. 20. Arithmetik • die Shell kann nur mit ganzen Zahlen rechnen • Syntax • arithmetische Expansion • spezielle Zuweisung mit let
  21. 21. Arithmetik echo $((23+42)) 65 let a=23+42 echo $a 65
  22. 22. Arithmetik Operatoren Bedeutung +, - Addition, Subtraktion &,|,^ bitweises AND,OR,XOR *, /, % Multiplikation, Division,Modulo <<, >> Links/Rechtsshift
  23. 23. Bedingungen • mit dem Befehl test kann man Vergleiche durchführen, und Eigenschaften von Dateien abfragen • Syntax • test Operand1 Operator Operand2 • [ Operand1 Operator Operand2 ]
  24. 24. Bedingungen test 23 -eq 42 && echo "wahr" [ 23 -eq 42 ] && echo "wahr"
  25. 25. Vergleichsoperatoren Operatoren wahr wenn a = b die Zeichenketten a und b gleich sind a != b die Zeichenketten a und b ungleich sind -z a die Zeichenkette a gleich 0 ist x -eq y die Zahlen x und y gleich sind x -lt y x kleiner als y ist x -gt y x größer als y ist x -ne y x ungleich y ist
  26. 26. Tests auf Dateien Operatoren wahr wenn -d Datei Datei einVerzeichnis ist -f Datei Datei eine normale Datei ist -e Datei Datei exisitiert -r Datei Datei lesbar -w Datei Datei schreibar -x Datei Datei ausführbar
  27. 27. for-Schleifen über Listen • über eine Liste von Werte iterieren • Laufvariable nimmt bei jedem Durchlauf den jeweils nächsten Wert in der Liste an for bezeichner in list do befehl1; befehl2; ... done
  28. 28. for-Schleifen über Listen for file in *.txt; do tail -n 5 $file > $file.short; done
  29. 29. for-Schleifen mit Zähler • Laufvariable wird solange verändert bis eine bestimmte Bedingung erfüllt ist for (( Initialisierung ; Bedingung; Anweisung )); do befehl1; befehl2; ... done;
  30. 30. for-Schleifen mit Zähler for (( i = 1 ; i < 23; i++ )); do echo $i; done;
  31. 31. while/until-Schleifen • Eine While-Schleife läuft solange eine bestimmte Bedingung erfüllt ist. • Eine Until-Schleife läuft solange eine bestimmte Bedingung NICHT erfüllt ist. while Bedingung do befehl1; befehl2; ... done until Bedingung do befehl1; befehl2; ... done
  32. 32. if-then-else-Anweisung • Mit dem if-Befehl kann ein Befehl ausgeführt werden, falls eine Bedingung zutrifft. • Mit else kann eine Alternativ-Befehl angeben werden falls die Bedingung nicht zutrifft. if Bedingung1 then Befehl1 else Befehl2 fi
  33. 33. Shellskripte schreiben • Shell-Skripte sind Text-Dateien, die mehrere Shell-Kommandos enthalten. • Die Befehle in der Datei nacheinander abgearbeitet. • Man kann sie mit jedem beliebigen Texteditor erstellen. • Shell-Skripte können das x-Flag erhalten (chmod u+x <datei>)
  34. 34. Shellskripte schreiben • Ein einfaches Shell-Skript: • “#!” = “Shebang” • sagt dem Kernel mit welchem Interpreter das Skript interpretiert werden soll #!/bin/bash echo “Hello World!”

×