Shell-Programmierung



Ähnliche Dokumente
Linux Prinzipien und Programmierung

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Luis Kornblueh. May 22, 2014

Aufgabensammlung IT Shellprogrammierung Teil I

Erwin Grüner

SelfLinux cron

Programmierkurs Java

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Desktop ade: Me and my shell

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Dokumentation IBIS Monitor

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Inhaltsverzeichnis

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

10 Lesen und Schreiben von Dateien

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Excel Funktionen durch eigene Funktionen erweitern.

Ihr Ideen- & Projektmanagement-Tool

Technische Praxis der Computersysteme I 3. Vorlesung

Entwurf von Algorithmen - Kontrollstrukturen

Dokumentation zur Versendung der Statistik Daten

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Anleitung über den Umgang mit Schildern

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Übungen Programmieren 1 Felix Rohrer. Übungen

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar CAP-News 40

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Import und Export von Übergängern

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

Der zweite all unsere Datenbanken. Dieser Befehl ist etwas komplexer, aber bis auf das Passwort (kursiv fett) so zu übernehmen:

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

AutoTexte und AutoKorrektur unter Outlook verwenden

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Anleitung zum LPI ATP Portal

Synchronisations- Assistent

Bash-Skripting Linux-Kurs der Unix-AG

Buchungs- und Umsatzsteuerzeitraum ändern

teamsync Kurzanleitung

ecaros2 - Accountmanager

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Bash-Skripting Linux-Kurs der Unix-AG

Lehrer: Einschreibemethoden

Klicken Sie auf Weiter und es erscheint folgender Dialog

Diana Lange. Generative Gestaltung Operatoren

Elexis-BlueEvidence-Connector

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

2) Geben Sie in der Anmeldemaske Ihren Zugangsnamen und Ihr Passwort ein

Benutzer, Gruppen, Zugriffsrechte

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

AutoCAD Dienstprogramm zur Lizenzübertragung

Prüfung Computation, Programming

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Artikel Schnittstelle über CSV

Einführung in die Programmierung

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Installation OMNIKEY 3121 USB

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Übung 4: Schreiben eines Shell-Skripts

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013

multisign Signatur-Prüfwerkzeug Handbuch Security Networks AG Stand:

Tipps zum Bearbeiten einer digitalen Schultasche Stand:

Vorgehensweise bei Lastschriftverfahren

Arbeitsabläufe FinanzProfiT Version 4.25

Erweiterungen Webportal

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

Mit dieser Schnittstelle können Sie Ihre Studierenden in das Studentenmodul übernehmen.

Graphic Coding. Klausur. 9. Februar Kurs A

Inventur. Bemerkung. / Inventur

Einführung in die C++ Programmierung für Ingenieure

Dateiname Name(n) und Matrikelnr. des/der Bearbeiter Tel.-Nr. und -Adresse für den Fall, dass die Diskette nicht lesbar ist.

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

Werkzeuge der Informatik UNIX

Internet online Update (Mozilla Firefox)

Übungen zu C++ Kapitel 1

Tracking-Beispiele. Inhalt: Standard Tracking / Cookie Tracking Anchor-Tracking Direct Tracking Referer Tracking Tracking von Produkt-Feeds

Druckerscriptsprache

Stapelverarbeitung Teil 1

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Software- und Druckerzuweisung Selbstlernmaterialien

Anleitung für die Formularbearbeitung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

LANiS Mailversender ( Version 1.2 September 2006)

Stand: Adressnummern ändern Modulbeschreibung

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker

Hardware - Software - Net zwerke

etax.schwyz: Suche nach Steuerfalldateien

Dateien und Verzeichnisse

Objektorientiertes Programmieren mit Suse Linux

Online-Sendungsverfolgung. Morgenpost Briefservice GmbH

Etikettendruck mit Works 7.0

Transkript:

Shell-Programmierung Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009 Shell-Programmierung 1/34 2009-04-27

Inhalt Einleitung Einfache Befehle, Pipelines und Listen Variablen Pfadexpansion Quoting Zusammengesetzte Befehle Funktionen I/O-Umleitung Wichtige Built-Ins Shell-Programmierung 2/34 2009-04-27

Einleitung Was ist eine Shell? Programm, dass verbunden mit einem Terminal läuft, elementare Schnittstelle zur textbasierten interaktiven Bedienung, zur Automatisierung von Befehlsfolgen: Skripte, zahlreiche eingebaute Kommandos, Ergänzungen: einfache Binärprogramme die auf Bedienung per textorientierter Schnittstelle ausgelegt sind. Shell-Programmierung 3/34 2009-04-27

Einleitung (2) Welche Shells gibt es? Historisch : Bourne-Shell (trad. unter /bin/sh), in der GNU-Welt gewachsen: Bourne-Again-Shell (/bin/bash), Ziel-Standard (?): POSIX-Shell (näher an Korn-Shell), Entwicklung in Richtung POSIX: Debian-Almquist-Shell (/bin/dash),... Shell-Programmierung 4/34 2009-04-27

Einleitung (3) Was ist ein Skript? Einfache Textdatei, erste Zeile enthält besonderes Kommentarzeichen mit Angabe des Interpreters (z.b. #!/bin/sh), praktisch beliebige ausführbare Dateien als Interpreter möglich, für den Ausführenden müssen Ausführungsrechte gesetzt sein. Shell-Programmierung 5/34 2009-04-27

Elementares Befehlsverarbeitung Shell liest immer zeilenweise, führt auf der Zeile literale Ersetzungen und Expansionen durch (Aliase, Variablen, Pfade), zerlegt die Zeile bis auf die Ebene der einfachen Befehle in Wortlisten, führt Befehl für Befehl aus. Shell-Programmierung 6/34 2009-04-27

Einfache Befehle Einfache Befehle (Simple Commands) Kommando und Argumente, Built-Ins oder Programme, Ein-/Ausgabe-Umlenkung möglich (s.u.). Shell-Programmierung 7/34 2009-04-27

Pipelines Pipelines Folge von Simple-Commands durch getrennt, Ausgabe (stdout) des i-ten Befehls wird zur Eingabe (stdin) des i+1-ten Befehls, Exit-Status ist der des letzten Simple-Commands. Shell-Programmierung 8/34 2009-04-27

Listen Listen Folgen von Pipelines, getrennt durch, &&, ; oder &, je nach Operator verschiedene Semantik. Shell-Programmierung 9/34 2009-04-27

Listen (2) x y x && y Sequentielle Ausführung, Exit-Status ist logisches ODER von Exit-Status von x und y, Ausführung nicht-strikt. Sequentielle Ausführung, Exit-Status ist logisches UND von Exit-Status von x und y, Ausführung nicht-strikt. Shell-Programmierung 10/34 2009-04-27

Listen (3) x ; y Sequentielle Ausführung, Exit-Status der Liste ist Exit-Status der letzten Pipeline, alle Pipelines werden ausgeführt. x & y Parallele Ausführung, Exit-Status der Liste ist Exit-Status der letzten Pipeline, alle Pipelines werden ausgeführt. Shell-Programmierung 11/34 2009-04-27

Variablen Zuweisung name=value, setzt Variable für die aktuelle Shell, Abfrage $name oder ${name}, Exportieren export name, Variable wird auch in Sub-Shells exportiert, Shell-Programmierung 12/34 2009-04-27

Variablen (2) Spezielle Variablen $$: pid der aktuellen Shell, $?: Exit-Status des letzten Befehls, $#: Anzahl der Befehlszeilenparameter, $0, $1,..., $9: Parameter, $@: Liste aller Parameter,... Shell-Programmierung 13/34 2009-04-27

Variablen (3) Verarbeitung von Parametern shift schiebt alle Parameter um eine Position nach links ($2 nach $1, $3 nach $2, usf.), $# wird dekrementiert. Dadurch werden auch mehr als neun Parameter erreichbar. Shell-Programmierung 14/34 2009-04-27

Variablen (4) Wichtige Umgebungsvariablen $HOME: Pfad zum Home-Verzeichnis des Benutzers, $PATH: Suchpfad für ausführbare Dateien, getrennt durch :, $IFS: Feld-Trenner für die Verarbeitung von Zeichenketten als Listen (z.b. bei Parametern), wenn nicht gesetzt: Whitespaces, $TERM: Terminal-Typ, $PWD: aktuelles Verzeichnis, $OLDPWD: aktuelles Verzeichnis vor dem letzten cd,... Shell-Programmierung 15/34 2009-04-27

Pfadexpansion Strings werden vor Kommandoausführung ersetzt, wenn sie *, [...] oder? enthalten. Sie beschreiben alle Dateinamen, die auf das entsprechende Muster passen: * jeder mögliche String (ohne / ), [...] jedes mögliche Zeichen der Liste,? jedes beliebige Zeichen (bis auf / ). Shell-Programmierung 16/34 2009-04-27

Quoting Escaping Durch Voranstellen von \, spezielle Zeichen ohne ihre (sonst) spezielle Bedeutung: \*, \?, \[, \$,..., Sonderfall: \ vor Zeilenumbruch verlängert die Zeile. Tick-Strings..., alle Zeichen (bis auf ) werden völlig unverändert übernommen. Shell-Programmierung 17/34 2009-04-27

Quoting (2) Double-Quote-Strings "...", alle Zeichen bis auf $, und \ behalten ihre literale Bedeutung, Variablen werden expandiert, Zeichen mit spezieller Bedetung können mit \ erzeugt werden. Back-Tick-Strings list, String, der bei der Ausführung der Liste ausgegeben wird, wird ausgeführt. Shell-Programmierung 18/34 2009-04-27

Zusammengesetzte Befehle Arten Gruppierungen, Auswahlen, Schleifen. Shell-Programmierung 19/34 2009-04-27

Gruppierungen ( l i s t ) { l i s t ; } Die Liste wird (wie) in einer eigenen Sub-Shell ausgeführt, für die Variante mit {} wird keine eigene Shell geforkt, in () gemachte Zuweisungen an Variablen werden danach wieder vergessen, Gruppierungen ermöglichen Weiterleitung der Ausgaben von Befehlslisten. Shell-Programmierung 20/34 2009-04-27

Auswahlen if i f l i s t ; then l i s t ; [ e l i f l i s t ; then l i s t ; ]... [ e l s e l i s t ; ] f i Bedingung ist Exit-Status der jeweiligen Liste, Listen in den elif-ästen werden genau dann ausgeführt, wenn sie erreicht werden. Shell-Programmierung 21/34 2009-04-27

Auswahlen (2) case case word i n [ p a t t e r n [ p a t t e r n ]... ) l i s t ; ; ]... e s a c word wird als String ausgewertet (ggf. Variablen ersetzt), der String wird gegen die Patterns gematcht (Wildcards analog Pfadexpansion), Liste des ersten matchenden Patterns wird ausgeführt. Shell-Programmierung 22/34 2009-04-27

Schleifen for f o r name [ i n word ; ] do l i s t ; done name definiert eine Variable, Schleife durchläuft alle Strings aus word, während der Bearbeitung von list ist name auf den aktuellen String aus word gesetzt. Shell-Programmierung 23/34 2009-04-27

Schleifen while und until while l i s t ; do l i s t ; done u n t i l l i s t ; do l i s t ; done Während der Exit-Status der ersten Liste true bzw. false ist, wird die zweite Liste wiederholt ausgeführt. Shell-Programmierung 24/34 2009-04-27

Funktionen Definition: [ function ] name () { list; }, Parameterübernahme wie bei Skript, return [exit-status]. Shell-Programmierung 25/34 2009-04-27

Suchreihenfolge Enthält ein einfaches Befehlswort kein /, so wird überprüft ob es sich um 1 eine Funktion, 2 eine Built-In oder 3 ein Binary, das in einem der Verzeichnisse aus $PATH erreichbar ist handelt. Die erste gefundene Variante wird ausgeführt. Enthält das Befehlswort /, so wird beim gegebenen absoluten Pfad bzw. relativ zum aktuellen Arbeitsverzeichnis nach einer Ausführbaren Datei gesucht und diese ggf. ausgeführt. Shell-Programmierung 26/34 2009-04-27

Ein-/Ausgabe-Umleitung [n]> file [n]>> file [n]< file [n]>&[m] [n]<< Ausgabe-Filedescriptor n (bzw. 1) wird in Datei umgelenkt (Datei wird überschrieben),... an Datei angehängt, aus Datei gelesen, Verbindung mehrerer Ausgabe-Descriptoren. aus Skript gelesen, Shell-Programmierung 27/34 2009-04-27

Ein-/Ausgabe-Umleitung (2) Here-Document [ n]<< d e l i m i t e r here doc t e x t d e l i m i t e r Der gesamte Text zwischen den beiden delimiter wird in den Standard-Input (oder File n) geleitet, ist der erste delimiter quotiert, wird der Text wörtlich weitergeleitet, andernfalls werden die üblichen Expansionen durchgeführt. Shell-Programmierung 28/34 2009-04-27

Wichtige Built-Ins test t e s t e x p r e s s i o n [ e x p r e s s i o n ] Führt, abhängig von expression eine Reihe von Tests und Vergleichen durch, verschiedene Kategorien: Dateieigenschaften, Stringeigenschaften, Stringvergleiche, Integervergleiche, logische Operatoren, Auswertung zu wahr liefert erfolgreichen Exit-Status. Shell-Programmierung 29/34 2009-04-27

Wichtige Built-Ins (2) exit e x i t [ s t a t u s ] Beendet den aktuellen Shell-Prozess, wenn vorhanden, wird status als Exit-Status zurückgegeben, wenn nicht, der Exit-Status des letzten Befehls. Shell-Programmierung 30/34 2009-04-27

Wichtige Built-Ins (3) read read v a r i a b l e [... ] liest eine Zeile vom Standard-Input, zerlegt die Zeile gemäß $IFS in Wörter, das erste Wort wird der ersten Variablen zugewiesen, das zweite der zweiten usf., bei weniger Variablen als Wörtern wird der gesamte Rest der Zeile der letzten Variablen zugewiesen, bei weniger Wörtern als Variablen wird den restlichen Variablen der Null-String zugewiesen, read kehrt erfolgreich zurück, solange EOF noch nicht erreicht ist. Shell-Programmierung 31/34 2009-04-27

Wichtige Built-Ins (4) echo echo [ n ] a r g s Gibt die Argumente auf dem Standard-Output aus, Argumente werden bei Ausgabe durch Leerzeichen getrennt, nach dem letzten Argument wird ein Zeilenumbruch ausgegeben, Parameter -n unterdückt den Zeilenumbruch. Shell-Programmierung 32/34 2009-04-27

Wichtige Built-Ins (5) printf p r i n t f format [ arguments... ] Gibt Strings formatiert auf dem Standard-Output aus, weitestgehend analog zu printf(3). Shell-Programmierung 33/34 2009-04-27

Wichtige Built-Ins (6) Achtung! Einige Built-Ins, wie test, echo oder printf, unterscheiden sich zwischen verschiedenen Shells z.t. erheblich, existieren nochmal als Binärdatei (/bin/test, /bin/echo). Shell-Programmierung 34/34 2009-04-27