Technische Praxis der Computersysteme. Technische Praxis der Computersysteme

Größe: px
Ab Seite anzeigen:

Download "Technische Praxis der Computersysteme. Technische Praxis der Computersysteme"

Transkript

1

2 Aufbau Regular Expressions/Reguläre Ausdrücke: Reguläre Ausdrücke sind - ähnlich wie die globbing patterns - Zeichenketten, die andere Zeichenketten beschreiben. Sie sind wesentlich umfangreicher als die globbing Patterns und werden von div. Programmen (find, grep, sed,...) sowie Programmiersprachen genutzt um Zeichenketten oder Teile davon abzugleichen. Ein regulärer Ausdruck besteht wieder aus Zeichen, von denen einige als Metazeichen verstanden werden ( spezielle Zeichen, ähnlich wie die wildcard Zeichen). Die grundlegende Syntax wird in der regex(7) manpage beschrieben. Wir werden für einen regulären Audruck meistens die Abkürzing RE nutzen und zwischen speziellen und gewöhnlichen Zeichen unterscheiden.

3 Aufbau Spezielle und gewöhnliche Zeichen Wir unterscheiden - etwas informell - zwischen speziellen und gewöhnlichen Zeichen. Spezielle Zeichen sind dabei all jene Zeichen, die bei einer RE eine spezielle Bedeutung haben - wie z.b. ^.[$() *+?{. Um diese Zeichen als normales Zeichen - und damit nicht als spezielles Zeichen für die RE - zu nutzen, muss es escaped werden, i.e. ein \ vorangestellt werden. So steht z.b.. in einer RE für ein beliebiges Zeichen, \. für den (ganz gewöhnlichen) Punkt.

4 Aufbau Warnung: Um reguläre Ausdrücke zu definieren ist es am einfachsten sie von oben herab zu beschreiben. Um sie tatsächlich zu verstehen ist es nützlich sie von unten nach oben zu betrachten.

5 Aufbau Definition & Aufbau: Eine RE besteht aus mehreren Zweigen/branches), die durch ( oder ) getrennt sind.

6 Aufbau Definition & Aufbau: Eine RE besteht aus mehreren Zweigen/branches), die durch ( oder ) getrennt sind. Ein Zweig besteht aus mehreren Stücken/pieces, die sequentiell gematcht/abgeglichen werden.

7 Aufbau Definition & Aufbau: Eine RE besteht aus mehreren Zweigen/branches), die durch ( oder ) getrennt sind. Ein Zweig besteht aus mehreren Stücken/pieces, die sequentiell gematcht/abgeglichen werden. Ein Piece besteht aus einem Atom, dem die Zeichen?, *, + oder Schranken/Bounds folgen kann.

8 Aufbau Atoms: Ein Atom kann eines der folgenden Möglichkeiten sein: Ein gewöhnliches Zeichen ohne besonderer Bedeutung (mit oder ohne \). Eines der speziellen Zeichen., ^ oder $

9 Aufbau Atoms: Ein Atom kann eines der folgenden Möglichkeiten sein: Ein gewöhnliches Zeichen ohne besonderer Bedeutung (mit oder ohne \). Eines der speziellen Zeichen., ^ oder $ Ein regulärer Ausdruck mit () umschlossen. Ein leerer Ausdruck (), der den Null-String matcht. Ein Klammernausdruck/eine bracket expression (ähnlich zu globbing, siehe unten) in []

10 Aufbau Bounds und?, *, + Einem Atom kann ein Quantor nachfolgen. Darunter versteht man die Zeichen?, *, + oder eine Schranke.? steht für höchstens ein Vorkommnis des Atoms - also 0 oder 1 match. + steht für mindestens ein Vorkommnis des Atoms - also 1 match oder mehr. * steht für beliebig viele matches des Atoms - also 0 oder mehr matches.

11 Aufbau Schranken: Schranken sind stets mit {} umschlossen und können die folgenden Formen annehemn: {n}: Genau n matches. {n,m}: Zwischen n und m matches. {,m}: Höchstens m matches. {n,}: Mindestens n matches.

12 Aufbau Die Zeichen., ˆ und $ Diese Zeichen haben als Atome eine besondere bedeutung:.: Steht für ein beliebiges Zeichen ^: Steht für den Anfang der Zeichenkette $: Steht für das Ende der Zeichenkette

13 Aufbau Die Zeichen., ˆ und $ Diese Zeichen haben als Atome eine besondere bedeutung:.: Steht für ein beliebiges Zeichen ^: Steht für den Anfang der Zeichenkette $: Steht für das Ende der Zeichenkette Bemerkung: Insbesondere steht.* für alles - eine beliebige Anzahl an beliebigen Zeichen.

14 Aufbau Klammernausdrücke/Bracket Expressions: Ausdrücke in [] werden wie auch beim Globbing genutzt um eine Liste von möglichen Zeichen anzugeben, die vorkommen dürfen (oder nicht vorkommen sollen - wenn nach der [ ein ^ folgt). Insbesondere erlaubt auch regex die selben [: :] Klassen wie die filename expansions.

15 Aufbau Klammernausdrücke/Bracket Expressions: Ausdrücke in [] werden wie auch beim Globbing genutzt um eine Liste von möglichen Zeichen anzugeben, die vorkommen dürfen (oder nicht vorkommen sollen - wenn nach der [ ein ^ folgt). Insbesondere erlaubt auch regex die selben [: :] Klassen wie die filename expansions. Bemerkung: regex unterstützt auch collating elements via [..] und Äquivalenzklassen via [= =]. Diese hängen aber von der gewählten locale ab (Sprachspezifische Einstellung für Programme). So kann man mit [[=a=]] alle zu a äquivalenten Zeichen matchen - z.b. ä oder à.

16 Aufbau Basic vs. Extended REs: Viele Programme unterscheiden noch zwischen sogenannten basic REs und extended REs. Die hier vorgestellte Syntax entspricht den extended REs. Basic REs sind aus kompatibilitätsgründen oft immer noch der Standardmodus vieler Programme, sind aber obsolete und sollten nicht mehr genutzt werden. Meistens genügt ein Parameter um extended REs zu nutzen.

17 Aufbau regex in unixartigen Systemen: Während das Globbing meistens einfach in der Shell zum Vervollständigen von Dateinamen genutzt wird, werden regex Patterns üblicherweise von div. Programmen genutzt, um Eingaben zu parsen und modifizeren ( pattern matching ). Beispiele dafür sind grep, sed aber auch find. Aus Usersicht sind REs nützlich, um Text zu finden oder generisch bearbeiten zu können (Suchen & Ersetzen von Text).

18 Weitere nüztliche Befehle grep: grep - print lines matching a pattern Sucht via RE nach Text in einer Datei/im stdin und gibt diesen aus. Als Argument muss zuerst die Pattern und dann (optional) eine Datei übergeben werden.

19 Weitere nüztliche Befehle Wichtige Optionen: -E: Nutze extended Regular Expressions (das sind die oben erklärten REs). -i: ignore case - Ignoriert Groß- und Kleinschreibung. -v: Invertiere Match - sucht nach alleine Zeilen die nicht die angegebene RE matchen -r: Rekursiv: Sucht rekursiv nach allen Dateien unter einem gegebenem Pfad, deren Inhalt die RE matcht. -l: List files with matches: Gibt nur den Namen der Datei(en) mit passendem Inhalt aus.

20 Weitere nüztliche Befehle find: find - search for files in a directory hierarchy find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]

21 Weitere nüztliche Befehle Wichtige Parameter: Zu viele! Ein paar Grundparameter: -iname, -name Sucht nach Files die eine wildcard pattern erfüllen (wie globbing), -iname ignoriert Groß-Kleinschreibung. -iregex, -regex Sucht nach Files, die einer RE genügen. -iregex ignoriert Groß-Kleinschreibung (GNU find!) -perm mode: Sucht nach Files deren Permission genau mode sind. Mit -mode bekommt man mindestens mode, mit /mode bekommt man eines der Permissions in mode. -amin n: Auf die wurde vor genau n Minuten zugegriffen. Mit -n bekommt man weniger als n, mit +n mehr als n.

22 Weitere nüztliche Befehle find und Aktionen: Die mit find gefunden Dateien können nicht nur ausgegeben werden. Find unterstützt (manchmal) auch Aktionen, die auf die Suchresultate angewendet werden sollen. Die wichtigsten Aktionen sind -delete und -exec (nur GNU find).

23 Weitere nüztliche Befehle find und Aktionen: Die mit find gefunden Dateien können nicht nur ausgegeben werden. Find unterstützt (manchmal) auch Aktionen, die auf die Suchresultate angewendet werden sollen. Die wichtigsten Aktionen sind -delete und -exec (nur GNU find). find und Tests: find erlaubt es, die obigen Testausdruecke logisch miteinander zu Verknüpfen durch Parameter wie -or, -and oder -not. Ebenso lassen sich Tests mit (...) gruppieren. Somit lassen sich komplexe Suchanfragen formulieren.

24 Weitere nüztliche Befehle xargs: xargs - build and execute command lines from stdin xargs liest Eingaben von stdin oder einer Datei und übergibt diese Eingaben an einen Befehl. Die Eingabe wird dabei in seperate Argumente untersteilt. Ein auszuführender Befehl muss an xargs übergeben werden.

25 Weitere nüztliche Befehle Wichtige Parameter: -0: Benutzt NUL als Seperator für Argumente anstelle von Whitespace (siehe unten). -d delim: Trennt Argumente bei jedem delim Zeichen anstelle von Whitespace (GNU xargs!). -n max-args: Ruft den Befehl alle max-args Argumente auf. -I replace-str: Ersetzt jedes (POSIX: jedes = max 5) Vorkommnis von replace-str im an xargs übergebenen Befehl mit einem Argument.

26 Weitere nüztliche Befehle sed: sed - stream editor sed ist eine Editor für Streams (Dateien und stdin,...), der nach festgelegten Regeln Änderungen vornimmt (e.g. Search and Replace ). Die Regeln können dabei als Datei oder in Form von Paramatern übergeben. sed kann sowohl von Dateien als auch (per default) von stdin lesen.

27 Weitere nüztliche Befehle sed: sed - stream editor sed ist eine Editor für Streams (Dateien und stdin,...), der nach festgelegten Regeln Änderungen vornimmt (e.g. Search and Replace ). Die Regeln können dabei als Datei oder in Form von Paramatern übergeben. sed kann sowohl von Dateien als auch (per default) von stdin lesen. Posix Parameter: -e command: fügt command zu den anzuwendenden Regeln hinzu. -n: Quiet, kein automatisches Ausgeben von Zeilen.

28 Weitere nüztliche Befehle Weitere Parameter: Achtung: Diese Paramater hängen von der Implementation ab und müssen nicht in dieser Form vorhanden sein (manpage!). -r: Reguläre Ausdrücke werden als extenden REs interpretiert. -i: Editiert Dateien in place (Linux, FreeBSD). -f scriptfile: Liest Befehle aus scriptfile ein und hängt diese zu den Anzuwendenden Regeln hinzu.

29 Weitere nüztliche Befehle sed commands: Die mit -e und -f übergebenen Befehle werden von sed sequentiell angewandt. Die genaue Form von sed Commands ist in der manpage von sed festgelegt bzw. unter info sed zu finden. Essentielle Befehle/Adressierungen: s/regex/replacement/flags: Ersetzt den durch regex gematchten Teil einer Zeile durch replacement. Mehr dazu unten. /regex/: Wendet einen Befehl nur auf eine regex matchende Zeile an.

30 Weitere nüztliche Befehle Bemerkung: s/regex/replacement/flags ist der vermutlich am häufigsten genutzte Befehl für sed, da er das typische Suche und Ersetzen bereitstellt. Es gelten dabei folgende besondere Konventionen: Ein & in replacement wird mit dem Match der regex ersetzt. \1 bis \9 können in replacement für Matches in Subregex von regex genutzt werden.

31 Weitere nüztliche Befehle flags: s/regex/replacement/flags unterstützt einige flags: g: Wendet s/regex/replacement/ auf alle Matches statt nur auf den ersten Match an. I: Case-Insensitive matching (ignoriert Groß-Kleinschreibung) (nur GNU sed!). p: Gibt die veränderte Zeile aus, falls eine Substitution gemacht wurde (nütlich mit dem -n Parameter). w filename: Schreibt die veränderte Zeile in eine Datei, falls eine Substitution gemacht wurde.

32 Weitere nüztliche Befehle Beispiele: sed -re s/romeo/juliet/g Ersetzt jedes Vorkommnis von Romeo durch Juliet. sed -re /^d/s/karasu/sascha/ Ersetzt das erste Vorkommnis von karasu durch sascha in Zeilen, die mit einem d beginnen. sed -re s/^([^:]+):x:([0-9]+):([0-9]+):.*/\1: UID \2, GID \3/ /etc/passwd

33 Weitere nüztliche Befehle Beispiele: sed -re s/romeo/juliet/g Ersetzt jedes Vorkommnis von Romeo durch Juliet. sed -re /^d/s/karasu/sascha/ Ersetzt das erste Vorkommnis von karasu durch sascha in Zeilen, die mit einem d beginnen. sed -re s/^([^:]+):x:([0-9]+):([0-9]+):.*/\1: UID \2, GID \3/ /etc/passwd Gibt Username, UID und GID jedes Nutzers in /etc/passwd aus

34 Variablen II: Arithmetik in der Shell: Shells wie bash und zsh erlauben einfache Integerarithmetik (im Falle der zsh auch floating point units) direkt in der Shell. Diese Variablen können entweder mit let oder über ((... )) definiert werden: let "a = " let "b = $RANDOM % 10" ((c = $b /2))

35 Variablen II: Arithmetik in der Shell: Shells wie bash und zsh erlauben einfache Integerarithmetik (im Falle der zsh auch floating point units) direkt in der Shell. Diese Variablen können entweder mit let oder über ((... )) definiert werden: let "a = " let "b = $RANDOM % 10" ((c = $b /2)) Bemerkung: In POSIX Shells steht ((... )) so nicht zur Verfügung. Hier muss man meistens $((... )) nutzen, also z.b. a=$((23+4)).

36 Variablen II: Arithmetic Expansion: Die ((... ))-Umgebung kann auch genutzt werden um arithmetische Vergleiche auszuwerten, z.b. ((a > 10)) oder ((a == b)).

37 Variablen II: Unterstützte Operationen: + -! ~ ++ --: unary plus/minus, logical NOT, complement, pre,postin,decrement << >>: bitwise shift left, right & ^ : bitwise AND, XOR, OR **: exponentiation * / %: multiplication, division, modulus (remainder) + -: addition, subtraction < > <= >= ==!=: comparison, equality and inequality && ^^: logical AND, OR, XOR? : : ternary operator = += -= *= /= %= &= ^= = <<= >>= &&= = ^^= **=: assignment

38 Variablen II: Variable/Parameter Expansion: Shells wie die bash und zsh erlauben es nicht nur Variablen mit $ zu referenzieren, man kann sie auch mit Expansions modifizieren. Eine Variable kann mit $VARIABLE oder ${VARIABLE} referenziert werden. Letztere Form wird für die Variablenexpansion mit Modifikatoren versehen.

39 Variablen II: Wichtigste Varianten: ${+name}: gibt 1 zurück falls name gesetzt ist, 0 sonst (kann genutzt werden um festzustellen ob Variablen schon definiert sind). ${name:-word}: Ersetzt den Inhalt von Variable mit word falls sie ungesetzt ist (kann genutzt werden um default-werte festzulegen, z.b. $file=${file:-"file.txt"}. ${name#pattern}: Löscht pattern vom Anfang der Variable name. Unterstützt nur Globbing Patterns. ${name%pattern}: Löscht pattern vom Anfang der Variable name. Unterstützt nur Globbing Patterns. ${name/pattern/repl}: Ersetzt das längste Vorkommnis von pattern in name durch repl. Mit zwei / vor pattern werden alle Vorkommnisse ersetzt.

40 Variablen II: Bemerkung: ${name%pattern} löscht den kürzesten Match von pattern, ${name%%pattern} den länsten. Analog für # und ##. Offset-Length: Eine weitere wichtige Variante ist ${name:offset} bzw. ${name:offset:length}. Dies gibt - im Fall von normalen Variablen - den Inhalt von $name ab dem Zeichen an der durch offset festgelegten Stelle aus. Mit length kann man zusätzlich die Länge limitieren, man kann also von-bis Formulierungen damit erreichen. Bei Arrays bezieht sich offset und length nicht auf Zeichen sondern auf Einträge.

41 Variablen II: Nesting: Parameter Expansion kann geschachtelt werden, z.b. foo="bar"; echo ${${foo#[a-z]}%[a-z]}

42 Variablen II: Nesting: Parameter Expansion kann geschachtelt werden, z.b. foo="bar"; echo ${${foo#[a-z]}%[a-z]} löscht je einen Buchstaben am Anfang und Ende von $foo, gibt in diesem Fall also a aus.

43 Shellscripting: Shellscripts: Shellscripte sind Textdateien, die - komplett Analog zu den üblichen Eingaben - von einer Shell interpretiert werden. Alles, was man also in einer Shell machen kann, kann auch in einem Shellscript gemacht werden - und umgekehrt. Shellscripte erkennt man üblicherweise an dem Shebang #! /pfad/zur/shell, z.b. #! /bin/bash oder #! /bin/zsh.

44 Shellscripting: Shellscripts: Shellscripte sind Textdateien, die - komplett Analog zu den üblichen Eingaben - von einer Shell interpretiert werden. Alles, was man also in einer Shell machen kann, kann auch in einem Shellscript gemacht werden - und umgekehrt. Shellscripte erkennt man üblicherweise an dem Shebang #! /pfad/zur/shell, z.b. #! /bin/bash oder #! /bin/zsh. Bemerkung: Alle Strukturen und Funktionen, die hier vorgestellt werden können auch in einer normalen Shell genutzt werden. Es sind lediglich Features, die besonders nützlich sind im Aufgaben zu automatisieren - was der Primärgrund für Shellscripte ist!

45 Shellscripting: Grundlagen: Die Shell interpretiert das Shellscript von oben nach unten. Jeder Zeile entspricht dabei einer gewöhnlichen Eingabe in der Shell. Der exit-befehl kann genutzt werden, um die Ausführung des Scripts vorzeitig zu beenden.

46 Shellscripting: Verknüpfen von Shellbefehlen: Shellbefehle können ganz allgemein Anhand ihrer Rückgabewerte verknüpft werden. Dazu gibt es: BEFEHL1; BEFEHL2: Führt BEFEHL2 nach BEFEHL1 aus. BEFEHL1 && BEFEHL2: Führt BEFEHL2 aus falls BEFEHL1 erfolgreich beendet wurde (Rückgabewert 0) BEFEHL1 BEFEHL2: Führt BEFEHL2 aus falls BEFEHL1 nicht erfolgreich beendet wurde (Rückgabewert ungleich 0)

47 Shellscripting: Command Substitutuon: Man Befehle an beliebiger Stelle in andere Befehle einbauen um deren Ausgaben oder Rückgabewerte als Parameter zu nutzen. Dies ist mit den und $(... ) Umgebungen möglich. z.b.: ls $( echo / usr / tmp ) ls $( sed -nre s /.*:(\/ home \/[^:]+):.*/\1/ p \ / etc / passwd )

48 Shellscripting: Tests: test-ausdrücke treten in verschiedenen Formen auf: Als Aufruf an den test-befehl, z.b. test 1 -lt 0 testet ob 1 kleiner als 0 ist. Via [ ], z.b. [ 1 -lt 0 ] Via [[ ]], z.b [[ 1 -lt 0 ]]

49 Shellscripting: String Tests: -n STRING: STRING hat eine nicht-null Länge -z STRING: STRING hat Länge null STRING1 = STRING2: STRING1 und STRING2 sind gleich. STRING1!= STRING2: STRING1 und STRING2 sind ungleich. Achtung: Bash und zsh erlauben auch == als Vergleichsoperator.

50 Shellscripting: Numerische Tests: exp1 -eq exp2: Wahr falls exp1 numerisch gleich exp2. exp1 -ne exp2: Wahr falls exp1 ungleich exp2 exp1 -lt exp2: kleiner als (less than) exp1 -gt exp2: größer als (greater than) exp1 -le exp2: kleiner gleich (less or equal) exp1 -ge exp2: größer gleich (greater or equal)

51 Shellscripting: File Tests: -b file: true if file exists and is a block special file. -c file: true if file exists and is a character special file. -d file: true if file exists and is a directory. -e file: true if file exists. -f file: true if file exists and is a regular file. -h file: true if file exists and is a symbolic link. -r file: true if file exists and is readable by current process. -w file: true if file exists and is writable by current process. -x file: true if file exists and is executable by current process. If file exists and is a directory, then the current process has permission to search in the directory.

52 Shellscripting: Verknüpfen von Tests: Tests können mit ( exp ) gruppiert werden. Außerdem gibt es! exp: Nicht : Wahr falls exp falsch exp1 && exp2: Und : Wahr falls exp1 und exp2 wahr sind. exp1 exp2: Oder : Wahr falls exp1 oder exp2 wahr ist (inklusives oder!).

53 Shellscripting: Verknüpfen von Tests: Tests können mit ( exp ) gruppiert werden. Außerdem gibt es! exp: Nicht : Wahr falls exp falsch exp1 && exp2: Und : Wahr falls exp1 und exp2 wahr sind. exp1 exp2: Oder : Wahr falls exp1 oder exp2 wahr ist (inklusives oder!). Bemerkung: Das sind nicht alle Tests.

54 Shellscripting: Bemerkung: Test-Statements können auch außerhalb eines if-then-blocks verwendet werden. Dies ist vor allem nützlich wenn man eine kurze Schreibweise für die Konditionelle ausführung eines Befehls haben möchte: [[ TEST ]] && BEFEHL

55 Shellscripting: Bemerkungen: Während test und [ der alte Standard ist und [[ sich auf den ersten Blick sehr ähnlich verhält gibt es mehrere Fälle in denen [[ (in der bash) andere Eigenschaften besitzt. z.b.: In [[ gibt es mehr und oft intuitivere Tests, z.b. && und anstatt -a (and) und -o (or) In [[ findet kein Word Splitting oder globbing statt (insbesondere: kein -e "$file", sondern einfach -e $file, egal ob $file whitespaces enthält).

56 Kontrollstrukturen Kontrollstrukturen: Bei Shellscripts ist es besonders wichtig, die Rückgabewerte von Programmen oder die Werte von Variablen automatisiert auszuwerten und abhängig davon weitere Aktionen durchzuführen. Wie jede Programmiersprache besitzt daher auch eine Shell üblicherweise die grundlegenden Kontrollstruktueren wie if-then, case, while, for, until.

57 Kontrollstrukturen if-then Ein if-then Block testet den Rückgabewert eines Befehls und führt im Erfolgsfall einen oder mehrere Befehle aus. Ein if-block wird mit dem fi Keyword terminiert. if command then fi

58 Kontrollstrukturen else und else if: In einem if-then-block kann auch ein else vorkommen. Dieser Block wird ausgeführt, falls das if-statement nicht zutraf. Außerdem kann man weitere Fälle mit einem else if weiter unterscheiden. else if kann auch mit elif abgekürzt werden. if command then... else #if, elif fi

59 Kontrollstrukturen case: Das case-konstrukt kann genutzt werden, um effizient verschiedene Konditonen zu testen: case EXPRESSION in CASE1 )... ;; CASE2 )... ;; esac

60 Kontrollstrukturen case: Die EXPRESSION ist dabei ein String, der gegen die Verschiedenen Fälle gematcht wird. Die CASE-Ausdrücke können dabei globbing Patterns sein. Verschiedene cases können mit oder-verknüpft werden. Die doppelten Semikolon ;; sind dabei ein break, springen also aus dem case-block.

61 Kontrollstrukturen Beispiel: case $var in [0-9]) echo "A single digit " ;; [a-z ] [A-Z]) echo "A single character " ;; *) echo " Something else entirely " ;; esac

62 Kontrollstrukturen Schleifen: Die meisten Shells unterstützen drei Arten von Schleifen: for, while und until. Dabei unterscheidet sich for etwas von den anderen beiden.

63 Kontrollstrukturen for: for i in list do done oder manchmal: for ((n=1; n <= LIMIT ; n ++)) do done

64 Kontrollstrukturen Beispiel und Bemerkung: Die for ((n1; n = LIMIT; n++))=-form einer Zählschleife ist nicht immer verfügbar. Um eine Vorschleife über eine Liste von Zahlen mit der Standardsyntax for i in list zu erreichen gibt es zwei Möglichkeiten: for i in $( seq 1 10); do...; done for i in {1..10}; do...; done Die erste Variante nutzt dabei Command Substitution und den seq-befehl um eine Sequenz von Zahlen zu erzeugen, die andere eine spezielle Shell expansion {m..n}.

65 Kontrollstrukturen seq: seq - print a sequence of numbers Start und Endwert kann an seq in der Form seq FIRST LAST übergeben werden. Alternativ kann man auch die Inkrementierungsschritte mit seq FIRST INCREMENT LAST festgelegt werden.

66 Kontrollstrukturen seq: seq - print a sequence of numbers Start und Endwert kann an seq in der Form seq FIRST LAST übergeben werden. Alternativ kann man auch die Inkrementierungsschritte mit seq FIRST INCREMENT LAST festgelegt werden. Wichtige Parameter: -s, --seperator STRING: Nutzt STRING als Trennzeichen anstatt eine neue Zeile für jede Zahl zu beginnen.

67 Kontrollstrukturen for und globbing: for i in list wird häeuftig in Verbindung mit File Globbing angewendet: for i in *. txt ; do... done

68 Kontrollstrukturen for und Variablen: for i in $var verhält sich je nach Shell ein wenig anders. So liefert foo =" bar baz " for i in $foo do echo $i done In der zsh einfach bar baz, in der bash aber zwei Zeilen: bar und baz. Das liegt daran, dass in der bash Variablen bei Leerzeichen seperiert werden, wenn man sie mit $foo substituiert.

69 Kontrollstrukturen for und Seperatoren: Wollen wir z.b. über jede mit : getrennte Komponente der $PATH Variable iterieren, gibt es mehrere Möglichkeiten: bash: Parameter Expansion: for i in ${ PATH //:/ }; do echo $i; done bash: Internal Field Seperator, $IFS (besser?) IFS = : ; for i in $PATH ; do echo $i; done zsh: field splitting, parameter expansion flags: for i in ${(s /:/) PATH }; do echo $i; done

70 Kontrollstrukturen until, while: while [ condition ] do... done until [ condition ] do... done

Technische Praxis der Computersysteme I 3. Vorlesung

Technische Praxis der Computersysteme I 3. Vorlesung Technische Praxis der Computersysteme I 3. Vorlesung Bernhard Lamel Universität Wien, Fakultät für Mathematik WS 2007 Outline 1 Grundlegende Informationen 2 Umgang mit Textdateien 3 Schleifen und Kontrollstrukturen

Mehr

Einführung Unix Shell

Einführung Unix Shell Einführung Unix Shell Prof. Dr. Rüdiger Weis Beuth Hochschule Berlin Wintersemester 2012/2013 Prof. Dr. Rüdiger Weis Einführung Unix Shell Beuth Hochschule Berlin 1 Datei Komandos 2 Wildcards 3 Variablen

Mehr

Shell-Programmierung

Shell-Programmierung 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

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 25 2 / 25 Pipes Die Bash kennt drei Standard-Dateideskriptoren: Standard In (stdin) Standard-Eingabe,

Mehr

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

Linux Tutorium. 12. Shellprogrammierung. Version vom 02.07.2008 13:38:56 Linux Tutorium 12. Shellprogrammierung Version vom 02.07.2008 13:38:56 im Grunde ist ein Shell-Skript nichts anderes als eine Textdatei, welche Befehlsfolgen enthält Shell-Skripte werden im Wesentlichen

Mehr

Luis Kornblueh. May 22, 2014

Luis Kornblueh. May 22, 2014 Einführung in die Bash Luis Kornblueh KlosterCluster Team 2013/2014, Klosterschule May 22, 2014 1 / 17 Inhaltsverzeichnis Einführung in das Scripting Einfache Beispiele Kommandos ersetzen Bedingungen Tests

Mehr

Übung 4: Schreiben eines Shell-Skripts

Übung 4: Schreiben eines Shell-Skripts Aufgabenteil 1 Ziel der Übung Übung 4: Schreiben eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende

Mehr

Desktop ade: Me and my shell

Desktop ade: Me and my shell Ein Shelldiskurs Desktop ade: Me and my shell Erkan Yanar erkmerk@gmx.de casus belli Warum auf einem Linuxtag mit Schwerpunkt Desktop? Beherrschung der Shell := freie Wahl des Desktops Beherrschung der

Mehr

Skripte. Beispiel. http://www.icp.uni-stuttgart.de. M. Fyta Computergrundlagen 73/93

Skripte. Beispiel. http://www.icp.uni-stuttgart.de. M. Fyta Computergrundlagen 73/93 Skripte Wie kann ich mir komplexe Befehle merken? Gar nicht aber der Computer kann es für mich! Einfach die Befehle in eine Textdatei schreiben und ausführbar machen #! (Shebang) in der ersten Zeile bestimmt

Mehr

Dateisystem 2, Suchen & Finden, Manpages

Dateisystem 2, Suchen & Finden, Manpages Dateisystem 2, Suchen & Finden, Manpages Linux-Kurs der Unix-AG Malte Koster 17. Januar 2014 ln ln ( link ) legt Verknüpfungen an, Verwendung wie cp ohne Optionen wird ein zweiter Name für die gleiche

Mehr

Übung: Entwickeln eines Shell-Skripts

Übung: Entwickeln eines Shell-Skripts Aufgabenteil 1 Ziel der Übung Übung: Entwickeln eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende

Mehr

Technische Praxis der Computersysteme

Technische Praxis der Computersysteme Zeiten Vorlesung: Wöchentlich, Do. 13:05-14:45, HS02 Ausgenommen: 06.11.2014, 18.12.2014 (vermutlich, nur VO!) Übung: Dezember & Januar, Do. 15:10-19:00, PC-Seminarraum 3 Genaue Termine: 4.12, 11.12, 18.12,

Mehr

Linux - a bit advanced

Linux - a bit advanced Linux - a bit advanced Überblick Rechteverwaltung Dateisystem Shell-Programmierung Remote login Paketsystem Alternativen-System Rechte Drei Benutzerklassen Owner/User Group Others Drei Rechte Ausführen

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

18.09.2010 / Software Freedom Day

18.09.2010 / Software Freedom Day 18.09.2010 / Software Freedom Day xkcd Fortsetzung... Grundlegendes Begriff: = regular expressions kurz: regex Funktion: definieren flexible Muster, mit denen in Texten gesucht (und ersetzt) werden kann.

Mehr

Lua - Erste Schritte in der Programmierung

Lua - Erste Schritte in der Programmierung Lua - Erste Schritte in der Programmierung Knut Lickert 7. März 2007 Dieser Text zeigt einige einfache Lua-Anweisungen und welchen Effekt sie haben. Weitere Informationen oder eine aktuelle Version dieses

Mehr

Eine Beschreibung des Programms und der dahinter stehenden Philosophie.

Eine Beschreibung des Programms und der dahinter stehenden Philosophie. 1 Geschichte Larry Wall schrieb ein Konfigurationsmanagementsystem und benötigte dazu ein Berichtwerkzeug, das mehrere Dateien gleichzeitig öffnen konnte. Awk konnte es damals nicht, daher schrieb er eine

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Programmieren mit der Windows PowerShell. von. Nils Gutsche. (aka Vellas)

Programmieren mit der Windows PowerShell. von. Nils Gutsche. (aka Vellas) Programmieren mit der Windows PowerShell von Nils Gutsche (aka Vellas) Einleitung Im November 2006 erschien die finale Fassung der Windows PowerShell. Sie gilt als der Nachfolger der Eingabeaufforderung

Mehr

MVC-II Schematische Aufzeichnung Des MVC (model-2), bei dem zwei Modelle zum Zuge kommen:

MVC-II Schematische Aufzeichnung Des MVC (model-2), bei dem zwei Modelle zum Zuge kommen: MVC im Web-Context bedeutet, dass es einen Controller gibt, welcher verschiedene Views kommandiert. Informationen an die Views kann der Controller per Models übergeben. Die Komplexität und das Multithreading

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Kommandozeilen effizient nutzen und verstehen

Kommandozeilen effizient nutzen und verstehen Kommandozeilen effizient nutzen und verstehen Linuxtag FH Salzburg Alexander Wirt 10. Mai 2006 Übersicht 1 Die Shell Was ist eine Shell Typische Funktionen heutiger Shells 2 Quoting Warum braucht man Quoting

Mehr

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

login: password: exit logout Strg+Alt+Backspace passwd passwd $ passwd Changing password for user (current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

VNUML Projektpraktikum

VNUML Projektpraktikum VNUML Projektpraktikum Michael Monreal, Tomasz Oliwa 14. Juni 2006 Abstract Entstanden im Projektpraktikum Simulationen mit User Mode Linux, der vnuml Multiinstaller und VOToN, das VNUML-Old-To-New Programm

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Formale Sprachen. Anwendungen formaler Sprachen Adressen, Kaffeeautomaten, Programmiersprachen. Rudolf Freund, Marian Kogler

Formale Sprachen. Anwendungen formaler Sprachen Adressen, Kaffeeautomaten, Programmiersprachen. Rudolf Freund, Marian Kogler Formale Sprachen Anwendungen formaler Sprachen Adressen, Kaffeeautomaten, Programmiersprachen Rudolf Freund, Marian Kogler (http://xkcd.com/208) Gültige Adressen: Favoritenstraße 9, 1040 Wien Reumannplatz

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

For Schleife beim Scripting in Batch Files (Dateien)

For Schleife beim Scripting in Batch Files (Dateien) For Schleife beim Scripting in Batch Files (Dateien) 1. Grafische Darstellung STG und UML 2. In der Command Shell Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985 2001 Microsoft Corp. D:\Dokumente

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

IT-Zertifikat: Allgemeine Informationstechnologien II PHP IT-Zertifikat: Allgemeine Informationstechnologien II PHP PHP ( PHP: Hypertext Preprocessor ) ist eine serverseitige Skriptsprache: Der PHP-Code wird nicht wie bei JavaScript auf dem Clientrechner ausgeführt,

Mehr

Programmieren in Python

Programmieren in Python % Vorlesung 4: Input/ Output und Filehandling % Matthias Bieg Programmieren in Python Interaktiver Modus Code wird Zeile für Zeile programmiert und direkt ausgeführt Vorteil: Das Verhalten von Codefragmenten

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Python Programmieren. Variablen, Ausdrücke und Anweisungen

Python Programmieren. Variablen, Ausdrücke und Anweisungen Python Programmieren Funktionen Module und Namensräume Datentypen in Python Was noch zu sagen bleibt... richard rascher-friesenhausen Programmierung SS 12 Daten: Wert und Typ Variablen Variablennamen und

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

Übung zur Einführung in die empirische Mikroökonomik (Ökonometrie II) Einführung in STATA. Universität Bamberg. Professur für VWL, Sozialpolitik

Übung zur Einführung in die empirische Mikroökonomik (Ökonometrie II) Einführung in STATA. Universität Bamberg. Professur für VWL, Sozialpolitik Übung zur Einführung in die empirische Mikroökonomik (Ökonometrie II) Einführung in STATA Universität Bamberg Professur für VWL, Sozialpolitik Sommersemester 2005 Dipl.-Vw. Christoph Wunder () Einführung

Mehr

Aufgabensammlung IT 4131. Shellprogrammierung Teil I

Aufgabensammlung IT 4131. Shellprogrammierung Teil I Aufgabensammlung IT 4131 Shellprogrammierung Teil I Fragen: I.1 Was ist eine Shell? Skript 1.1.2, S. 4 a) aus der Sicht des Betriebssystems b) aus der Sicht des Anwenders I.2 Was ist ein Shell-Skript?

Mehr

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B. C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

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

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen! Grundstrukturen: Sub [name]([übergabe]) End Sub [Übergabe] ist

Mehr

(Unix) Shell Programmierung

(Unix) Shell Programmierung (Unix) Shell Programmierung Was ist die Shell überhaupt? Zunächst ein Kommandozeileninterpreter, eine Schnittstelle zwischen Benutzer und Betriebssystem. Aber sie ist mehr! Wie wir später sehen werden

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

P r o g r a m m a b l a u f s t e u e r u n g

P r o g r a m m a b l a u f s t e u e r u n g Jede Programmiersprache braucht Konstrukte zur Steuerung des Programmablaufs. Grundsätzlich unterscheiden wir Verzweigungen und Schleifen. Schleifen dienen dazu, bestimmte Anweisungen wiederholt auszuführen,

Mehr

3. Auflage. O Reillys Taschenbibliothek. Windows PowerShell 3.0. kurz & gut. Lee Holmes. Deutsche Adaption von Rolf Masuch O REILLY

3. Auflage. O Reillys Taschenbibliothek. Windows PowerShell 3.0. kurz & gut. Lee Holmes. Deutsche Adaption von Rolf Masuch O REILLY O Reillys Taschenbibliothek 3. Auflage Windows PowerShell 3.0 kurz & gut O REILLY Lee Holmes Deutsche Adaption von Rolf Masuch Inhalt Einleitung................................................ 2 Installation.....................................................

Mehr

BASH Handout Vorlesungsbegleitend Version 2.0 10.04.2012

BASH Handout Vorlesungsbegleitend Version 2.0 10.04.2012 BASH Hanut Vorlesungsbegleitend Version 2.0 10.04.2012 I. Motivation (1) Warum Bash? Viele grafische Programme unter Linux/Unix sind Abbildungen von Kommanzeilenprogrammen. Das Arbeiten mit der Kommanzeile

Mehr

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

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

Mehr

ubasic Port für STM32F4 von Uwe Becker

ubasic Port für STM32F4 von Uwe Becker ubasic Port für STM32F4 von Uwe Becker Das original ubasic von Adam Dunkels findet sich unter : http://dunkels.com/adam/ubasic/ Die Minimal -Version vom ubasic-port für den STM32F4 beinhaltet folgendes

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Werkzeuge der Informatik UNIX

Werkzeuge der Informatik UNIX Autor: David Mainzer Institut für Informatik 1 Werkzeuge der Informatik UNIX Prof. Dr. Gabriel Zachmann (zach@in.tu-clausthal.de) David Mainzer (dm@tu-clausthal.de) Institut für Informatik 17. Dezember

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Wiederholung: Prozesse

Wiederholung: Prozesse Wiederholung: Prozesse ablaufende Programme = Prozesse Typische Operationen: laufende Prozesse anzeigen (ungewünschte) Prozesse beenden Werkzeuge: ps, top, kill, nice Dr. Carsten Gnörlich Tag 4 / 1 Wiederholung:

Mehr

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo Aufgabe ist die Entwicklung einer vereinfachten Variante der beliebten Programmiersprache Logo. Die Aufgabe ist in drei Stufen zu erledigen, von der wir zunächst nur die erste Stufe bekannt geben. Die

Mehr

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

LINUX Gesamtmitschrift

LINUX Gesamtmitschrift LINUX Gesamtmitschrift Martin Rabensteiner, 22.11.2015 Filesystem unter Linux - Keine Laufwerksbuchstaben - ~ Home-Verzeichnis User - Versteckte Dateien.filename Pfade 1. Absoluter Pfad eindeutiger Weg

Mehr

Wozu Shell Scripts? Was ist ein Shell Script?

Wozu Shell Scripts? Was ist ein Shell Script? 1 2 Was ist ein Shell Script? Ein Shell Script ist eine Textdatei bestehend aus Program- und Funktionsaufrufen Shell internen Kontrollstrukturen Variablenzuweisungen Das schreiben von Shell Scripts verlangt

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen. Python Unter Windows empfiehlt sich der Download von Python unter folgender URL, http:// www.python.org/download/. Linux Distributionen wie z.b. Ubuntu liefern Python direkt in Ihrer Paketverwaltung mit:

Mehr

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene

Mehr

SWP Prüfungsvorbereitung

SWP Prüfungsvorbereitung 20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c

Mehr

Dateien und Verzeichnisse

Dateien und Verzeichnisse Arbeiten mit und LPI Essentials Hochschule Kaiserlautern 28. Oktober 2015 und Arbeiten mit Table of Contents 1 Einleitung 2 Dateinamen 3 Allgemeines Kommandos für Auflisten von Verzeichnisinhalten Erstellen

Mehr

Kapitel 5: PowerShell-Skripte

Kapitel 5: PowerShell-Skripte Kapitel 5: PowerShell-Skripte Abseits der interaktiven Ausführung kann die PS auch Skripte verarbeiten, die mit der Dateierweiterung ".ps1" gekennzeichnet werden. Die "1" steht für die Version der PS.

Mehr

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

Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Wirtschaftsinformatiker Systemprogrammierung I - Aufgaben zur Erlangung der Klausurzulassung für Informatiker und Nachfolgend finden Sie die drei Aufgaben, die Sie als Zulassungsvoraussetzung für die Scheinklausur am 18.7.2001

Mehr

Art der Info: Technische Background Info Teil 1 (April 2002)

Art der Info: Technische Background Info Teil 1 (April 2002) Betrifft: Autor: Oracle 9i New Features SQL und PL/SQL Christine Hansen (christine.hansen@trivadis.com) Art der Info: Technische Background Info Teil 1 (April 2002) Quelle: Aus dem NF9i-Kurs und NF9i-Techno-Circle

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Schleifenprogrammierung in C/C++, Fortran und Pascal

Schleifenprogrammierung in C/C++, Fortran und Pascal Schleifenprogrammierung in C/C++, Fortran und Pascal Stefan Ackermann Mathematisches Institut der Universität Leipzig 8. April 2009 1 Die kopfgesteuerte Schleife Bei der kopfgesteuerten Schleife steht

Mehr

Einführung in AWK. Holger Jakobs (bibjah@bg.bib.de) 2003-03-31. 1 Vorstellung des Programms 1

Einführung in AWK. Holger Jakobs (bibjah@bg.bib.de) 2003-03-31. 1 Vorstellung des Programms 1 Einführung in AWK Holger Jakobs (bibjah@bg.bib.de) 2003-03-31 Inhaltsverzeichnis 1 Vorstellung des Programms 1 2 awk-anweisungen 2 2.1 Variablen in awk.................................. 3 3 Funktionen

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

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

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum /LQX[*UXQGODJHQ, (LQI KUXQJLQGLH6KHOO 'DWHLHQXQG 9HU]HLFKQLVVH :DVLVW]XWXQ" X Anmelden am System X System herunterfahren X Grundlegendes zur Shell X Das Hilfesystem X Dateioperationen X Bewegen im Verzeichnisbaum

Mehr

Eine Einführung in Perl

Eine Einführung in Perl Eine Einführung in Perl entstanden im Proseminar Unix-Tools Technische Universität München von Sebastian Vogl Inhaltsverzeichnis 1 Geschichte, Ursprung und Merkmale... 3 1.1 Wie ist Perl enstanden?...

Mehr

Programmieren mit PERL eine Einführung

Programmieren mit PERL eine Einführung Informationstechnik Programmieren mit PERL eine Einführung Prof. Dr. Wolf-Fritz Riekert Hochschule für Bibliotheks- und Informationswesen (HBI) Stuttgart mailto:riekert@hbi-stuttgart.de http://v.hbi-stuttgart.de/~riekert

Mehr

Variablen - %Hashes Was ist ein Hash? 'Assoziative Arrays'

Variablen - %Hashes Was ist ein Hash? 'Assoziative Arrays' Was ist ein Hash? 'Assoziative Arrays' Hashes sind array-ähnliche Datenstrukturen, die aus Schlüssel-Wert Paaren bestehen. Artikel + Preis Apfel 0,45 Banane 0,75 Ananas 1,49 Birne 0,59 %Artikel = Apfel

Mehr

Shell-Programmierung fur Unix und Linux

Shell-Programmierung fur Unix und Linux Rainer Krienke Shell-Programmierung fur Unix und Linux Grundlagen, Werkzeuge und praktische Skripte 3., erweiterte Auflage HANSER Inhaltsverzeichnis Vorwort 11 1 Einleitung 15 1.1 Die Unix-Shell 15 1.2

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

Dateien: String(Text)-Verarbeitung: Dateiverwaltung: Komprimierung: Übersicht. grep, strings, file, cmp, diff, tail, head. tr, cut, sort, uniq

Dateien: String(Text)-Verarbeitung: Dateiverwaltung: Komprimierung: Übersicht. grep, strings, file, cmp, diff, tail, head. tr, cut, sort, uniq !" # $%&&' ($$))(&&'))*) Übersicht Dateien: grep, strings, file, cmp, diff, tail, head String(Text)-Verarbeitung: tr, cut, sort, uniq Dateiverwaltung: find, which, du, df, quota, tar, touch Komprimierung:

Mehr

10 Lesen und Schreiben von Dateien

10 Lesen und Schreiben von Dateien 10 Lesen und Schreiben von Dateien 10 Lesen und Schreiben von Dateien 135 10.1 Mit load und save Binäre Dateien Mit save können Variableninhalte binär im Matlab-Format abgespeichert werden. Syntax: save

Mehr

L A TEX, Linux, Python

L A TEX, Linux, Python L A TEX, Linux, Python Daniel Borchmann, Tom Hanika, Maximilian Marx 17. Dezember 2014 cba Grundlagen von GNU/Linux Grundlagen von GNU/Linux Eine kurze Geschichte von GNU / Linux Eine kurze Geschichte

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Inhalte der Vorlesung. 4. Der Scanner-Generator lex. 4. Der Scanner-Generator lex. 4.1 lex: Grundlagen

Inhalte der Vorlesung. 4. Der Scanner-Generator lex. 4. Der Scanner-Generator lex. 4.1 lex: Grundlagen Inhalte der Vorlesung 4. Der Scanner-Generator lex 1.Einführung 2.Lexikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc (3

Mehr

DSLinux Skriptbasierte Inventarisierung für Linux

DSLinux Skriptbasierte Inventarisierung für Linux DSLinux Skriptbasierte Inventarisierung für Linux www.docusnap.com TITEL DSLinux AUTOR Docusnap Consulting DATUM 21.04.2015 Die Weitergabe, sowie Vervielfältigung dieser Unterlage, auch von Teilen, Verwertung

Mehr

Steuern des GSR-Interface mit QBasic

Steuern des GSR-Interface mit QBasic Steuern des GSR-Interface mit QBasic Erstellt von Jochen Sendler, Geschwister-Scholl-Realschule Mannheim Inhaltsverzeichnis 1. Die Programmiersprache QBasic 3 2. Starten von QBasic 3 3. Ansteuern einzelner

Mehr

Reguläre Ausdrücke in Python

Reguläre Ausdrücke in Python Wintersemester 2009/2010 1 Metazeichen, Quantoren, Gruppierung 2 findall, finditer 3 sub, subn 4 split 5 Match Objects 6 greedy 7 Gruppen-Namen 8 Assertions Reguläre Ausdrücke Reguläre Ausdrücke Reguläre

Mehr

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else Kontrollstrukturen 1. Bedingter Ablauf: if, if-else 2. Blöcke von Code 3. Wiederholungsschleife: for mit Inkrement und Dekrement Operatoren 4. erweiterte Eigenschaften von printf() 5. Die relationalen

Mehr

UNIX - LINUX Shell Programmierung

UNIX - LINUX Shell Programmierung Motivation UNIX - LINUX Shell Programmierung Grundlagen: Dateien und Prozesse Datenstrukturen, Umgebung Kontrollstrukturen Eingebaute Befehle Shell-Programme schreiben Dr. Michael Höding Unix-Linux Shell-Programmierung

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

Shell Scripts, Zeit-Diebe und Who Is Who

Shell Scripts, Zeit-Diebe und Who Is Who Betriebssysteme Shell Scripts 1 Praktikum Shell Shell Scripts, Zeit-Diebe und Who Is Who Sommersemester 2004 M. Thaler, März 2000/2002 Inhalt 1. Einführung 2 1.1 Ziel 2 1.2 Durchführung 2 1.3 Praktikumsunterlagen

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Arbeiten mit Linux und an der Kommandozeile

Arbeiten mit Linux und an der Kommandozeile Arbeiten mit Linux und an der Kommandozeile AST, Wintersemester 2013/2014 1 Einleitung Es wird hier ein kleiner Einblick zum Arbeiten mit der grafischen Oberfläche KDE und an der Kommandozeile unter Unix

Mehr

Computer und Software 1

Computer und Software 1 omputer und oftware 1 hristof Köhler 7. aple Programmieren Folien: alint Aradi Details zu den Klausuren Die Klausuren finden am 11. bzw. 12. ärz statt. Die genaue Einteilung erfolgt nach dem 31. Januar

Mehr

Grundlagen der Programmierung in C Basics

Grundlagen der Programmierung in C Basics Grundlagen der Programmierung in C Basics Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Was ist ein Programm? Abstrakt: Zeichenfolge entsprechend einer formalen

Mehr

Scriptless JSP. Motivation. Expression Language (EL) JSP Standard Tag Library (JSTL)

Scriptless JSP. Motivation. Expression Language (EL) JSP Standard Tag Library (JSTL) Scriptless JSP Motivation Expression Language (EL) JSP Standard Tag Library (JSTL) Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Motivation: EL public class Car { public Engine getengine() {}

Mehr

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von

Mehr