Vorkurs Linux Grundlagen

Ähnliche Dokumente
Wiederholung: Prozesse

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

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

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

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

Computer & GNU/Linux Einführung Teil 4

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

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

Lernziele Dateiverwaltung Bearbeiten von Textdateien Sichere Anmeldung per SSH-Schlüssel. Linux für Anfänger

Grundlagen der Programmierung

Bash-Skripting Linux-Kurs der Unix-AG

Shell-Scripting Linux-Kurs der Unix-AG

Arbeiten in der Unix-Kommandozeile

Shell-Scripting Linux-Kurs der Unix-AG

Linux - a bit advanced

Arbeiten in der Unix-Kommandozeile

Bash-Skripting Linux-Kurs der Unix-AG

UNIX Die wichtigsten Befehle

Übung 4: Schreiben eines Shell-Skripts

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Unix/Linux Grundlagen für Einsteiger

Vorsemesterkurs Informatik

Vorlesung Unix-Praktikum

Inhaltsverzeichnis Erste Schritte Grundprinzipien in Linux

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

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

Übung: Entwickeln eines Shell-Skripts

Crashkurs Kommandozeile

Anleitung: Webspace-Einrichtung

Einführung Unix Shell

Dateien und Verzeichnisse

Arbeiten mit der Shell Teil 1

Arbeiten mit der Shell Teil 1

cs106 Informatiklabor Teil 1: Java-Installation

Linux-Camp: Remote-Zugriff

Eprog Starthilfe. 5. Oktober Einleitung 2

Einführung in die Kommandozeile

Archivieren und Komprimieren, Globs

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

Einführung in die Angewandte Bioinformatik

Arbeiten mit der Shell Teil 1

Bash-Scripting Linux-Kurs der Unix-AG

Wiederholung und Vertiefung. Programmieren in C. Pointer und so... thoto. /dev/tal e.v. 6. April 2013 (Version vom 11. April 2013) Programmieren in C

Contents. Subversion Einrichten. Vorbereitung Folgende Tools werden benötigt. Ladet diese herunter und befolgt die Installationsanweisungen.

Terminal & Shell-Skripte

Shell-Scripting Linux-Kurs der Unix-AG

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

Da einige Befehle gerne in Vergessenheit geraten werden hier einige essentielle und nützliche Befehle aufgelistet.

Vorlesung Unix-Praktikum

Einführung in die Kommandozeile

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

Vorlesung Unix-Praktikum

Praktikum RO1 Einführung Linux / Ubuntu / Bash

Übersicht Shell-Scripten

Vorlesung Unix-Praktikum

Vorkurs Linux Grundlagen

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

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

Linux-Einführung Übung

Arbeiten mit der Shell Teil 1

Material zum Grundlagenpraktikum ITS. eine kleine Linux-Befehlsreferenz. Stand: Oktober 2007 zusammengestellt von: Cornelia Menzel Version 1.

Arbeiten mit der Shell Teil 2

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

SHELL WE BEGIN? EINE EINFÜHRUNG IN DIE SHELL. Max Rosin - ANKÜNDIGUNGEN

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

LINUX Gesamtmitschrift

Arbeiten mit der Shell Teil 2

SCI Linux Einführung

Basiskonzepte des Rechnerbetriebs

Mit PuTTY und WinSCP an der Pi

Kurzanleitung für den MyDrive Client

Literatur. Einführung in Unix. Login. Passwort. Mag. Thomas Griesmayer. Benutzererkennung und Passwort Case-Sensitiv Prompt

Linux-Befehlsreferenz

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Linux und Shell-Programmierung Teil 5

ÜBUNG Regeln für die Hausaufgaben. Was gibt es im UNIX-Pool zu beachten? Der erste Besuch im UNIX-Pool

Linux Prinzipien und Programmierung

UNIX/Linux Lösung. Mär 14, 17 20:40 Seite 1/6. Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?):

Linux-Camp: Linux als Server am Beispiel LAMP

Arithmetik in der tcsh

Docusnap Script Linux. Skriptbasierte Inventarisierung für Linux

Arbeiten mit der Shell in Linux

OpenSSH installieren (Windows) Was ist OpenSSH?

Benutzer und Rechte Teil 1, Paketverwaltung

Python 3.6. Erste Schritte auf dem Mac. Syshack. 22. Juni 2017 Version 2.0. Python Erste Schritte auf dem Mac Syshack, 22.

Shell-Scripting Linux-Kurs der Unix-AG

Technische Praxis der Computersysteme I 3. Vorlesung

Archivieren und Komprimieren, Globs

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

Vorkurs Unix Grundlagen

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

Terminal Was ist ein Terminal?:

L A TEX, Linux, Python

UNIX/Linux-Minikurs. Ralf Seidler, Daniel Walther, Torsten Bosse. Institut für Informatik Friedrich-Schiller-Universität Jena

105.1 Shell, Scripting

Arbeiten mit Linux und an der Kommandozeile

Transkript:

Vorkurs Linux Grundlagen Heute: Vorkurs Linux / Informatik Tag 4 Von zu Hause mit dem Uni Rechner verbinden Voreinstellungen für die Kommandozeile Kommandozeilen Programmierung kleine Programme : Aliase if Abfragen und for Schleifen Kommandozeilen Skripte Live Program: Script für nutzlose Image Macros :) Mattias Schäffersmann Tag 4 / Folie 1

Wiederholung: Prozesse ablaufende Programme = Prozesse Typische Operationen: laufende Prozesse anzeigen (unerwünschte) Prozesse beenden Werkzeuge: ps, top, kill, nice Mattias Schäffersmann Tag 4 / Folie 2

Wiederholung: Dateiverwaltung Dateien verwalten vieles kennen wir schon: pwd, ls, cd, cp, mv, rm,... Weitere typische Werkzeuge Lese /Schreibrechte verwalten (id, chmod) Dateien nach Namen finden (find) Komprimieren und archivieren (gzip, bzip2, xz, tar) Mattias Schäffersmann Tag 4 / Folie 3

Wiederholung: E Mail Netiquette Schwächen von SMTP Kryptographische Unterschriften Mattias Schäffersmann Tag 4 / Folie 4

Was machen wir heute: Von zu Hause mit dem Uni Rechner verbinden Voreinstellungen für die Kommandozeile Kommandozeilen Programmierung kleine Programme : Aliase if Abfragen und for Schleifen Kommandozeilen Skripte Live Program: Script für nutzlose Image Macros :) Mattias Schäffersmann Tag 4 / Folie 5

Block 4: Einloggen Typische Aufgaben Wie komme ich von zu Hause auf die Uni Rechner? Wer sitzt gerade noch am Rechner? Datenaustausch von zu Hause mit dem Uni Rechner Mattias Schäffersmann Tag 4 / Folie 6

Von zu Hause am Uni Rechner arbeiten ssh : secure shell > ssh porta.techfak.uni-bielefeld.de -l <name> der einzige von außen zugängliche Uni Rechner euer Benutzername porta hat nicht genug Rechenleistung von dort mit ssh auf andere Rechner weiterverbinden siehe auch: http://www.techfak.uni bielefeld.de/ags/rbg/de/rechner unix porta.html Mattias Schäffersmann Tag 4 / Folie 7

X Sessions über ssh tunneln Voraussetzung: Euer Client hat X11 Linux oder *BSD: Mac OS X: optional ab 10.5 dabei Windows: geht nicht außerdem: schnelle Netzverbindung Aufruf: > ssh porta.techfak.uni-bielefeld.de -X -l <name> Mattias Schäffersmann Tag 4 / Folie 8

Auf Linux Rechner wechseln ssh : secure shell > ssh leonardo wechselt auf anderen Linux Rechner (hier: leonardo), um dort Programme auszuführen Es gibt eine Sammeladresse für den Server Pool: > ssh linux.compute.techfak.uni-bielefeld.de > ssh linux.compute Mattias Schäffersmann Tag 4 / Folie 9

Lokalen Rechner untersuchen who : show who is logged on > who zeigt alle angemeldeten ( logged in ) Benutzer nur auf dem lokalen Rechner in großen Netzwerken nur begrenzt hilfreich Mattias Schäffersmann Tag 4 / Folie 10

Datenaustausch mit zu Hause (1) scp : secure copy von zu Hause auf den Uni Rechner übertragen euer Benutzername ( login ) > scp datei <Benutzername>@porta.techfak.uni-bielefeld.de: die zu übertragende Datei (der einzige) von außen zugängliche Uni Rechner Mattias Schäffersmann Tag 4 / Folie 11

Datenaustausch mit zu Hause (2) vom Uni Rechner Daten nach Hause holen: > scp <benutzername>@porta.techfak.uni-bielefeld.de:datei. Mattias Schäffersmann Tag 4 / Folie 12

Möglichkeiten unter Windows WinSCP: nur Dateien übertragen http://winscp.net/de PuTTY: Terminal und Dateien übertragen http://www.chiark.greenend.org.uk/~sgtatham/putty/ nicht möglich: Fensterweiterleitung Mattias Schäffersmann Tag 4 / Folie 13

Beispiel: WinSCP Mattias Schäffersmann Tag 4 / Folie 14

Beispiel: PuTTY Mattias Schäffersmann Tag 4 / Folie 15

Block 5: Shell Programmierung Typische Aufgaben Voreinstellungen für häufig verwendete Programme Abfragen und Schleifen programmieren Kommandozeilen Skripte am Beispiel der Bourne Shell (bash) Mattias Schäffersmann Tag 4 / Folie 16

Aliase (1) alias : Ein Programm unter einem anderen Namen verwenden Motivation: Immer ls l tippen ist lästig > alias ll= ls -l > ll ls -l wird als neuer Befehl mit dem Namen ll definiert in Zukunft kann man einfach ll tippen Mattias Schäffersmann Tag 4 / Folie 17

Aliase (2) Genauere Betrachtung: > alias s2= sort -k 2 -n > s2 planeten.txt Shell ersetzt linke Seite der Gleichung (s2) durch rechte Seite (sort k 2 n) alias kann weitere Aufrufwerte haben (planeten.txt) Mattias Schäffersmann Tag 4 / Folie 18

Aliase automatisch setzen.bashrc : bash resources Konfigurationsdatei wird beim Starten der Kommandozeile ausgeführt was ihr in die.bashrc hineinschreibt gilt als hättet ihr es direkt eingegeben Aktivieren der Änderungen: gelten in jedem Fenster, das ihr danach öffnet > source.bashrc (im Benutzerverzeichnis) Mattias Schäffersmann Tag 4 / Folie 19

Warnung Vermurkste.bashrc kein vernünftiges Arbeiten mehr möglich Vorsichtsmaßnahmen > cp.bashrc.bashrc-alt, dann ändern! besser: Versionskontrolle Änderungen durch öffnen eines neuen Fensters prüfen! Editor erst schließen, wenn Änderungen okay sind! Mattias Schäffersmann Tag 4 / Folie 20

Shell Skripte (1) Shell Skript = Datei, die Kommandozeilen Programme aufruft Prinzipieller Aufbau der Datei: #! /bin/bash Shell zum Ausführen des Skriptes echo Hallo echo hier echo bin ich Aufrufe, wie ihr sie auch direkt tippen würdet Mattias Schäffersmann Tag 4 / Folie 21

Shell Skripte (2) Ausführen von Shell Skripten 1. Möglichkeit: > source skript.bash 2. Möglichkeit: > chmod u+x skript.bash >./skript.bash Mattias Schäffersmann Tag 4 / Folie 22

Suchpfade einstellen (1) Shell Skripte verhalten sich wie echte Programme warum dann >./skript.bash und nicht einfach > skript.bash? Die Shell hat folgende Quellen für Programme: eingestellte Suchpfade Programme aus direkt angegebenen Pfaden (./) Mattias Schäffersmann Tag 4 / Folie 23

Suchpfade einstellen (2) Idee: spezielles Verzeichnis für Skripte einrichten > mkdir shell-skripte > mv skript.bash shell-skripte... und dann in den Suchpfad der Shell aufnehmen: > PATH=$PATH:~/shell-skripte alte Suchpfadkomponenten > skript.bash (und ausprobieren) neue Suchpfadkomponente Mattias Schäffersmann Tag 4 / Folie 24

Suchpfade einstellen (3) Vorsicht: vermurkster Suchpfad alle Programme weg (Programme sind noch da, aber die Shell findet sie nicht mehr) PATH=$PATH:~/shell-skripte Erste Hilfe: absolute Pfade benutzen, z.b. > /bin/ls > /usr/bin/emacs nicht vergessen (beliebte Falle ; ) Mattias Schäffersmann Tag 4 / Folie 25

Suchpfade einstellen (4) Ein dicker Bock, den man niemals schießen darf: den Punkt. in den Suchpfad aufnehmen Im Verzeichnis /tmp gebe es folgendes Skript #!/bin/bash rm -rf ~/* und zwar mit dem Namen ls. #löscht das Benutzerverz. Würdet ihr dort./ls aufrufen? Nein? Dann nehmt. nicht in euren Suchpfad auf! Mattias Schäffersmann Tag 4 / Folie 26

Argumente an Shell Skripte übergeben Beispiel zur Übergabe von Argumenten an Shell Skripte: #!/bin/bash echo "Erstes : $1" echo "Zweites: $2" echo "Drittes: $3" echo "Anzahl: $#" echo "Alle: $*" Mattias Schäffersmann Tag 4 / Folie 27

Beispiel für Parameterübergabe Zur Erinnerung aus Tag 2: head -2 planeten2.txt; tail -n +3 planeten2.txt sort $1 Abstrahieren und zusammenfassen #!/bin/bash head -2 $1 ; tail -n +3 $1 sort > hsort.bash planeten2.txt Mattias Schäffersmann Tag 4 / Folie 28

Bedingte Ausführung (1) Bedingte Ausführung: if... then... else oder auf Deutsch: wenn... dann... sonst Wenn diese Bedingung erfüllt ist... if test $1 = "eins" then echo "$1 ist gleich eins" else echo "$1 ist ungleich eins" fi dann mache dies (Bedingung erfüllt) sonst (nicht erfüllt) mache dies Mattias Schäffersmann Tag 4 / Folie 29

Bedingte Ausführung (2) Beispiel: hsort und hsort2 zusammenfassen #!/bin/bash if test $# = 1 1 Argument? then ja, Aufruf wie hsort head -2 $1 ; tail -n +3 $1 sort else nein, Aufruf wie hsort 2 head -2 $1 ; tail -n +3 $1 sort -k $2 -n fi Mattias Schäffersmann Tag 4 / Folie 30

Bedingte Ausführung (3) Vorhandensein einer Datei als Bedingung (exists): if test -e $1 then echo "Die Datei $1 ist vorhanden!" else echo "Schade, die Datei $1 gibt es nicht." fi Mattias Schäffersmann Tag 4 / Folie 31

Bedingte Ausführung (4) if test! -e $1 then echo "Die Datei $1 ist nicht vorhanden." exit 1 fi Bricht das Skript an dieser Stelle ab Negiert die Bedingung ( wenn nicht... ) if test $# = 1; then head -2 $1 ; tail +3 $1 sort else head -2 $1 ; tail +3 $1 sort -k $2 -n fi Mattias Schäffersmann Tag 4 / Folie 32

Schleifen (1) Ihr erinnert euch? > for i in img*.jpg; do composite untertitel.png -geometry +250+550 $i neu-$i; done jetzt kommt die Auflösung Mattias Schäffersmann Tag 4 / Folie 33

Schleifen (2) Schleifen: for i in... do... done (Deutsch: für alle i in... führe... aus) #!/bin/bash Schleifenvariable for i in *.jpg do echo $i done Wertebereich der Schleifenvar. führe diese Zeile(n) für jeden Wert der Schleifenvariable einmal aus Mattias Schäffersmann Tag 4 / Folie 34

Schleifen (3) Beim direkten Eingeben der Schleife: Zeilenumbrüche durch Semikolon ; ersetzen! #!/bin/bash for i in *.jpg do echo $i done > for i in *.jpg; do echo $i; done Mattias Schäffersmann Tag 4 / Folie 35

basename basename : Dateiname ohne Pfad und Endung liefern > basename /homes/cg/bild.jpg bild.jpg > basename ~cg/bild.jpg.jpg bild Mattias Schäffersmann Tag 4 / Folie 36

Umbenennen von Dateiendungen (1) Problem: mv *.JPG *.jpg geht nicht! Ansatz: > basename bild.jpg.jpg bild Variable Ausgabe eines Programms der Variablen zuweisen: Programmauruf in $(...) packen > bn=$(basename bild.jpg.jpg) > echo $bn bild Mattias Schäffersmann Tag 4 / Folie 37

Umbenennen von Dateiendungen (2) Erste Version #!/bin/bash for i in *.JPG do bn=$(basename $i.jpg) echo mv $i $bn.jpg done für alles was auf.jpg endet führe aus:.jpg abschneiden umbenennen erst mal nur testen! Mattias Schäffersmann Tag 4 / Folie 38

Umbenennen von Dateiendungen (3) Zweite Version (Abstraktion:.JPG $1;.jpg $2) #!/bin/bash for i in *.$1 do bn=$(basename $i.$1) mv $i $bn.$2 done für alles was auf.jpg endet führe aus:.jpg abschneiden umbenennen > xmv JPG jpg Aufrufbeispiel Mattias Schäffersmann Tag 4 / Folie 39

Teile von Worten ersetzen (1) sed : script editor Suchen und Ersetzen per Kommandozeile > echo "Hallo" sed -e 'y/ao/oa/' Holla Betriebsart y: Buchstaben aus Liste 1 durch diejenigen aus Liste 2 ersetzen Mattias Schäffersmann Tag 4 / Folie 40

Wechseln zwischen Groß/Kleinbuchst. Beispiel: (den folgenden Aufruf in eine Zeile schreiben!) > echo "HALLO" sed -e 'y/abcdefghijklmnopqrstuvwxyz/ abcdefghijklmnopqrstuvwxyz/' hallo Mattias Schäffersmann Tag 4 / Folie 41

Anwendungsbeispiel 1: lmv #!/bin/bash klein=$(echo $1 sed -e "y/abcdefghijklmn OPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/") echo "mv $1 $klein" mv $1 $klein > lmv BILD.JPG mv BILD.JPG bild.jpg praktisch beim Datenaustausch mit Windows/FAT32 Mattias Schäffersmann Tag 4 / Folie 42

Teile von Worten ersetzen (2) Beispiel für sed Betriebsart s: > echo "img_398.jpg" sed -e 's/img/bild/' bild_398.jpg ersetzt Vorkommen des ersten Teilwortes durch das zweite Teilwort Mattias Schäffersmann Tag 4 / Folie 43

Anwendungsbeispiel 2: pmv #!/bin/bash neu=$(echo $3 sed -e "s/$1/$2/") echo "mv $3 $neu" mv $3 $neu ergibt einen partiellen Move Befehl : > pmv img bild img_2029.jpg mv img_2029.jpg bild_2029.jpg Mattias Schäffersmann Tag 4 / Folie 44

Zeilen, Wörter und Zeichen zählen wc : word count > wc gpl.txt zeigt die Anzahl der Zeilen, Wörter und Zeichen an > wc -l gpl.txt zeigt nur die Anzahl der Zeilen in der gpl.txt an Mattias Schäffersmann Tag 4 / Folie 45

Zeichen austauschen tr : translate or delete characters Tauscht Zeichen ähnlich wie sed im y Modus > tr " " "\t" Ersetzt Leerzeichen durch Tabs. > tr -s " " "\t" Ersetzt mehrere aufeinanderfolgende Leerzeichen durch ein Tab. Mattias Schäffersmann Tag 4 / Folie 46

Daten ausschneiden cut : remove sections from each line of files Trennt Zeilen an Tabs oder anderen Zeichen in Spalten. > cut -f 2 planeten2.txt wählt zweite Spalte aus > cut -f 2 -d " " eingabe.txt trennt an Leerzeichen und wählt zweite Spalte aus > ls -l cut -c 31-80 wählt Zeichenbereich aus Mattias Schäffersmann Tag 4 / Folie 47

Dateien herunterladen wget : The non interactive network downloader Läd Dateien von Webservern herunter. > wget http://imgs.xkcd.com/comics/first.png läd einen xkcd Comic herunter. > wget -O ausgabe.png [URL] speichert die URL als "ausgabe.png" > wget --referer=[refurl] [URL] behauptet von der Seite REFURL zu kommen Mattias Schäffersmann Tag 4 / Folie 48

Shell Skript live programmieren Etwas fortgeschrittenes Shell Skript Verwendet bisher vorgestellte Tools Google Bildersuche austricksen Schön nutzlos : ) Mattias Schäffersmann Tag 4 / Folie 49

Shell Skript live programmieren Etwas fortgeschrittenes Shell Skript Verwendet bisher vorgestellte Tools Google Bildersuche austricksen Schön nutzlos : ) Longcat Image Macro Generator Mattias Schäffersmann Tag 4 / Folie 50

Longcat Mattias Schäffersmann Tag 4 / Folie 51

Longcat in Aktion Mattias Schäffersmann Tag 4 / Folie 52

Vorlesung morgen... Verschiedene Kurzvorträge der Tutoren: Screen LaTeχ Editoren Mehr Shell Scripte? Mattias Schäffersmann Tag 4 / Folie 53