SlideShare ist ein Scribd-Unternehmen logo

Unixkurs 06 - Shellskripte

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

Unixkurs 06 - Shellskripte

1 von 34
Downloaden Sie, um offline zu lesen
Unixkurs
Shellskripte
"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
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
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?
•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
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
Anzeige

Recomendados

Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershellCreasoft AG
 
An Introduction to Ruby
An Introduction to RubyAn Introduction to Ruby
An Introduction to RubyJonathan Weiss
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...Verein FM Konferenz
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike MüllerAberla
 
Einführung in die funktionale Programmierung mit Clojure
Einführung in die funktionale Programmierung mit ClojureEinführung in die funktionale Programmierung mit Clojure
Einführung in die funktionale Programmierung mit ClojureSascha Koch
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in GoFrank Müller
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaAndreas Jung
 

Más contenido relacionado

Ähnlich wie Unixkurs 06 - Shellskripte

Linux slides 2013_upload
Linux slides 2013_uploadLinux slides 2013_upload
Linux slides 2013_uploadRosa Freund
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfSyahri Ramadhan
 
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015Lutz Hühnken
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Kerstin Puschke
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im VergleichQAware GmbH
 
FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt
FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich SchmidtFMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt
FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich SchmidtVerein FM Konferenz
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with AnsibleSusannSgorzaly
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweiternjan_mindmatters
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 
Linuxtools fuer Developer
Linuxtools fuer DeveloperLinuxtools fuer Developer
Linuxtools fuer DeveloperMayflower GmbH
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortragRamon Wartala
 

Ähnlich wie Unixkurs 06 - Shellskripte (20)

Linux slides 2013_upload
Linux slides 2013_uploadLinux slides 2013_upload
Linux slides 2013_upload
 
Windows Powershell
Windows PowershellWindows Powershell
Windows Powershell
 
Unixkurs 04 - Dateien
Unixkurs 04 - DateienUnixkurs 04 - Dateien
Unixkurs 04 - Dateien
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
 
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im Vergleich
 
FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt
FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich SchmidtFMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt
FMK2019 Nutzung von Shell-Skripts in FileMaker by Erich Schmidt
 
Cloud Haskell
Cloud HaskellCloud Haskell
Cloud Haskell
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Neuerungen in TYPO3 6.0
Neuerungen in TYPO3 6.0Neuerungen in TYPO3 6.0
Neuerungen in TYPO3 6.0
 
openHAB @ rheinJUG Düsseldorf
openHAB @ rheinJUG DüsseldorfopenHAB @ rheinJUG Düsseldorf
openHAB @ rheinJUG Düsseldorf
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
Linuxtools fuer Developer
Linuxtools fuer DeveloperLinuxtools fuer Developer
Linuxtools fuer Developer
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 

Mehr von Hannes Planatscher

Unixkurs 04 - Rechteverwaltung
Unixkurs 04 - RechteverwaltungUnixkurs 04 - Rechteverwaltung
Unixkurs 04 - RechteverwaltungHannes Planatscher
 
Unixkurs 07 - Prozess- und Speicherverwaltung
Unixkurs 07 - Prozess- und SpeicherverwaltungUnixkurs 07 - Prozess- und Speicherverwaltung
Unixkurs 07 - Prozess- und SpeicherverwaltungHannes Planatscher
 
Unixkurs 01 - Allgemeines zu Unix
Unixkurs 01 - Allgemeines zu UnixUnixkurs 01 - Allgemeines zu Unix
Unixkurs 01 - Allgemeines zu UnixHannes Planatscher
 
Kombinatorische Optimierung für Immunoaffinitätsproteomik
Kombinatorische Optimierung für ImmunoaffinitätsproteomikKombinatorische Optimierung für Immunoaffinitätsproteomik
Kombinatorische Optimierung für ImmunoaffinitätsproteomikHannes Planatscher
 

Mehr von Hannes Planatscher (7)

Unixkurs 04 - Rechteverwaltung
Unixkurs 04 - RechteverwaltungUnixkurs 04 - Rechteverwaltung
Unixkurs 04 - Rechteverwaltung
 
Unixkurs 03 - Pipes
Unixkurs 03 - PipesUnixkurs 03 - Pipes
Unixkurs 03 - Pipes
 
Unixkurs 07 - Prozess- und Speicherverwaltung
Unixkurs 07 - Prozess- und SpeicherverwaltungUnixkurs 07 - Prozess- und Speicherverwaltung
Unixkurs 07 - Prozess- und Speicherverwaltung
 
Unixkurs 02 - VIM
Unixkurs 02 - VIMUnixkurs 02 - VIM
Unixkurs 02 - VIM
 
Unixkurs 01 - Allgemeines zu Unix
Unixkurs 01 - Allgemeines zu UnixUnixkurs 01 - Allgemeines zu Unix
Unixkurs 01 - Allgemeines zu Unix
 
Kombinatorische Optimierung für Immunoaffinitätsproteomik
Kombinatorische Optimierung für ImmunoaffinitätsproteomikKombinatorische Optimierung für Immunoaffinitätsproteomik
Kombinatorische Optimierung für Immunoaffinitätsproteomik
 
SCPSolver
SCPSolverSCPSolver
SCPSolver
 

Último

A1_Anjas Tagesablauf_Praesens_Perfekt.ppt
A1_Anjas Tagesablauf_Praesens_Perfekt.pptA1_Anjas Tagesablauf_Praesens_Perfekt.ppt
A1_Anjas Tagesablauf_Praesens_Perfekt.pptMaria Vaz König
 
Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...
Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...
Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...LUCO KIDS® - clever und stark
 
Irenes Tagesablauf im Praesens und Perfekt - interaktive Power Point
Irenes Tagesablauf im Praesens und Perfekt - interaktive Power PointIrenes Tagesablauf im Praesens und Perfekt - interaktive Power Point
Irenes Tagesablauf im Praesens und Perfekt - interaktive Power PointMaria Vaz König
 
Karins_Wochenkalender_Präpositionen_Satzstellung.pptx
Karins_Wochenkalender_Präpositionen_Satzstellung.pptxKarins_Wochenkalender_Präpositionen_Satzstellung.pptx
Karins_Wochenkalender_Präpositionen_Satzstellung.pptxMaria Vaz König
 
"haben" im Präsens,Präteritum und Perfekt
"haben" im Präsens,Präteritum und Perfekt"haben" im Präsens,Präteritum und Perfekt
"haben" im Präsens,Präteritum und PerfektMaria Vaz König
 
Paul und Paulinchen: Tagesablauf im Praesens und Perfekt mit trennbaren Verben
Paul und Paulinchen: Tagesablauf  im Praesens und Perfekt mit trennbaren VerbenPaul und Paulinchen: Tagesablauf  im Praesens und Perfekt mit trennbaren Verben
Paul und Paulinchen: Tagesablauf im Praesens und Perfekt mit trennbaren VerbenMaria Vaz König
 

Último (7)

A1_Anjas Tagesablauf_Praesens_Perfekt.ppt
A1_Anjas Tagesablauf_Praesens_Perfekt.pptA1_Anjas Tagesablauf_Praesens_Perfekt.ppt
A1_Anjas Tagesablauf_Praesens_Perfekt.ppt
 
Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...
Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...
Opfervermeidungsstrategien - Wie kann ich mich schützen? Comic für Kids und T...
 
Irenes Tagesablauf im Praesens und Perfekt - interaktive Power Point
Irenes Tagesablauf im Praesens und Perfekt - interaktive Power PointIrenes Tagesablauf im Praesens und Perfekt - interaktive Power Point
Irenes Tagesablauf im Praesens und Perfekt - interaktive Power Point
 
Software Engineering (B.Sc.) an der Universität Duisburg-Essen
Software Engineering (B.Sc.) an der Universität Duisburg-EssenSoftware Engineering (B.Sc.) an der Universität Duisburg-Essen
Software Engineering (B.Sc.) an der Universität Duisburg-Essen
 
Karins_Wochenkalender_Präpositionen_Satzstellung.pptx
Karins_Wochenkalender_Präpositionen_Satzstellung.pptxKarins_Wochenkalender_Präpositionen_Satzstellung.pptx
Karins_Wochenkalender_Präpositionen_Satzstellung.pptx
 
"haben" im Präsens,Präteritum und Perfekt
"haben" im Präsens,Präteritum und Perfekt"haben" im Präsens,Präteritum und Perfekt
"haben" im Präsens,Präteritum und Perfekt
 
Paul und Paulinchen: Tagesablauf im Praesens und Perfekt mit trennbaren Verben
Paul und Paulinchen: Tagesablauf  im Praesens und Perfekt mit trennbaren VerbenPaul und Paulinchen: Tagesablauf  im Praesens und Perfekt mit trennbaren Verben
Paul und Paulinchen: Tagesablauf im Praesens und Perfekt mit trennbaren Verben
 

Unixkurs 06 - Shellskripte

  • 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. 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. 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. •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. 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. 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. 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. Beispiele • *.* - Alle Dateien die einen Punkt im Namen enthalten • [:upper:]*.* - Dateiname muss mit Großbuchstaben beginnen • ??? - Dateiname muss 3 Zeichen lang sein
  • 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. Unix Pipes • Erlauben das Hintereinanderschalten von Programmen • Beispiel: who | grep zx => Welche User mit einem zx im Username sind eingeloggt?
  • 12. Unix-Kurs • Die Kanäle werden über Pipes verbunden who Eingabe (0) Fehler (2) grep zx
  • 13. Pipesyntax • programm1 | programm2 | programm3 • programm > ausgabe • programm < eingabe • programm >> ausgabe • programm 1> ausgabe 2> fehler
  • 14. Programmierzutaten • Wertzuweisung • Arithmetik • Vergleichsoperatoren • Kontrollstrukturen • Schleifen Programmier sprache
  • 15. Wertzuweisung • Einem Bezeichner kann mit “=” ein Wert zugewiesen werden • Auf den Wert kann durchVoranstellen eines $-Zeichens zugegriffen werden foo=23 echo $foo
  • 16. Kommandosubstitution • Einem Bezeichner kann mit “=” und `befehl` die Ausgabe von befehl zugewisen werden foo=`ls` echo $foo
  • 17. Befehle gruppieren • Nacheinander: • befehl1; befehl2 • Nur wenn befehl1 erfolgreich (UND): • befehl1 && befehl2 • Nur wenn befehl1 nicht erfolgreich (ODER): • befehl1 || befehl2
  • 18. Befehle gruppieren ls *.doc > /dev/null && echo "Dokumente gefunden" ls *.doc > /dev/null || echo "keine Dokumente gefunden"
  • 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. Arithmetik • die Shell kann nur mit ganzen Zahlen rechnen • Syntax • arithmetische Expansion • spezielle Zuweisung mit let
  • 22. Arithmetik Operatoren Bedeutung +, - Addition, Subtraktion &,|,^ bitweises AND,OR,XOR *, /, % Multiplikation, Division,Modulo <<, >> Links/Rechtsshift
  • 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. Bedingungen test 23 -eq 42 && echo "wahr" [ 23 -eq 42 ] && echo "wahr"
  • 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. 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. 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. for-Schleifen über Listen for file in *.txt; do tail -n 5 $file > $file.short; done
  • 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. for-Schleifen mit Zähler for (( i = 1 ; i < 23; i++ )); do echo $i; done;
  • 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. 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. 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. Shellskripte schreiben • Ein einfaches Shell-Skript: • “#!” = “Shebang” • sagt dem Kernel mit welchem Interpreter das Skript interpretiert werden soll #!/bin/bash echo “Hello World!”