57
1 BASH Shell © 2006 Prof. Dr. G. Hellberg Working with the Working with the bash shell bash shell Prof. Dr. G. Hellberg Prof. Dr. G. Hellberg 2006 2006

© 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

Embed Size (px)

Citation preview

Page 1: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

1 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Working with theWorking with the

bash shellbash shell

Prof. Dr. G. HellbergProf. Dr. G. Hellberg

20062006

Working with theWorking with the

bash shellbash shell

Prof. Dr. G. HellbergProf. Dr. G. Hellberg

20062006

Page 2: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

2 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Zielsetzung

• Umleiten der Ein- und Ausgaben eines Kommandos• erkennen und ändern der allgemeinen Variablen der Shell-

Umgebung• neue Variablen erstellen und exportieren• Dateien der Umgebung editieren, um Variablen für den

Shell-Start zu erstellen• Zweck und Eigenschaften eines Shell Scripts• erstellen und ausführen eines einfachen Shell Scripts• einsetzen von allgemeinen Bedingungsabfragen in Shell

Scripten

Page 3: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

3 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Kommando Ein- und Ausgabe• die BASH Shell ist zuständig für die Bereitstellung einer

Benutzungsschnittstelle und der Interpretation von Kommandos, die in die Kommandozeile eingegeben werden

• die BASH Shell kann die Kommandoeingabe und Ausgabe verändern, stellt dem Benutzer bestimmte Shell „metacharacters“ auf der Kommando Zeile bereit

• file descriptors– nummerische Kennzeichen werden benutzt, um

Kommandoeingaben und Kommandoausgaben zu definieren

Page 4: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

4 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Kommando Ein- und Ausgabe

• Standard-Eingabe (stdin)– stellt Informationen dar, die während der Ausführung zu

einem Kommando eingegeben wurden

• Standard-Ausgabe (stdout)– stellt die gewünschte Ausgabe eines Kommandos dar

• Standard-Error (stderr)– stellt Fehlermeldungen dar, die von einem Kommando

generiert wurden

Page 5: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

5 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Kommando Ein- und Ausgabe stdin

0

file /etc/host /etc/h

stdout stderr

1 2

file descriptors (0, 1, 2)

Page 6: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

6 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umleitungen

• Die BASH Shell kann Standard-Ausgaben und Standard-Errors von der Monitorausgabe in eine Datei umleiten– das erfolgt mit dem Umleitungszeichen „>“ , gefolgt vom

absoluten oder relativen Pfadnamen der Datei

• die Standard-Ausgabe und Standard-Error können gleichzeitig in 2 verschiedene Dateien umgeleitet werden

• um den Inhalt festzuhalten, ist es wichtig 2 verschiedene Dateinamen für Standard-Ausgabe und Standard-Error zu verwenden

Page 7: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

7 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmleitungenKommando Beschreibung

command 1>file Die Standard-Ausgabe wird in eine

command >file Datei umgeleitet

command 2>file Die Standard-Error wird in eine Datei umgeleitet

command 1>fileA 2>fileB Standard-Ausgabe wird in Datei A und Standard-Error in

Datei B umgeleitet

command 1>file 2>&1 Standard-Ausgabe und Standard-Error werden in eine Datei

command >file 2>&1 umgeleitet

command 2>file 1>&2

command 2>file >&2

Beispiele für Umleitungen 1/2

Page 8: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

8 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmleitungenKommando Beschreibung

command 1>>file Die Standard Ausgabe eines Kommandos wird einer Datei

command >>file angehängt

command 2>>file Der Standard-Error eines Kommandos wird einer Datei

angehängt

command 0<file ein Kommando wird einer Datei entnommen und an die

command <file Standard-Eingabe weitergeleitet

Beispiele für Umleitungen 2/2

Page 9: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

9 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Pipesmehrere Kommandos miteinander verbinden

stdout stdin stdout stdin

Kommando1 | Kommando2 | Kommando3

Page 10: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

10 BASH Shell

© 2006 Prof. Dr. G. Hellberg

PipesKommando Beschreibung

nl nummeriert Zeilen in einer Datei

tr ersetzt Zeichen in einem Text einer Datei

sort sortiert Zeilen einer Datei alphanummerisch

sort -r umgekehrte alphanummerische Sortierung der Zeilen

wc Zählt die Anzahl der Zeilen, Wörter und Zeichen einer Datei

wc -l Zählt die Anzahl der Zeilen (lines)

wc -w Zählt die Anzahl der Wörter (words)

wc -c Zählt die Anzahl der Zeichen (characters)

nützliche Filter-Kommandos 1/2

Page 11: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

11 BASH Shell

© 2006 Prof. Dr. G. Hellberg

PipesKommando Beschreibung

grep Zeigt Zeilen einer Datei an, die auf einen regulären Ausdruck zutreffen

pr formatiert eine Datei zum Drucken

kann z.B. Datum und Seitenzahl auf jede Seite einfügen

pr -d formatiert eine Datei, so daß 2 Seiten auf einem Blatt gedruckt werden (double-spaced)

nützliche Filter-Kommandos 2/2

Page 12: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

12 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umleitungen/Pipes• xargs holt sich Argumente aus der Standard-

Eingabe, um ein Kommando zu vervollständigen

– z.B. ls a* | xargs cat

„ls“ listet alle Dateien auf, die mit „a“ beginnen, die Ausgabe wird in die Eingabe von „xargs“ durch „|“ weitergeleitet. „xargs“ vervollständigt das Kommando „cat“ sozusagen mit der Ausgabe von „ls“ und listet somit den Dateiinhalt aller Dateien die mit a beginnen auf.

• tee ist ein Hilfsmittel, welches die gleichzeitige Umleitung in eine Datei und auf den Monitor erlaubt

Page 13: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

13 BASH Shell

© 2006 Prof. Dr. G. Hellberg

LPI exam 101• 1.103.1 Work on the command line

Weight: 5

Description: Candidates should be able to Interact with shells and commands using the command line. This includes typing valid commands and command sequences, defining, referencing and exporting environment variables, using command history and editing facilities, invoking commands in the path and outside the path, using command substitution, applying commands recursively through a directory tree and using man to find out about commands.

• Key files, terms, and utilities include:

. bash export unset

echo man ~/.bash_history

env pwd ~/.profileexec set

Page 14: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

14 BASH Shell

© 2006 Prof. Dr. G. Hellberg

LPI exam 102• 1.111.2 Tune the user environment and system environment

variablesWeight: 3

Description: Candidate should be able to modify global and user profiles. This includes setting environment variables, maintaining skel directories for new user accounts and setting command search path with the proper directory.

• Key files, terms, and utilities include:env export set unset

/etc/profile /etc/skel

Page 15: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

15 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Anpassen der Shell

Mit den folgenden Methoden kann die Linux Umgebung angepasst werden

– alias (Pseudonym)– symbolische Verknüpfungen– Umgebungsvariablen (environment variables)

Page 16: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

16 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Aliases benutzen

• alias: - „ersetzt“ ein Kommando durch ein anderes

- dient zur Abkürzung immer wiederkehrender Kommandofolgen

Syntax:

alias <neuerAlias>=<Kommando>

• z.B. alias md=mkdir

bei Eingabe von md wird nun das Kommando mkdir ausgeführt

Page 17: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

17 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Shell Variablen

• eine BASH Shell hält mehrere Variablen im Speicher– eine Variable ist lediglich ein reservierter Platz im Speicher,

der Informationen enthält, auf die zugegriffen werden können

• viele Variablen werden Umgebungsvariablen genannt, wenn sie vom System gesetzt wurden und Informationen enthalten, auf die das System und Programme regelmäßig zugreifen

Page 18: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

18 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Shell Variablen

• Sie können eigene Variablen erstellen und anpassen

– diese werden dann als benutzerdefinierte Variablen (user defined) bezeichnet

• zusätzlich zu den Umgebungs- und benutzerdefinierten Variablen gibt es noch weitere spezielle Variablen, die nützlich sind, wenn Sie z.B. Kommandos ausführen oder Dateien und Verzeichnisse anlegen.

Page 19: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

19 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Benutzerdefinierte Variablen

• Variablenbezeichnung (variable identifier)– ist der Name der Variablen

• Wenn neue Variablen erstellt werden ist es wichtig, folgendes über die Variablenbezeichnung zu wissen:– muß nicht mit einer Nummer beginnen– alphanummerische Zeichen, Bindestrich und Unterstrich

können auch enthalten sein

Page 20: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

20 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Benutzerdefinierte Variablen

• Viele Kommandos, die auf der Shell laufen, arbeiten in seperaten „subshells“– die subshell wird von der aktuellen Shell erstellt, das wird

forking“ genannt– Variablen, die in der aktuellen Shell erstellt wurden, sind

nicht verfügbar in den subshells

Page 21: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

21 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Andere Variablen

• Es gib andere Variablen, die nicht angezeigt werden bei der Eingabe der „set“ und „env“ Kommandos

– diese Variablen erfüllen spezielle Funktionen in der Shell

• ein Beispiel für diese speziellen Variablen ist die früher benutzte „UMASK“ Variable– sie erfüllt spezielle Funktionen der BASH Shell und wird

durch das „umask“-Kommando gesetzt

Page 22: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

22 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsvariablen• set

– wenn keine Option angegeben wird, zeigt dieses Kommando den Namen und Inhalt aller Shell Variablen und Funktionen an

– wenn eine Option angegeben wird, werden Umgebungsvariablen gesetzt/entfernt

• env– zeigt eine Liste der BASH Variablen und deren

augenblicklichem Inhalt– zeigt nur ´exported´ Variablen

• unset– entfernt Funktionen und Variablen aus der aktuellen

Umgebung

Page 23: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

23 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmgebungsvariablenVariable Beschreibung

bash zeigt den kompletten Pfad der BASH Shell an

bash_version zeigt die Version der BASH Shell an

display umleiten der Ausgabe des X Windows an einen anderen Computer oder ein anderes Gerät

env Verzeichnis der BASH „runtime configuration“ Datei

(normalerweise: ~/.bashrc)

EUID tatsächliche User ID (Effective User ID) des aktuellen Benutzers

allgemeine BASH Umgebungsvariablen 1/5

Page 24: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

24 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmgebungsvariablenVariable Beschreibung

histfile der Dateiname, in der früher eingegebene Kommandos gespeichert werden (normalerweise: ~/.bash_history)

histfilesize Anzahl der Kommandos, die in der „histfile“ gespeichert werden können (normalerweise: 1000 Kommandos)

histsize Anzahl der früher eingegebenen Kommandos, die im Speicher während der Sitzung abgelegt werden können

(normalerweise: 1000 Kommandos)

home zeigt den Pfad des Home-Verzeichnisses des aktuellen Benutzers an

allgemeine BASH Umgebungsvariablen 2/5

Page 25: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

25 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmgebungsvariablenVariable Beschreibung

hostname zeigt den Hostnamen des Linux Systems an

logname zeigt den aktuellen Benutzernamen an

mail zeigt den Ort der Datei an, in der die eMails gespeichert werden

oldpwd zeigt die meist verwendeten Arbeitsverzeichnisse an

ostype gibt das augenblickliche Betriebssystem aus

allgemeine BASH Umgebungsvariablen 3/5

Page 26: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

26 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmgebungsvariablenVariable Beschreibung

path Verzeichnisse, in denen nach ausführbaren Dateien gesucht werden soll (Kommandoeingabe -> Datei nicht im aktuellen Verzeichnis -> sucht automatisch die

„path“ Verzeichnisse durch

ps1 aktuelle Eingabeaufforderung

pwd zeigt aktuelles Arbeitsverzeichnis an (Print Working Directory)

shell zeigt den vollständigen Pfad der aktuellen Shell an

allgemeine BASH Umgebungsvariablen 4/5

Page 27: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

27 BASH Shell

© 2006 Prof. Dr. G. Hellberg

UmgebungsvariablenVariable Beschreibung

random erstellt eine Zufallszahl wenn ein Zugriff erfolgt

term dient zur Ermittlung der Terminal Einstellungen

allgemeine BASH Umgebungsvariablen 5/5

Page 28: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

28 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsvariablen• export

• platziert lokale Variablen in die Shell Umgebung– Bsp.: path=$:/home

export path

• echo• gibt eine Zeichenfolge an die Standardausgabe weiter

– Bsp.:» echo “1“ gibt eine 1 auf dem

Monitor aus

» echo “1“ > /maerz/termine schreibt in die Datei „termine“ im

Verzeichnis „maerz“ eine

1

• exec• laden und ausführen eines neuen Programmes• erstellt keine neue Shell

Page 29: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

29 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsvariablen

• bash_history– Shell History des Benutzers– ist eine versteckte Datei im Home-Verzeichnis eines

Benutzers– vorgegebene Einstellungen stehen in .profile, bashrc usw.

• .profile– Benutzerspezifischer Pfad- und Umgebungsaufbau– Einträge in dieser Datei überschreiben die Voreinstellungen

in /etc/profile

Page 30: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

30 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsvariablen

• /etc/profile– systemweites Einrichten der Umgebungsvariablen und

Pfade– Benutzer nutzen Variablen aus dieser Datei, sofern sie

nicht die lokale .profile außer Kraft setzen

• /etc/skel– enthält Dateien die zum erstellen des Home-Verzeichnisses

benutzt werden während des Kommandos „useradd“

Page 31: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

31 BASH Shell

© 2006 Prof. Dr. G. Hellberg

LPI exam 102• 1.109.1 Customize and use the shell environment

Weight: 5

Description: Candidate should be able to customize shell environments to meet users' needs. This objective includes setting environment variables (e.g. PATH) at login or when spawning a new shell. It also includes writing bash functions for frequently used sequences of commands.

• Key files, terms, and utilities include:function (Bash built-in command) ~/.bash_profile export ~/.bash_login env ~/.profile set (Bash built-in command) ~/.bashrc unset (Bash built-in command) ~/.bash_logout

~/.inputrc

Page 32: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

32 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsdateien

• wenn Sie die BASH Shell beenden, gehen alle Variablen, die im Speicher abgelegt sind, verloren

• um sicherzustellen, daß alle Variablen einer Shell zu jeder Zeit verfügbar sind, müssen in eine Datei, welche bei jedem Login und Starten der BASH Shell ausgeführt wird, Variablen definiert werden

– diese Dateien nennt man Umgebungsdateien (environment files)

– die unterschiedlichen Umgebungsdateien werden abhängig von der Art des BASH Shell-Aufrufs ausgeführt

Page 33: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

33 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsdateien• Interactive Login Shell

– nach einem erfolgreichem Login durch /bin/login und Lesen der /etc/passwd Datei ist die Interactive Login Shell gestartet

• /etc/profile sytemweite Umgebungsvariablen und Startprogramme

– nach /etc/profile weden die folgenden Dateien überprüft• ~/.bash_profile

– Benutzerspezifische Umgebung und Startprogramme

• ~/.bash_login

– Shell Login Parameter

• ~/.profile

– Benuterspezifische Umgebungseinstellungen

Page 34: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

34 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsdateien• Interactive Non-Login Shell

– wird über die Kommandozeile gestartet

z.B.: [prompt]$/bin/bash

• ~/.bashrc

– enthält Benutzerspezifische Alias und Funktionen

– ruft ~/.bash_profile auf --> gleiche Umgebung wie Interactive Login Shell

• Non-Interactive Shell– wenn ein Shell Script läuft – es ist nicht-interaktiv, da ein Script läuft und nicht auf

Eingaben des Benutzers zwischen den Kommandos gewartet wird

Page 35: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

35 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Umgebungsdateien

• Die BASH Shell beinhaltet weitere Umgebungsdateien

• ~/.inputrc

– Tastatureinstellungen und Funktionen für bestimmte Situationen

• ~/.bash_logout

– wird beim Logout gelesen

Page 36: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

36 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Typisches Start-Script

/etc/profile

~/.profile oder ~/.bash_profile

/etc/bashrc

~/.bashrc

Page 37: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

37 BASH Shell

© 2006 Prof. Dr. G. Hellberg

LPI exam 102• 1.109.2 Customize or write simple scripts

Weight: 3

Description: Candidate should be able to customize existing scripts, or write simple new (ba)sh scripts. This objective includes using standard sh syntax (loops, tests), using command substitution, testing command return values, testing of file status, and conditional mailing to the superuser. This objective also includes making sure the correct interpreter is called on the first (#!) line of scripts. This objective also includes managing location, ownership, execution and suid-rights of scripts.

• Key files, terms, and utilities include:while for test chmod

Page 38: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

38 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Shell Scripts

• Shell Script– Textdatei, welche eine Reihe von Kommandos und

Konstrukte für die Shell enthält und diese in Reihenfolge ausführt

• Hashpling– ist die erste Zeile eines Shell Scripts– definiert die Shell, die für die Interpretation der Kommandos

benutzt werden soll

#!

Page 39: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

39 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Komponenten eines Shell Scripts

• jede Scriptdatei muß mit einer Zeile beginnen, die den Interpreter des Scriptes definiert– z.B. #!/bin/bash

• auf jedem Script muß das Execution-Flag gesetzt sein

• jedes Script muß korrekt formulierte Anweisungen für den jeweiligen Interpreter enthalten

Page 40: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

40 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Escape Sequences

• Escape Sequences– sind Zeichensätze, die innerhalb der Tastatureingabe-Kommandos

spezielle Bedeutungen haben

Escape Sequence Beschreibung

\??? Fügt ein ASCI Zeichen in Form einer 3-stelligen

Oktalzahl ein (???)

\\ Backslash

\a ASCI Piepton

\b Backspace

common echo sequences 1/2

Page 41: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

41 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Escape SequencesEscape Sequences Beschreibung

\c verhindert den Wechsel in eine neue Zeile nach einer Kommandoeingabe

\f formale Ausrichtung

\n beginnt eine neue Zeile

\r Zeilenumbruch

\t horizontaler Tabulator

\v vertikaler Tabulator

common echo sequences 2/2

Page 42: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

42 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Auslesen der Standard-Eingabe

• Es kann vorkommen, daß Shell Scripte eine Eingabe des Benutzers, der das Script ausführt, benötigen– diese Eingabe kann in einer Variable für eine spätere

Benutzung gespeichert werden

• read – holt sich die Benutzereingabe aus der Standard-Eingabe

und platziert diese in eine Variable, welche von einem Argument spezifiziert wird

Page 43: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

43 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Entscheidungskonstrukt

• Entscheidungskonstrukte

sind die weitverbreitetste

Art von Konstrukten, die in

Shell Scripten benutzt werden

• ändern den Ablauf von

Programmen durch eine

Benutzereingabe oder einem

Kommando im Programm selber

Programmstart

Entscheidungsfrage

Entscheidungsfrage

ja nein

ja nein

Reihe von Kommandos

Reihe von Kommandos

Reihe von Kommandos

Page 44: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

44 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Das „if“ Konstrukt• Allgemeine Regeln für das „if“ Konstrukt

– elif (else if) und else Anweisungen sind optional

– unbegrenzte Anzahl von elif Anweisungen

– die „do these“ Anweisung kann mehrere Kommandos beinhalten, aber nur einen pro Zeile

– die frühere „this is true“ Anweisung des if Syntax kann ein Kommando oder eine Bedingungsabfrage sein

– das Ende eines jeden Konstrukts muß mit der umgekehrten Anweisung markiert werden (if --> fi)

Page 45: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

45 BASH Shell

© 2006 Prof. Dr. G. Hellberg

test (Bedingungsabfrage)

• diese Bedingungsabfrage wird von fast jedem Shell Script benutzt

– es ist ein einfaches aber kraftvolles Hilfsmittel– die Bedingung wird eckigen Klammern [ ] angegeben

if [...]

then

#ifcode

else

#elsecode

fi

Page 46: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

46 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Allgemeine „test“-Anweisungen„test“ Beschreibung

[ A = B ] Zeichenkette A ist gleich Zeichenkette B

[ A != B ] Zeichenkette A ist nicht gleich Zeichenkette B

[ A -eq B ] Zahlenwert von A ist gleich Zahlenwert von B

[ A -ne B ] Zahlenwert von A ist nicht gleich Zahlenwert von B

[ A -lt B ] Zahlenwert von A ist kleiner als Zahlenwert von B

[ A -gt B ] Zahlenwert von A ist größer als Zahlenwert von B

[ A -le B ] Zahlenwert von A ist kleiner-gleich Zahlenwert von B

Page 47: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

47 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Allgemeine „test“-Anweisungen„test“ Beschreibung

[ A -ge B ] Zahlenwert von A ist größer-gleich Zahlenwert von B

[ -r A ] A ist eine existierende Datei/Verzeichnis und istlesbar

[ -w A ] A ist eine existierende Datei/Verzeichnis und ist schreibbar

[ -x A ] A ist eine existierende Datei/Verzeichnis und ist ausführbar

[ -f A ] A ist eine Datei die existiert

[ -d A ] A ist ein Verzeichnis das existiert

Page 48: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

48 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Spezielle „test“-Anweisungen„test“ Beschreibung

[ A = B -o C = D ] Zeichenfolge A ist gleich Zeichenfolge B

ODER

Zeichenfolge C ist gleich Zeichenfolge D

[ A = B -a C = D ] Zeichenfolge A ist gleich Zeichenfolge B

UND

Zeichenfolge C ist gleich Zeichenfolge D

[ !A = B ] Zeichenfolge A ist NICHT gleich Zeichenfolge B

Page 49: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

49 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Struktur einer if/then/else Anweisungif [Bedingung]

then

wird nur ausgeführt wenn die

Kommandoblock Bedingung erfüllt wird

else

wird nur ausgeführt wenn die Kommandoblock Bedingung nicht zutrifft

fi

wird unabhängig von dem

weitere Kommandos Ergebnis der Bedingungsabfrage ausgeführt

Page 50: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

50 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Das „case“ Konstrukt

• Der „case“-Befehl vergleicht den Wert einer Variablen mit mehreren verschiedenen Mustern von Texten oder Zahlen

• kommt eine Übereinstimmung zustande, wird das Kommando, welches rechts neben dem Suchmuster steht, ausgeführt

• wie das „if“-Konstrukt muß auch das „case“-Konstrukt mit mit der Umkehrung beendet werden (case --> esac)

Page 51: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

51 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Die „&&“ und „||“ Konstrukte

• obwohl die „if“ und „case“-Konstrukte sehr vielseitig sind, gibt es einige kürzere Konstrukte, die verwendet werden, wenn in einem Programmablauf nur eine Entscheidung getroffen werden muß

– diese Konstrukte sind „&&“ und „||“– Syntax der Konstrukte:

• Kommando && Kommando

• Kommando || Kommando

Page 52: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

52 BASH Shell

© 2006 Prof. Dr. G. Hellberg

„while“ Schleifen

• dieses Konstrukt überprüft am Anfang der Schleife eine Bedingung

• die Schleife wird solange durchlaufen, bis die Bedingung zutrifft, also wahr ist; es wird dann eine 0 zurückgegeben und damit in den exit Status gewechselt– „while“ Schleifen sind in Situationen, in denen die genaue

Anzahl der Schleifenwiederholungen unbekannt sind, sehr nützlich

while <Kommando>

do

<Kommando>

done

Page 53: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

53 BASH Shell

© 2006 Prof. Dr. G. Hellberg

„for“ Schleifen

• ist die wichtigste Schleife– sehr unterschiedlich zur „for“ Schleife in der

Programmiersprache C

for arg in [list]

do

<Kommando>

done

– [list] kann „wildcards“ enthalten

Page 54: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

54 BASH Shell

© 2006 Prof. Dr. G. Hellberg

LPI exam 102• 1.108.5 Notify users on system-related issues

Weight: 1

Description: Candidates should be able to notify the users about current issues related to the system. This objective includes automating the communication process, e.g. through logon messages.

• Key files, terms, and utilities include:/etc/issue /etc/issue.net /etc/motd

Page 55: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

55 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Login-Nachrichten

• /etc/issue– ist eine Textdatei, die angezeigt wird bevor sich ein lokaler

Benutzer am Server anmeldet

• /etc/issue.net– ist eine Textdatei, die angezeigt wird bevor sich ein

Remote-Benutzer über telnet am Server anmeldet

• /etc/modt– ist eine Textdatei, die nach einem erfolgreichem Login am

Server angezeigt wird• die motd (message of the day) wurde früher vor dem

Ausführen der Login-Shell angezeigt

Page 56: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

56 BASH Shell

© 2006 Prof. Dr. G. Hellberg

Zusammenfassung

• 1.103.1 Work on the command line– bash– set, env, unset, export– ~/.profile

• 1.103.4 Use streams, pipes, and redirects– < , << , > , >>– | ,– tee, xargs

• 1.109.1 Customize and use the shell environment– function– ~/.bash_profile, ~/-bashrc, ~/.bash_logout

Page 57: © 2006 Prof. Dr. G. Hellberg 1 BASH Shell Working with the bash shell Prof. Dr. G. Hellberg 2006 Working with the bash shell Prof. Dr. G. Hellberg 2006

57 BASH Shell

© 2006 Prof. Dr. G. Hellberg

ENDE

Fragen?Fragen?