Vorlesung Unix-Praktikum

Ähnliche Dokumente
Vorlesung Unix-Praktikum

Vorkurs Linux Grundlagen

Vorlesung Unix-Praktikum

Wiederholung. Texteditoren Textverarbeitung. Das seht Ihr in Wordpad! Das steht wirklich in der Datei! Dr. Carsten Gnörlich Tag 3 / 1

Wiederholung: Prozesse

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

Computer & GNU/Linux Einführung Teil 4

Shell-Scripting Linux-Kurs der Unix-AG

Bash-Skripting Linux-Kurs der Unix-AG

Shell-Scripting Linux-Kurs der Unix-AG

Shell. Oder Konsole suchen im Application Finder. Auch Terminal, Bash oder Kommandozeile genannt. Bash nimmt Befehle entgegen und führt diese aus

Übersicht Shell-Scripten

Bash-Skripting Linux-Kurs der Unix-AG

Linux Kommandozeile: Einfache Skripte. 1 Wiederhohlung. 2 Einfache Skripte

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Linux und Shell-Programmierung Teil 5

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Übungen Unix-Praktikum Blatt 6

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting

Einführung Unix Shell

Linux I II III Res/Pro WN/TT Reguläre Ausdrücke Editoren Scripting. Linux II. 2 Linux II. Reguläre Ausdrücke Editoren Scripting. Ressourcen-Vorkurs

Bash-Scripting Linux-Kurs der Unix-AG

Shell-Scripting Linux-Kurs der Unix-AG

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

Programmierwerkzeuge unter Unix

Übung: Entwickeln eines Shell-Skripts

Unix-Grundkurs 1. Thema heute: Shell-Skripten

Shell-Scripting Linux-Kurs der Unix-AG

Übung 4: Schreiben eines Shell-Skripts

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.

Shell-Programmierung. von Rolf Schmidt für. LUG Frankfurt

Die Shell. Ein Vortrag von Frederik und Michael 1 / 35

Linux Prinzipien und Programmierung

Linux-Einführung Übung

Crashkurs Kommandozeile

UNIX/Linux Lösung. Mär 08, 16 16:11 Seite 1/6

Arbeiten mit der Shell Teil 2

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 1B

UNIX/Linux Lösung. Mär 18, 18 15:34 Seite 1/6

Linux und Shell-Programmierung Teil 6

Lösung von Übungsblatt 9. (Interprozesskommunikation)

Wiederholung Dinge zum Arbeiten mit dem Computer: Auto Fahrer Paket. Dr. Carsten Gnörlich Tag 2 / 1

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

Linux - a bit advanced

Grundlagen der Shellskript-Programmierung

Systemverwaltung mittels Skripts

Teil 1: Einführung in die Shell. Was ist die Shell? Wichtige Kommandos (1) Einführung in die Shell. Grundlagen der Shell-Programmierung

Arbeiten in der Unix-Kommandozeile

Arbeiten in der Unix-Kommandozeile

Luis Kornblueh. May 22, 2014

Einführung in die Kommandozeile

Unix-Shells. mehrere Befehle in einer Zeile. bash: Grundlagen. Ein- und Ausgaben umlenken. Befehle: Dateien und Verzeichnisse (1)

Okt 10, 16 17:29 UNIX/Linux Lösung

Unix/Linux Grundlagen für Einsteiger

Vorlesung Unix-Praktikum

Übung 2 - Betriebssysteme I

105.1 Shell, Scripting

Arbeiten in der Unix-Kommandozeile

Arithmetik in der tcsh

Shellkurs Shell, SSH, Skripte... Justus Pfannschmidt, Carola Bothe, Samuel Domiks Freie Universität Berlin

Technische Praxis der Computersysteme I 3. Vorlesung

Alles, was man auf der Kommandozeile eingeben kann, kann man auch in einem Skript verwenden. Umgekehrt gilt das gleiche.

Sep 25, 18 8:36 UNIX/Linux Lösung

Technische Praxis der Computersysteme 1

Versuchsziele. Dateien: a1: abcd Abcd abccd abcccd cbad cab werr werrr

Prüfung Betriebssysteme 1

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

GNU/Linux Introduction Part 3. Simon M. Haller, Sebastian Stabinger iis.uibk.ac.at

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

Shell-Programmierung fur Unix und Linux

Übungspaket 12 Der Datentyp char

Praktische Übung. Die Lernplattformen ILIAS ist mit Stud.IP verbunden, sodass Sie Lernmodule dieser Plattform

hue12 January 24, 2017

Dateien und Verzeichnisse

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Linux Tutorium I IT-SICHERHEIT WS1617 BENJAMIN KUHNERT

Grundlagen. Wie sind PHP-Dateien aufgebaut?

<? $ZeilenMax = 9; $SpaltenMax = 9; echo "<pre>";

Das CIP der Mathematik

Vorlesung Unix-Praktikum

Docusnap X - Docusnap Script Linux. Skriptbasierte Inventarisierung für Linux

4.12 Datenstrukturen/String-Bibliothek

Dateisystem 1, Suchen & Finden

Deshalb ist hello + world = 0. Umgekehrt gilt das Gleiche, weshalb 8 plus 3 gleich 83 ist. Dies ist in Zeile 5 in Terminal 2 gezeigt. In der Regel sol

Tutorium #3. Einführung in die strukturierte Programmierung Gruppe 6 Anja Karl.

Vorkurs Informatik WiSe 17/18

Arbeiten in der Unix-Kommandozeile. PeP et al. Toolbox Workshop

Ihr Heimatverzeichnis. Die Ausgangsverzeichnisse für die neu zu erstellenden Verzeichnisse sind folgender Tabelle zu entnehmen:

15 Der AWK. (Aho, Weinberger, Kernighan)

Shell-Scripting Teil 2 - Reguläre Ausdrücke

Übungsblatt 1: Zur Benutzung von Computern im CIP-Pool der Informatik

Übungspaket 25 Kommandozeilenargumente

Transkript:

1/3...mit Vorlesung 7. -, CSV- Rechnerbeiebsgruppe Technische Fakultät Universität Bielefeld 30. November 2015

2/3 Willkommen zur siebten Vorlesung Was gab es beim letzten Mal? bedingte Ausführung (if...then...else...fi) Shell-Variablen...mit

3/3 Willkommen zur siebten Vorlesung Was machen wir heute?...mit...mit

4/3 Shellskript Prinzipieller Aufbau eines Shell-Skriptes Textdatei mit folgendem Inhalt:...mit #!/bin/bash echo Hallo echo ich bin ein echo Shellskript Shell zum Ausführen des Skriptes Aufrufe, wie Ihr sie auch direkt eintippen würdet

5/3 Parameterübergabe...mit Beispiel zur Übergabe von Parametern: #!/bin/bash echo "Erstes : $1" echo "Zweites: $2" echo "Drittes: $3" echo "Anzahl : $#" echo "Alle : $*"

Variablenzuweisungen...mit Werte an Variablen zuweisen und benutzen/ausgeben: > wort=apfel > echo $wort apfel > echo ${wort}kuchen apfelkuchen Programmausgaben zwischenspeichern: > a=$(echo -n Linux wc -m) > echo $a 5 Mit Variablen rechnen: > echo $((a*2)) 10 6/3

7/3 Fallunterscheidungen...mit Bedingte Ausführung: if...then...else oder auf Deutsch: wenn...dann...sonst Wenn diese Bedingung erfüllt ist... if test $1 = "eins" then dann mache dies echo "$1 ist gleich eins" (Bedingung erfüllt ) else echo "$1 ist ungleich eins" fi sonst ( nicht erfüllt ) mache das

8/3 Motivation...mit Beispiel aus der ersten Vorlesung: > i in img*.jpg; do composite untertitel.png -geomey +250+550 $i neu-$1; done

9/3 - : i in...do...done (Deutsch: für alle i in...führe...aus)...mit #!/bin/bash variable i in *.jpg do echo $i... done Wertebereich der variable führe diese Zeile(n) für jeden Wert der variable einmal aus

10/3 - direkt eingeben...mit Bei direkten Eingeben der Schleife: Zeilenumbrüche durch Semikolon ersetzen! #!/bin/bash i in *.jpg do echo $i done i in *.jpg; do echo $i ; done ";" als Ersatz für Zeilenschaltung

11/3 über diskrete Werte laufen lassen...mit Schleife über vorgegebene Werte: > i in eins zwei drei; do echo $i; done eins zwei drei

12/3 Motivation: Wertetabelle ausgeben...mit./tab1.bash x x*x 1 1 2 4 3 9... Wie gibt man einen Wertebereich n,...,m in der Schleife vor?

...mit : Zahlenfolge ausgeben > 3 1 2 3 > 4 6 # Startwert ist 4 4 5 6 > 10 5 20 # Schrittweite ist 5 10 15 20 13/3

Beispiel: Wertetabelle ausgeben...mit #!/bin/bash echo -e "x\t x*x" i in $( 10); do echo -e "$i\t $((i*i))" done./tab1.bash x x*x 1 1 2 4 3 9... 14/3

15/3 und find...mit Alle Dateien mit Endung *.jpg finden: > find. -name "*.jpg" Bilder/img_1219.jpg ablage/foto11.jpg... Alle Dateien mit Endung *.jpg nach /Bilder verschieben: (egal in welchem Unterverzeichnis sie liegen) i in $(find. -name "*.jpg") do mv $i /Bilder done

16/3...mit : Dateiname ohne Pfad und Endung liefern > /homes/cg/bild.jpg bild.jpg > cg/bild.jpg.jpg bild

17/3 Dateiendungen umbenennen...mit Problem: mv *.JPG *.jpg geht nicht! Ansatz: > bild.jpg.jpg bild Mit Zwischenspeichern in einer Variable: > bn=$( bild.jpg.jpg) > echo $bn bild > echo $bn.jpg bild.jpg

18/3 Dateiendungen umbenennen...mit Erste Version: #!/bin/bash i in *.JPG do bn=$( $i.jpg) echo mv $i $bn.jpg done # für alles was auf.jpg endet # führe aus: erst mal nur testen! #.JPG abschneiden # umbenennen

19/3 Dateiendungen umbenennen...mit Zweite Version (Absaktion:.JPG $1;.jpg $2) #!/bin/bash i in *. $1 do bn=$( $i. $1) mv $i $bn. $2 done Aufrufbeispiel: > 2.bash JPG jpg # für alles was auf.jpg endet # führe aus: #.JPG abschneiden # umbenennen

20/3 Bilddateien umbenennen...mit Aufgabe: Satz von Dateien umbenennen + neu numerieren img_5011.jpg -> bild200.jpg img_5012.jpg -> bild201.jpg usw. Randbedingungen: 1. Reihenfolge der alten Numerierung soll bleiben 2. Startwert (z.b. 200) vorgeben

21/3 Ansatz: Datei der Reihe nach verarbeiten...mit > i in *.jpg; do echo $i; done... img 18.jpg img 19.jpg img 1.jpg img 20.jpg img 21.jpg... alte Sortierreihenfolge wird zerstört

22/3 Verwendung von sort...mit sort -V: Natürliche Sortierung von (Versions)nummern im Text > ls *.jpg sort -V img 1.jpg img 2.jpg... img 9.jpg img 10.jpg...

23/3 Integration in die -Schleife...mit Einsetzen des ls/sort-ausdrucks mit Hilfe von $(...): #!/bin/bash i in $(ls *.jpg sort -V); do echo $i done img 1.jpg img 2.jpg... img 9.jpg img 10.jpg...

Lösung des Problems mit Hilfe von Variablen(-arithmetik) #!/bin/bash zaehler=$1 # Startwert zuweisen...mit i in $(ls *.jpg sort -V); do echo mv $i bild${zaehler}.jpg zaehler=$((zaehler+1)) # hochzählen done >./.bash 201 mv img 1.jpg bild201.jpg mv img 2.jpg bild202.jpg mv img 3.jpg bild203.jpg... 24/3

25/3 Arbeiten mit CSV-...mit CSV: character separated values Typische Darstellung von als Textdateien: Bielefeld;21243;mittel;Station 44;1.Januar 2010 Herd;5741;hoch;Mast 38;1.Januar 2010 Gütersloh;28759;mittel;Mast 92;1.Januar 2010 Bielefeld;12535;hoch;Mast 81;2.Januar 2010 Trennzeichen (hier: ;) beliebig wählbar solange es nicht innerhalb der Daten vorkommt!

26/3 Arbeiten mit Spalten aus CSV- auswählen...mit : Spalten aus auswählen typ. Aufruf: -d ennzeichen -f spalten Trennzeichen mit Bedeutung in der Shell entschärfen : -d \;... -d \... typische Spaltenauswahlen: -f 2,5,9 Spalten 2,5,9 auswählen -f 2-4,7 Spalten 2 bis 4 und 7 -f 5- alle Spalten ab der 5.

27/3 Arbeiten mit Beispiele...mit Spalten 1,2 und 4 auswählen: > -d\; -f1,2,4 messung.csv Bielefeld;21243;Station 44 Herd;5741;Mast 38 Gütersloh;28759;Mast 92 Spalten 1,2 und 5 nur für Bielefeld auswählen: > grep Bielefeld messung.csv -d\; -f 1-2,5 Bielefeld;21243;1.Januar.2010 Bielefeld;12535;2.Januar.2010 Bielefeld;24817;3.Januar.2010... Spalten vertauschen später

28/3 Arbeiten mit Serienfehler in Spalten korrigieren...mit Bielefled;21243;mittel;Station 44;1.Januar 2010 Herd;5741;hoch;Mast 38;1.Januar 2010 Güterloh;28759;mittel;Mast 92;1.Januar 2010 Bielefled;12535;hoch;Mast 81;2.Januar 2010 Herd;20885;niedrig;Mast 3;2.Januar 2010... wir brauchen Suchen und Ersetzen für die Kommandozeile

29/3 Suchen und Ersetzen innerhalb von Textdateien (zu denen auch CSV gehört!)...mit : script editor - Suchen und Ersetzen per Kommandozeile Ersetzen des ersten Vorkommens: > echo "alt alt alt" e " s/ alt/neu/" > neu alt alt Ersetzen aller Vorkommen: > echo "alt alt alt" e "s/alt/neu/ g" > neu neu neu s - Beiebsart (hier: Ausdruck suchen und ersetzen; es gibt noch weitere g - Modifier (hier: globale Ersetzung)

30/3 Suchen und Ersetzen Fehler in der Tabelle korrigieren...mit > -e "s/bielefled/bielefeld/g" <messung-typo.cs Bielefeld;21243;mittel;Station 44;1.Januar 2010 Herd;5741;hoch;Mast 38;1.Januar 2010 Gütersloh;28759;mittel;Mast 92;1.Januar 2010 Bielefeld;12535;hoch;Mast 81;2.Januar 2010...

31/3 mit Leerzeichen als Spaltenennern Ausgabe von ls spaltenweise zerlegen...mit Ziel: Größe und Namen von Dateien (Spalten 5,9) exahieren Problem: beachtet 3 Leerzeichen als 3 leere Spalten! unterschiedlich viele Leerzeichen > ls l rwxr r 1 cg cg 612 20. Nov 14:55 gen.bash rw r r 1 cg cg 12447 20. Nov 14:56 messung.csv > ls -l -d\ -f 5,9 Nov Nov 12447 messung.csv Nov 16:38 17:43

32/3 mit Leerzeichen als Spaltenennern einzelne Zeichen umwandeln oder zusammenfassen...mit : Zeichen umwandeln oder zusammenfassen Zeichen komprimieren: > echo "abxxxbacxxxxxxb" -s "x" abxbacxb Zeichen umwandeln: > echo "abxxxbaccxxxxxxb" "xc" "yd" abyyybaddyyyyyyb Groß-/Kleinschreibung konvertieren: > echo GROSS [:upper:] [:lower:] gross

33/3 mit Leerzeichen als Spaltenennern Lösung zum Auswählen von Spalten aus ls -l...mit ls -l -s " " -d\ -f 5,9 612 gen.bash 238 ls-size.bash 12447 messung.csv 283 rechner.bash 4502 verbrauch.txt 4096 verzeichnis wie bekommt man eine spaltenweise Ausgabe?

34/3 Spaltenweise Ausgabe - matierte Ausgabe...mit - matierte Ausgabe Ansatz: "%5s %s\n" 238 ls size bash Ausgabespezifikation: Anzahl der Parameter Ausgabe der Parameter 2. Parameter 1. Parameter %5s Sing-Parameter, Spaltenbreite 5, rechtsbündig %-5s Sing-Parameter, Spaltenbreite 5, linksbündig \n Zeilenende (-vorschub)

35/3 Mehr Elemente von Shellskripten matierte Ausgabe: Dateigröße und -name...mit #!/bin/bash i in $(ls); do if test -f $i; then # Nur Dateien berücksichtige zeile=$(ls -l $i -s " ") groesse=$(echo $zeile -d\ -f 5) name=$(echo $zeile -d\ -f 9) "%5s %s\n" $groesse $name fi done

Spaltenweise Ausgabe Anwendung auf die Wertetabelle...mit #!/bin/bash "%5s %5s\n" x x*x i in $( 10); do "%5s %5s\n" $i $((i*i)) done x x*x 1 1 2 4 3 9 4 16...... 9 81 10 100 36/3

37/3 Ende der heutigen Vorlesung...mit Vielen Dank fürs Zuhören! Bis nächste Woche!