Shell-Tutorial. M. Merschmeyer. M. Merschmeyer, III. Phys. Inst. A, RWTH

Ähnliche Dokumente
Arbeiten mit der Shell in Linux

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

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

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

Arbeiten in der Unix-Kommandozeile

Arbeiten in der Unix-Kommandozeile

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

Grundlagen der Programmierung

Bash-Skripting Linux-Kurs der Unix-AG

Computer & GNU/Linux Einführung Teil 4

Vorlesung Unix-Praktikum

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

Arbeiten in der Unix-Kommandozeile

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

UNIX Die wichtigsten Befehle

Shell-Scripting Linux-Kurs der Unix-AG

Einführung Unix Shell

Bash-Skripting Linux-Kurs der Unix-AG

Shell-Scripting Linux-Kurs der Unix-AG

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

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

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

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

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

Unix/Linux Grundlagen für Einsteiger

Linux-Einführung Übung

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

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

Vorlesung Unix-Praktikum

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

105.1 Shell, Scripting

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

Einführung in die Kommandozeile

Linux und Shell-Programmierung Teil 5

Arbeiten mit der Shell Teil 1

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

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

Bash-Scripting Linux-Kurs der Unix-AG

Arbeiten mit der Shell Teil 1

Dateisystem. Heimo Schön 4/2002 Seite 1/31

Arbeiten mit der Shell Teil 1

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

Das CIP der Mathematik

Arbeiten mit der Shell Teil 1

Der Standard-Editor vi

Basiskonzepte des Rechnerbetriebs

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

ZWEITE ÜBUNG ZUR EINFÜHRUNG IN DIE PROGRAMMIERUNG FÜR COMPUTERLINGUISTEN LEONIE WEIßWEILER

Shell-Scripting Linux-Kurs der Unix-AG

Übersicht Shell-Scripten

SCI Linux Einführung

Okt 02, 17 12:28 UNIX/Linux Lösung

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

Das CIP der Mathematik

Arbeiten mit der Shell Teil 1

Shell-Scripting Linux-Kurs der Unix-AG

Einführung in die Kommandozeile

Linux Prinzipien und Programmierung

Vorlesung Unix-Praktikum

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

Zugriffsrechte. anzeigen lassen mit dem Befehl: ls -l

Arzu Sanli Ibrahim Canakci

Systemverwaltung mittels Skripts

Linux eine Einführung

Linux Kurs Vorlesung 2 - Terminal

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

BASIC Tutorial für Anfänger

Die Shell. [prompt]> <command> <flags> <args>

Terminal Was ist ein Terminal?:

Terminal & Shell-Skripte

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

2 2. Tag. 2.1 Das Dateisystem. das Dateisystem organisiert die Speicherung von Daten. viele Betriebssysteme haben verschiedene Dateisysteme

Einführung in das Arbeiten an Unix-Rechnern

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

Computer & GNU/Linux Einführung Teil 3

Linux Grundlagen Tutorium

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

Grundbefehle. LPI Zertifizierung. Auf dem Weg: Certified Linux

shell variable HOWTO.txt

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

Computer & GNU/Linux Einführung Teil 1. Simon Haller iis.uibk.ac.at

Computernutzung für Experimentalphysiker Frei progammierbare Rechner als Werkzeuge in der Experimentalphysik Teil 2

Crashkurs Kommandozeile

1 Linux-Befehlsübersicht

Programmierwerkzeuge unter Unix

Arithmetik in der tcsh

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

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 1B

Vorlesung Unix-Praktikum

Computer & GNU/Linux Einführung Teil 3

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

Vorsemesterkurs Informatik

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

Shell Programmierung. Was ist die Shell überhaupt?

Korn-Shell: Einführung in Shellscripte 1. Übersicht: Einführung 2. Die Kornshell im Detail 3.Grundlagen der Programmierung

Übung 2 - Betriebssysteme I

Basiskonzepte des Rechnerbetriebs. 6 Die Shell: Der UNIX-Kommandointerpreter

Transkript:

Shell-Tutorial M. Merschmeyer 1

Download der Vorträge Link Link http://indico.cern.ch/conferencedisplay.py?confid=91326 http://indico.cern.ch/conferencedisplay.py?confid=91326 Passwort: Passwort: 'BSC' 'BSC' (ohne (ohne '' ')') 2

Inhalt Teil 1 wichtige Shell-Befehle und Programme Teil 2 Shell-Skripte 3

Warum klicken... 4

...wenn man auch Tippen kann 5

Wichtige Shell-Befehle kurzer Überblick über grundlegende interaktive Befehle wie finde ich heraus, was ein Shell-Befehl tut? Linux Manual Pages (Beenden mit 'q'): man [Befehl] (manchmal) Option für Hilfe: [Befehl] --help etwas Vorsicht ist angebracht, ein sorgloser Umgang z.b. mit rm -rf * kennt (fast) kein Zurück ( Backup M. Winkler) 6

Linux-Verzeichnisstruktur Verzeichnisebenen werden durch '/' angezeigt nach dem Öffnen eines Terminals befindet ihr euch in eurem Home-Verzeichnis, in meinem Fall z.b. /home/home1/institut_3a/merschm unterhalb dieser Ebene liegen dann eure Dateien und Verzeichnisse Pfadnamen: absolute Pfade beginnen mit '/' starten also immer ganz oben in der Verzeichnishierarchie, z.b. /verz1/verz2/verz3(/dateiname) relative Pfade beginnen nicht mit '/' und beziehen sich immer auf die aktuelle Position in der Verzeichnishierarchie, z.b. verz4/verz5(/dateiname) oder../verz6(/dateiname) 7

Linux-Verzeichnisstruktur Befehle pwd (print working directory) wo bin ich gerade? cd (change directory) cd zum Home-Verzeichnis cd ~ zum Home-Verzeichnis cd.. eine Ebene höher cd [pfadname (abs./rel.)] (Normalfall) zum besagten Verzeichnis cd - zum vorherigen Verzeichnis es gibt noch viel mehr Möglichkeiten, lest die 'man'-seiten 8

Datei- / Verzeichnisinformationen Befehle tree (tree-like listing of dir. cont.) was ist ab hier zu finden? ls (list directory contents) ls einfache Auflistung ls -l erweiterte Informationen ls -(l)r rekursive Auflistung ls -ltr zeitgeordnet (alt neu) ls -C1 *.txt Auflistung aller.txt-dateien in einer Spalte lest die man-seiten... 9

Informationen / Zugriffsrechte Gruppe d. Größe Datum d. letzten Besitzer Besitzers in Bytes Änderung Zugriffsrechte -rw-------rw-r-----rw-rw-rwdrwx------ 1 1 1 5 merschm merschm merschm merschm inst3a 7357 Apr 18 14:41 inst3a 9822 Apr 18 14:42 inst3a 0 Apr 18 14:40 inst3a 42 Apr 18 14:40 rwx rwx rwx Rest der Welt Besitzer-Gruppe Besitzer r steht für Lesen w steht für Schreiben x steht für Ausführen Name datei1.txt datei2.txt datei3.txt verz1 Klaus Gerhardt, 08.2005 Zugriffsrechte können mit 'chmod' geändert werden Syntax: chmod [u,g,o] [+,-] [r,w,x] [D.-/Vz.-Name] z.b.: chmod go+r [Name] Leserechte f. Gruppe / Rest chmod o-rwx [Name] Wegnahme aller Rechte f. Rest 10

Platzhalter: Wildcards Klaus Gerhardt, 08.2005 11

Erstellen und Löschen Erstellen (...geht natürlich auch mit anderen Programmen...) Verzeichnisse: mkdir [(Pfad/)Verzeichnisname] mkdir -p [(Pfad/)VZ1/VZ2/VZ3/VZ4] erstellt ALLE fehlenden Verzeichnisse bis hin zu VZ4 Dateien: touch [(Pfad/)Dateiname] falls Datei nicht existiert wird eine leere Datei erstellt, andernfalls werden Zugriffsdaten auf aktuelle Zeit/Datum gesetzt Löschen (Verzeichnisse + Dateien) rm [(Pfad/)Dateiname] rm -rf [(Pfad/)Name] rm -rf * shred -u [Name] löscht besagte Datei rekursives Löschen (Dat./Verz.) (!!!) löscht alles ab akt. Verz. sicheres Löschen (mit Überschr.) 12

Kopieren und Verschieben Kopieren: 'cp [Optionen] [Quelle] [Ziel]' z.b.: cp Datei1 (Pfad/)Datei2 kopiere Datei1 in Datei2 bzw. überschreibe Datei2 mit Datei1 cp -r Verz1 (Pfad/)Verz2 rekursives Kopieren von Verz1 (inkl. Untervz.) in Verz2 cp -u Datei1 (Pfad/)Datei2 Kopieren nur, falls Quelle neuer als Ziel Verschieben: 'mv [Optionen] [Quelle] [Ziel]' z.b.: mv Datei1 (Pfad/)Datei2 verschiebe Datei1 in Datei2 mv Verz1 (Pfad/)Verz2 verschiebe Verz1 in Verz2 mv -u Datei1 (Pfad/)Datei2 Verschieben nur, falls Quelle neuer als Ziel 13

Suchen & Finden Situation Lösungen: 'find' bzw. 'which' find [Startpfad] (-type [Typ]) -name [Name] suche Datei/Verz. und kenne z.b. nur einen Teil des Namens suche Programmort Startpfad : wo soll's losgehen Typ : Datei ('f'), Verz. ('d') Name : Objektname Wildcards which [Programmname] 14

Speicherplatz Speicherplatzverbr. bzw. freier Platz? disk space usage : 'df' file space usage : 'du' df : freier Platz auf allen 'Platten' df [Pfad] : freier Platz dort, wo ich bin du (-h) : belegter Platz hier u. unterhalb du -s(h) : nur Gesamtspeicherbedarf 15

Kompression von Dateien Es gibt verschiedene Kompressionsprogramme Syntax gzip / gunzip tar zip / unzip gzip -[1 9] [Dateiname] gzip -d [Dateiname] tar -c(z)f [Archivname] [Dateiliste/Verz.] tar -x(z)f [Archivname] zip/unzip : ähnlich 16

Rund um Textdateien Textdateien auf dem Terminalfenster ausgeben N erste / letzte Zeilen einer Textdatei ausgeben head -[# Zeilen] [Dateiname] oder tail... Zeilen in einer Textdatei zählen more [Datei] : seitenw. Ausgabe, Blättern mit [space], Ende: 'q' less [Datei] : ähnlich 'more' + Vor- und Rückwärtsscrollen wc -l [Dateiname] DOS/MAC und Unix/Linux verwenden verschiedene Zeichen für das Zeilenende (CR+LF LF) Konvertierung dos2unix [Dateiname] oder unix2dos... 17

Mit Text hantieren neu: neu: ' '' ' (Pipe) (Pipe) verarbeite verarbeite die die Ausgabe Ausgabe eines eines Kommandos Kommandos mit mit einem einem weiteren weiteren Kommando Kommando $PWD $PWD Umgebungsvariable Umgebungsvariable '`Kommando`' '`Kommando`' Ausführen Ausführen in in der der Eingabezeile Eingabezeile '\(...)' '\(...)' Schützen Schützen bestimmter bestimmter Spezialzeichen Spezialzeichen grep : Textdateien nach Worten/Mustern durchsuchen cat : Textdateien auf Terminal 'dumpen' sed : Ersetzen von Worten/Mustern in Texten echo : Textausgabe im Terminal cut : Zerlegen von Text in Felder 18

Keyboard-Abkürzungen CTRL+P : vorheriges Shell-Kommando CTRL+A/E : springe zum Anfang/Ende der Kommandozeile CTRL+S/Q : Stop/Start der Terminalausgabe CTRL+D : beendet die laufende Terminal-Sitzung CTRL+C : Abbruch des gerade laufenden Programms CTRL+Z : hält das gerade laufende Programm an Wiederaufnahme in den Hintergrund verschieben mit 'bg' exklusive Wiederaufnahme im Vordergrund mit 'fg' CTRL+R : Durchsuchen der Bash-Kommando-Historie Suchbegriff eingeben Auswahl des gesuchten Kommandos mit CTRL+R 19

Prozesse (laufende Programme) Programme in Hintergrund starten '&' nach Kommando anhängen Ansicht laufender Prozesse Beenden von (z.b. verrückten) Prozessen ps aux ( grep...) top 'u' [username] top 'k' [Proz..-ID] kill (-9) [Proz.-ID] killall [Proz.-Name] 20

Ein- und Ausgaben, Pipes Ausgabe von Text und/oder Variablen echo text1 $var text2 Einlesen von Werten oder Text read [Variablenname] echo ${Variablenname} Ausgabe in Textdateien ls -l./ > [Dateiname] echo text1 > [Dateiname] Datei erzeugen + füllen echo \n text2 >> [Dateiname] an Datei anhängen Augaben eines Befehls durch weitere Befehle verarbeiten echo Ein Text sed -e 's/text/neuer Text/' ls -lr grep -i datei 21

Dies und Das Dateien direkt aus dem WWW laden mit 'wget' wget http://tldp.org/ldp/abs/abs-guide.pdf Datum und Uhrzeit abfragen mit 'date' date date +%H:%M:%S date +%d.%m.%y Tue Apr 20 09:37:17 CEST 2010 09:37:44 20.04.2010 Tab Completion : Bash kann Teile von Namen und Pfaden vervollständigen wenn man 'tab' drückt 'ac' eingeben 'tab' einmal drücken 'tab' nochmals drücken nichts passiert (Shell piept) Shell macht Vorschläge ac aclocal-1.4 aclocal-1.6 aclocal-1.9 acpi_listen activation-client aclocal aclocal-1.5 aclocal-1.7 aconnect acroread acyclic 22

Shell-Skripte Was sind Shell-Skripte? Wozu das alles? Sammlung von Shell-Kommandos (+ Programmiersprache ) in einem Text-File mit Shell-Skripten kann man eigene Befehle (mit Parametern und Ausgaben) erzeugen Durchführung von automatisierten Arbeitsabläufen Was braucht man zum Schreiben solcher Skripte einen Texteditor: vi, (X)emacs, (nicht: Word, OpenOffice, ) Shell-Kommandos: 'vi', 'emacs', 'xemacs' ((x)emacs mit '&' starten, um im interaktiven Modus zu sein) ein zu lösendes Problem, viele Beispiele und Geduld... 23

24

Shells Welche Shells gibt es? Welche sollte man verwenden? sh, csh, ksh, tcsh, bash, zsh Kriterien: Support, Up-to-date-ness, Funktionsumfang http://consult.cern.ch/writeup/shellchoice/main.ps wir werden die Bash (Bourne-again shell) verwenden, da sie extrem weit verbreitet und recht aktuell ist CMS-Software (CMSSW) verwendet csh / bash (+ Python), eigene Skripte können natürlich in Bash formuliert werden... höhere Skriptsprachen: Perl, Python, Ruby (nicht hier/heute) 25

Grundlegende Shell-Skripte Zwei Shell-Skripte, die jede(r) haben sollte.profile : wird beim Login ausgeführt... # Set up Prompt export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[32m\]\h\[\e[0m\]:\[\e[34m\]\W\[\e[0m\] > "... ( Prompt: merschm@lxportal1:temp > ) + Setzen vom Umgebungsvariablen, Funktionen,....bashrc : wird beim Start einer Shell (Terminal) ausgeführt... alias ll="ls -l --color" alias psdouble="pstops'2:0l@0.7(21cm,0)+1l@0.7(21cm,14.85cm)' " mmldc () { dcls /cms/store/user/merschme/$1; } export PATH=$PATH":"$HOME/bin/... definiert Aliases, Funktionen, Umgebungsvariablen, NB: versteckte Dateien ('.' am Anfang) werden nur mit 'ls -a' sichtbar) 26

Ein erstes Beispiel Hallo Welt -Skript #!/bin/bash echo Hallo Welt! exit 0 1. Zeile: Skript soll durch Bash verarbeitet werden (wo ist die?) öffne Sub-Shell (bei Ausführung durch './' ja, mit 'source' nein) ('#' ist sonst Kommentarzeichen) 2. Zeile: Textausgabe mit 'echo' 3. Zeile: Rücksprung zur übergeordneten Shell 27

Variablen I Umgebungsvariablen bestimmen Verhalten von Shell, Programmen und Benutzerinterface (Ansehen mit 'env') Beispiele HOME : Pfad des Home-Verzeichnisses PWD : aktueller Pfad PATH : Liste von Verzeichnissen, in denen Programme/Skripte liegen LD_LIBRARY_PATH : Verzeichnisse, in denen Programmbibliotheken liegen Zugriff auf Inhalt durch '$[Variable]', also z.b. 'echo $PATH' Lokale Variablen innerhalb eines Skripts IDIR="/tmp" NOPT=10 # installation directory # no. of options Bash-Variablen haben keinen Typ (kontextabhängig) Zugriff auf Inhalt wie bei Umgebungsvariablen 28

Variablen II Rechnen mit Variablen count=0 let count=$count+1 echo count: $count count: 1 ( Operationen: '+', '-', '*', '/', '**', '%' ) Zusammenstückeln von Strings var1= text var2=1234 var3=${var1} _ ${var2} echo var3: $var3 var3: text_1234 Variablen immer initialisieren um Probleme zu vermeiden Bash ist nicht zum number crunching gedacht! 29

Tests Logische Bedingungen ( '&&' : logisches UND, ' ' : log. ODER ) z.b. [ Bedingung1 ] && [! Bedingung2 ] '!' : invertiert 'Bedingung2' unbedingt an 'space' zwischen '[', ']' und 'Bedingung' denken! häufige Tests $VAR = string : Strings vergleichen $VAR -eq 101 : Zahlen vergleichen ( -eq, -gt, -ge, -lt, -le, -ne oder ==, >, >=, <, <= ) -e $file : Datei existiert -f $file : $file ist eine Datei -d $dir : $dir ist ein Verzeichnis 30

if, then, else und while if [ B1 ]; then (Anweisungen) else if [ B2 ]; then (Anweisungen) else (Anweisungen) fi Verschachtelung bei zu vielen Bedingungen while [ B ]; do (Anweisungen) done Abbruchbedingung beachten! 31

for loop und case for arg in [list]; do (Anweisungen) done 'arg' nimmt alle Werte der Einträge oder Variablen in '[list]' an classical example: 'arg' :i '[list]' : `seq 10` case $OPT in a) (Anweisungen) ;;... z) (Anweisungen) ;; esac mehrere, durch ';' getrennte komplexe (if, for,...) Anw. möglich ';;' nicht vergessen! (Akzent '`' : ausführen) c-syntax möglich 32

for -Beispiel durch Erzeugung von komplexen Listen mittels ' `Befehl(e)` ' kann die for-schleife sehr mächtig werden (`[Bef.]` : 'command substitution') 33

Parameter Man kann einem Shell-Skript Parameter übergeben : n-ter Par. (${n} ab n>9) : Name des Skripts : Anzahl der Parameter : alle Parameter : Prozess-ID 'shift' : schiebt alle echten Parameter um eins 'nach links' $n $0 $# $@ $$ $1 wird verworfen $2 $1 usw. 34

Optionen Optionen sind komfortabler als Parameter, allerdings auch komplexer in der Handhabung ermöglichen Skripte, die fast einem Programm gleichen Reihenfolge spielt keine Rolle Optionen können Parameter haben oder einfach nur 'Schalter' sein machen eine 'Hilfe'-Funktion 'sehr wünschenswert' 35

Hilfe Advanced Bash-Scripting Guide http://tldp.org/ldp/abs/html/ http://tldp.org/ldp/abs/abs-guide.pdf BASH Guide for Beginners http://tldp.org/ldp/bash-beginners-guide/html/index.html http://tldp.org/ldp/bash-beginners-guide/bash-beginners-guide.pdf Others http://wiki.bash-hackers.org/doku.php http://linuxseiten.kg-it.de/index.php?index=themes_bash http://subsignal.org/doc/aliensbashtutorial.html http://www.linuxconfig.org/bash_scripting_tutorial http://www.hypexr.org/bash_tutorial.php 36

37

38

Aufgabe: Macht euch diese Referenzkarte selbst 1. findet das tex-file 'refcard' (unter /usr) 2. kopiert das File in ein lokales Verzeichnis 3. ändert die Anzahl der Spalten/Seite mit 'vi' 4. kompiliert die Datei mit 'tex' 5. macht mit 'dvips' eine Postscript-Datei (A4, Landscape-Modus '-t'-option) 6. konvertiert diese Datei in eine PDF-Datei 39