unix/linux-betriebssystem einführung · entwicklungsgrundlage sind viele komponenten des freien...

235
Folie 1 Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-Imshausen Tel.: 06622/919610, eMail: [email protected] http://www.stockmayer.de Linux/UNIX-Grundlagen UNIX/Linux-Betriebssystem Einführung Version 2.26 Version 2.26 Ingenieurbüro Stockmayer GmbH Ingenieurbüro Stockmayer GmbH [email protected] [email protected] www.stockmayer.de www.stockmayer.de

Upload: others

Post on 28-Oct-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 1Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX/Linux-Betriebssystem Einführung

Version 2.26 Version 2.26

Ingenieurbüro Stockmayer GmbHIngenieurbüro Stockmayer GmbH

[email protected]@stockmayer.de

www.stockmayer.dewww.stockmayer.de

Page 2: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 2Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Ingenieurbüro Stockmayer

Herzlich Willkommen!!

Page 3: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 3Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Vorstellung des ReferentenVorstellung des Referenten

Page 4: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 4Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Vorstellung der Teilnehmer

? Name

? Firma, Abteilung, Verantwortlichkeit

? Erfahrungen mit Betriebssystemen

? Gründe für Ihre Seminar-Teilnahme

? Erwartungen

Page 5: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 5Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Organisatorisches

Teil-Teil-nehmer-nehmer-listeliste

Unter-Unter-lagenlagen

Kurs-Kurs-dauerdauer

PausenPausen

Page 6: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 6Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Seminarziele

Sie können mit dem Betriebssystem UNIX umgehen

Sie haben den Überblick über Funktionen und Leistungsumfang, vor allem Shell, Dateisystem und Editor

Sie besitzen die Voraussetzung für den Ein-

stieg in die Softwareentwicklung unter UNIX und in die Systemadministration

Page 7: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 7Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Inhalt

UNIX - EinführungUNIX - Einführung

UNIX - EigenschaftenUNIX - Eigenschaften

Die GrundlagenDie Grundlagen

Die wichtigsten Komponenten eines UNIX-SystemsDie wichtigsten Komponenten eines UNIX-Systems

– Benutzer und Gruppen Benutzer und Gruppen – DateisystemDateisystem– ProzesseProzesse– ShellShell– Editor viEditor vi

Kapitel 1

Kapitel 2

Kapitel 3

Kapitel 4

Kapitel 4.1

Kapitel 4.2

Kapitel 4.3

Kapitel 4.4

Kapitel 4.5

Page 8: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 8Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Einführung

Inhalt • UNIX-HistorieUNIX-Historie

• UNIX-StandardsUNIX-Standards

• UNIX-DerivateUNIX-Derivate

• LINUX und GNULINUX und GNU

• UNIX-StrukturUNIX-Struktur

• Grafische Oberfläche X-WindowsGrafische Oberfläche X-Windows

• UNIX-PhilosophieUNIX-Philosophie

Kapitel 1

Kapitel 1

Page 9: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Anfänge von UNIX liegen in einem Betriebssystem-Entwicklungsprojekt namens MULTICS für Großrechner der Firma General Electric in den 60er Jahren.

Da die Benutzung des Betriebssystems sehr teuer war, entwickelten die Programmierer Ken Thompson, Brian Kernighan und Dennis Ritchie der Firma AT&T für den Minicomputer DEC PDP/7 eine kleine, einfache Version eines Betriebssystems, dem sie den Namen UNIX gaben.

Das UNIX-System wurde in der Programmiersprache C geschrieben.

Der Quellcode wurde gegen eine geringe Gebühr Interessenten (z.B. Unis) zur Verfügung gestellt.

Diese entwickelten das System für ihre eigenen Lehr- und Einsatzzwecke weiter.

Die daraus entstehenden Entwicklungslinien sorgten leider zum Auseinanderlaufen der Funktionalitäten und der Schnittstellen von UNIX.

Folie 9Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

1960

1970

1979

Projekt für Großrechenanlagen führt zur Entwicklung eines kleinen Betriebssystems:

Die Anfänge von UNIX

UNIX System V(entwickelt von eigentlichenUNIX- „Erfindern“)

BSD UNIX (eine Version: SunOS)Berkeley Software Distribution,an kalifornischer Universität entwickelt

Haupt-kategorien

Historie

Page 10: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Aufgrund der Rivalität unter den HW-Herstellern erfolgte lange keine Standardisierung von UNIX.

Es gibt daher viele UNIX-Varianten, sie können aber in zwei Hauptkategorien eingeteilt werden:

UNIX System V:Wurde von den eigentlichen „Erfindern“ von UNIX entwickelt (AT&T Bell Laboratories).

BSD UNIX (Berkeley Software Distribution):Wurde an der Universität von Kalifornien in Berkeley (weiter)entwickelt (z.B. SunOS von Sun Microsystems).

UNIX System V Release 4 (UNIX SVR4) kombinierte schließlich die Eigenschaften von AT&T UNIX und BSD UNIX.

Es kann heute als das Standard-UNIX betrachtet werden (Posix == IEEE1003 == IEC9945).

LINUX entspricht diesem Standard.

Folie 10Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Standards

UNIX V System + SunOS =

UNIX System V Release 4

Standard - UNIX

Kombination von Eigenschaften der Hauptkategorien ergibt heutiges Standard-UNIX:

heute als Solarisbezeichnet

2001

Page 11: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Weitere kommerzielle UNIX-Derivate:

- IRIX (SGI)

- Ultrix (DEC, veraltet)

- XENIX (Microsoft, veraltet)

- SINIX (Siemens, veraltet)

- NextStep ( --> Apple System X)

Weitere freie (nicht-kommerzielle) UNIX-Derivate:

- BSD 386

- GNU/Hurd

- NetBSD

Folie 11Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Derivate

• Einige kommerzielle UNIX- Derivate:

– SCO UnixWare (Santa Cruz Operations, „Original-UNIX“)– Solaris (SUN, hieß früher SunOS)– HP/UX (HP)– AIX (IBM)

• Einige freie (nicht-kommerzielle) UNIX- Derivate:

- LINUX

- FreeBSD

- Minix

Page 12: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Entwicklung von LINUX wurde 1990 von dem damals 23jährigen finnischen Informatikstudenten Linus Torvalds begonnen.

Das erste lauffähige LINUX-System wurde 1991 veröffentlicht.

Seitdem wird LINUX von vielen Freiwilligen über das Internet ständig weiterentwickelt

Die aktuelle Version 4.4 ist seit Mitte 2016 verfügbar (vorher gab es 1.0, 1.2, 2.0, 2.2, 2.4, 2.6 und 3.2).

Ausgangspunkt war Minix, ein Mini-Unix-System des Informatikprofessors Andrew Tanenbaum.

Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation) unter Leitung von Richard Stallman entwickelt).

Bis auf den Kern enthält das GNU-System alles (häufig in weit verbesserter Form), was ein UNIX-System braucht (Tools, C-Compiler, Editoren, usw.).

Der eigene Kern HURD ist leider immer noch nicht fertig.

Folie 12Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Linux und GNU

1990

1991

2016

Beginn der Entwicklung von LINUX durch Linus Torvalds

Ausgangspunkt: Minix ( = Mini - Unix - System)

Basis: GNU - System (freies UNIX - System), enthält alles, was ein UNIX System braucht

Erstes lauffähiges LINUX - System

aktuelle Version 4.12

Page 13: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

1) Kern + Treiber(module)

Hardware-Abstraktion

Synchronisation der Ressourcen (CPU, Speicher, I/O, Interrupt)

Verwaltung der log. Einheiten (User, Dateisystem, Prozess, Netz)

2) Systemaufrufe (Schnittstelle zum Kern, etwa 1200, normiert)

3) Bibliotheken (Clib, Xlib, ...)

4) Dienstprogramme (UNIX-Kommandos: ls, cp, ...)

5) Benutzerschnittstelle (Shell, grafische Oberflächen)

6) Anwendungen (text- oder grafisch orientiert)

Folie 13Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Struktur

Unterscheidung von Abstraktionsebenen

1) Kern + Treiber(module)

2) Systemaufrufe

3) Bibliotheken

4) Dienstprogramme

5) Benutzerschnittstelle

6) Anwendungen

Hard-ware

Page 14: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

UNIX gilt als „unfreundliches“ Betriebssystem, rein für SW-Entwicklungs-Experten:

Dies liegt zum einen daran, dass es lange keine (einheitliche) grafische Oberfläche gab.

Zum anderen ist die Administration schwer zu erlernen, da sie wegen der fehlenden Verwaltungs-Oberflächen per Editor über Konfigurationsdateien erfolgt.

Beide Punkte sind heute nicht mehr gültig (vor allem durch das Aufkommen von LINUX).

Folie 14Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Struktur

UNIX galt lange als „unfreundliches“ Betriebssystem, weil...

... es lange keine einheitliche grafische Oberfläche gab

... die Konfigurierbarkeit wegen fehlender Tools sehr mühsam war

Page 15: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die grafische Oberfläche unter UNIX ist X-Windows.

Aufteilung in:

X-Server, der die Benutzerein- (Tastatur, Maus) und die Grafikausgabe kontrolliert.

X-Clients, die eigentlichen Anwendungen.

X-Windows arbeitet vollständig getrennt vom Betriebssystem:

Das Betriebssystem wird bei Fehlern nicht beeinträchtigt.

Kann weggelassen werden (Speicherplatz + Ressourcen).

Leicht gegen eine andere Oberfläche austauschbar.

Folie 15Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Grafische Oberfläche X-Windows

• Die grafische Oberfläche ist X-Windows

• X-Windows arbeitet getrennt vom Betriebssystem– keine Beeinträchtigung des Betriebssystem bei Fehlern – X-Windows kann weggelassen werden – leicht gegen andere Oberfläche austauschbar

X-Server X-Client

teilt sich auf in:

Page 16: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Der X-Server und die X-Clients sind grundsätzlich über Netzwerk miteinander verbunden (auch wenn sie auf dem gleichen Rechner laufen!).

Sie können daher (ohne Umprogrammierung) auch auf getrennten Rechnern laufen (remote).

Auf dem X-Client läuft die Anwendung.

Auf dem X-Server erfolgt die Darstellung und Bedienung der Anwendung.

Aussehen und Verhalten der Fenster (z.B. Tastatur- und Mausbedienung) definiert der Fenster-Manager (window manager), der ebenfalls austauschbar ist.

Die bekanntesten Fenster-Manager sind:

CDE Common Desktop Environment

KDE K Desktop Environment

Gnome

OL(V)WM OpenLook (Virtual) Windowmanager

MWM Motif Window Manager

FVWM(2/95), Afterstep, Enlightenment, ...

Folie 16Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Grafische Oberfläche X-Windows

• X-Server und X-Clients über Netzwerk verbunden, laufen aber auch auf getrennten Rechnern

Netzwerk

Prozess

X - Client

Anwendungen

X - Server

Darstellung und Bedienung der Anwendung

Netzverbindung

Page 17: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Einfacher Aufbau (simple is beautiful)

Alles ist eine Datei — Ein hierarchischer Dateibaum

Datei = Folge von Bytes mit zeilenorientiertem ASCII-Text

Viele einfache Werkzeuge einfach kombinierbar

Mündiger Benutzer wird vorausgesetzt

Jeder weiß, was er tut

Man überlegt vorher, danach ist es zu spät

Kooperatives Arbeiten wird vorausgesetzt

Nichts wird verborgen (Quellcode, Dokumentation, ...)

Kommando-orientierte Bedienung (Shell) ist zumindest möglich

Folie 17Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Philosophie

• Einfacher Aufbau

Ein hierarchischer Dateibaum

Viele einfache Werkzeuge einfach kombinierbar

• Mündiger Benutzer: Jeder weiß, was er tut

• Kooperatives Arbeiten: Nichts wird verborgen

• Kommando-orientierte Bedienung (Shell)

Page 18: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 18Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

Inhalt• Multitasking-SystemMultitasking-System• Multiuser-SystemMultiuser-System• Hierarchisches DateisystemHierarchisches Dateisystem• GeräteunabhängigkeitGeräteunabhängigkeit• Programmierbare ShellProgrammierbare Shell• NetzwerkfähigkeitNetzwerkfähigkeit• PortabilitätPortabilität• Weitere EigenschaftenWeitere Eigenschaften

Kapitel 2

Kapitel 2

Page 19: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Multitasking-System

Führt viele Programme (Prozesse) scheinbar gleichzeitig aus, ohne dass sich die einzelnen Anwendungen bei ihrer Ausführung stören.

UNIX verwendet preemptives Multitasking, d.h. ein zentraler Scheduler teilt den auszuführenden Prozessen reihum Rechenzeit zu (analog Windows NT/2000).

MS-DOS und Windows 3.1/95/98/ME setzen hingegen kooperatives Multitasking ein, d.h. die Anwendungen selbst müssen die Kontrolle über die CPU wieder abgeben (unsicher!).

Folie 19Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

• Multitasking-SystemMultitasking: Fähigkeit viele Programme scheinbar gleichzeitig auszuführen,

die einzelnen Anwendungen stören sich bei ihrer Ausführung nicht

Scheduler

Task 1

Task 2

Task 3

(z.B. kde)

(z.B. soffice)

(z.B. less)

1

2

3

zeitlicherzeitlicherAblaufAblauf

Page 20: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 20Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

• Multiuser-System

Viele Benutzer können sich gleichzeitig anmelden und interaktiv arbeiten

Jeder Benutzer hat eigene persönliche Umgebung (kann kein anderer Benutzer ändern)

Einstellungen von einzelnen Benutzern beeinflussen sich nicht gegenseitig

Page 21: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 21Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

Vergleich der Betriebssysteme

Single-Tasking

KooperativesMulti-Tasking

PreemptivesMulti-Tasking

Single - User Multi - User

MS - DOSCP/M

Windows 3.1Windows 95/98Windows ME

Windows NT/2000/XPWindows Vista, 7

OS/2

Moderne UNIX- Systeme(z.B. Solaris, SunOS, Linux-Systeme), VMS

Page 22: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Hierarchisches Dateisystem

Ein einziger Dateibaum, in den alle Platten(Partitionen) (lokal oder über Netzwerk) eingehängt (in ein Verzeichnis montiert) werden.

Es gibt keine Laufwerksbuchstaben, d.h. keine Beschränkung der Anzahl physikalischer Platten und keine Probleme mit Konfigurationsdaten beim Plattenaustausch.

Viele Dateisystem-Typen werden unterstützt (FAT, VFAT, FAT32, NTFS, HPFS, ISO9660, MINIX, EXT2, Ext3, ReiserFS, ...).

Folie 22Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

Hierarchisches Dateisystem.

// (root) (root)

usrusrtmptmphomehomebinbin etcetc

PeterPeter UrsulaUrsula

AdressenAdressenBriefeBriefePrivatPrivat GeschäftGeschäft

WurzelverzeichnisWurzelverzeichnis ein einziger Dateibaum, in den alle Platten eingehängt werden

Keine Laufwerksbuchstaben, d.h. keine Beschränkung der Plattenanzahl

(A:)(C:)

(D:)

Page 23: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Geräteunabhängigkeit

Geräte sind jegliche Hardware wie z.B. Festplatte, CD-ROM, Modem, Netzwerkkarte, Soundkarte, parallele/serielle/USB Schnittstelle, Bildschirm, Tastatur und Maus.

Jedem Gerät ist im Verzeichnis /dev (devices) eine Datei zugeordnet, über die es mit den normalen Dateioperationen ansprechbar ist.

Diese einheitliche Schnittstelle (für jedes Gerät durch einen Gerätetreiber realisiert) stellt die Geräteunabhängigkeit her.

Folie 23Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

• Geräteunabhängigkeit– Geräte sind jegliche Hardware, z.B.:

– Jedem Gerät ist im Verzeichnis /dev (devices) eine Datei zugeordnet

● Diese einheitliche Schnittstelle (durch Gerätetreiber realisiert) stellt die Geräteunabhängigkeit her

Page 24: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Programmierbare Shell

Die Shell arbeitet als Vermittler (Kommando-Interpreter) zwischen dem Benutzer und dem Kern (Herz eines UNIX-Betriebssystems), entspricht » COMMAND.COM.

Sie ist nicht im Kern integriert, sondern liegt wie eine „Schale“ um den Kern (kann daher ausgetauscht werden).

Shell-Kommandos können zu Shell-Skripten (Batchfiles) zusammengefasst und automatisch ausgeführt werden.

Die Shell bietet eine vollständige Programmiersprache.

Folie 24Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

Programmierbare Shell Shell =

- Vermittler zwischen

Benutzer und Kern

- nicht im Kern integriert, liegt

wie „Schale“ um Kern

(austauschbar)

- bietet vollständige Programmiersprache

Kernel

Shell

Kommandos

Benutzerprogramme

Shell

Page 25: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Netzwerkfähigkeit

UNIX stellt viele Netzwerk- und Kommunikationsdienste bereit:

File-, Print-, Datenbank-Server, Gateway, Firewall, Mail-, News-, WEB-, Proxy-Server, ...

UNIX-Standard-Netzwerkprotokoll ist TCP/IP (Transmission Control Protocol/Internet Protocol) wird weltweit im Internet eingesetzt

Viele Netzwerkdienste sind direkt im Kernel integriert

Folie 25Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

• Netzwerkfähigkeit– UNIX stellt viele Netzwerk- und Kommunikationsdienste bereit:

– UNIX-Standard-Netzwerkprotokoll ist TCP/IP

wird weltweit im Internet eingesetzt

– Viele Netzwerkdienste sind direkt im Kernel integriert

Page 26: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Portabilität

Bedeutet, dass Software von einer Hardware-Plattform (z.B. i386, SPARC, 68000) auf eine andere übertragbar ist, sodass Verhalten und Funktionalität erhalten bleiben.

Das UNIX-Betriebssystem ist auf sehr vielen Plattformen verfügbar (Chip-Card bis 390-Mainframe), da es zu etwa 98% in der Programmiersprache C realisiert ist.

Sehr viele unter UNIX vorhandene Anwendungen sind ebenfalls in C/C++ programmiert, und lassen sich daher auch einfach auf andere UNIX-Plattformen übertragen.

Folie 26Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

• Portabilität– Software von einer Hardware-Plattform auf eine andere übertragbar

Verhalten und Funktionalität bleiben erhalten

– UNIX-Betriebssystem auf sehr vielen Plattformen verfügbar (ca. 98% in Programmiersprache C realisiert)

– viele Anwendungen ebenfalls in C/C++ programmiert einfache Übertragbarkeit auf andere UNIX-Plattformen

Page 27: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

z.B. gibt es Linux auf Diskette, im USB-Stick oder in Handys,

auch sind Echtzeiteigenschaften in Linux-Varianten möglich.

Folie 27Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Eigenschaften

• Weitere Eigenschaften– Ressourcen-schonend (keine Graphik notwendig)

– Ausgereift, stabil und hochperformant

– 32-Bit/64-Bit-fähig

– Speicherschutz-Mechanismen + virtueller Arbeitsspeicher

– Prozess-Synchronisation über viele Mechanismen

– Multiprocessing und Clustering

– Remote-fähig

– Threads

Page 28: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 28Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Grundlagen

InhaltInhalt• Schreibweisen im SkriptSchreibweisen im Skript• An- und AbmeldenAn- und Abmelden• Anzeigen von DateienAnzeigen von Dateien• DruckenDrucken• HilfestellungHilfestellung

– Manual-SeitenManual-Seiten• SteuertastenSteuertasten• Die wichtigsten KommandosDie wichtigsten Kommandos• Kommando-SyntaxKommando-Syntax

Kapitel 3

Kapitel 3

Page 29: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

UNIX ist im englischsprachigen Raum entstanden.

Wenn möglich werden in diesem Skript deutsche Begriffe verwendet (aber die englischen Begriffe mit angegeben, da sie in der Literatur verwendet werden).

Grundsätzlich sollte man vor der englischen Dokumentation nicht zurückschrecken.

Sie ist meist in einem einfach verständlichen, technischem Englisch geschrieben und oft am aktuellsten.

Folie 29Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Schreibweisen im Skript

• Kommandos und Dateinamen werden in Courier geschrieben: ls, /etc/profile

• Platzhalter für vom Anwender vorzugebende Angaben werden GROSS, kursiv und in Courier geschrieben: DATEI, PFAD

• Optionale Angaben stehen in eckigen Klammern: [OPTIONEN ]

• mögliche Wiederholung eines Parameters: durch drei Punkte ausgedrückt. . .

Page 30: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Das Heimat-Verzeichnis (homedirectory) wird dem Benutzer vom Systemverwalter in der Datei /etc/passwd zugeordnet.

Folie 30Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

An- und Abmelden

• auf jedem Terminal wird Anmelde-Aufforderung (Login-Prompt) angezeigt

• Anmelden (Login): an beliebigen Terminal:

Benutzernamen und Paßwort eingeben

zugeordnete Login-Shell wird gestartet

Benutzer kommt ins Heimat-Verzeichnis

Eingabe-Prompt wird von Shell angezeigt und wartet auf Benutzereingaben

Page 31: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 31Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

An- und Abmelden

Sitzung (Session)• nach Anmelden: Eigentümer der Sitzung auf diesem Terminal bis zur

Abmeldung

• Alle in dieser Sitzung ausgeführten Prozesse und erzeugten Dateien gehören dem angemeldeten Benutzer

• nach dem Abmelden mit exit wird wieder Anmelde-Aufforderung angezeigt

Page 32: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 32Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

An- und Abmelden

• Login-Umgebung

Nach dem Anmelden wird konfigurierbare Login-Umgebung für den Benutzer eingerichtet:

Einstellungen und Daten, die die Sitzung steuern – (z.B.: welche Tasten lösen welche Funktionen aus)

Page 33: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 33Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 1

– Fahren Sie Ihren UNIX-Rechner hoch (Booten)!– Starten Sie die grafische Oberfläche mit startx (wenn sie nicht

automatisch gestartet wird)!

• Melden Sie sich an (Login)!

• Melden Sie sich ab (Graphik, exit)!

• Fahren Sie die grafische Oberfläche herunter!

• Fahren Sie den Rechner herunter (Graphik, ALT-STRG_ENTF)!

Page 34: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 34Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Anzeigen von Dateien

• seitenweises Anzeigen und Durchblättern von Dateiinhalten mit „Pagern“:

more DATEI

less DATEI # von Linux

• Die wichtigsten Kommandos zum Blättern:

LEERZEICHEN eine Seite weiterblättern

RETURN eine Zeile weiterblättern

/TEXT RETURN TEXT suchen (n wiederholt, next)

q more/less verlassen (quit)

h Hilfe anzeigen (help)

Page 35: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 35Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Drucken

• Kommando zum Drucken – lp oder lpr (line print)

• Das Ausdrucken einer Datei DATEI – lp DATEI oder lpr DATEI

• Die Ausgabe eines Kommandos KMDO wird ausgedruckt durch:– KMDO | lp

– (Pipe-Symbol | durch AltGr-< erzeugt)

Vor dem Drucken ev. den Text Formatieren:

pr DATEI | lp

mit den Optionen:

-l72 # 72 Zeilen pro Seite (kleines L: lines)

-o10 # um 10 Zeichen einrücken (offset)

-n # nummeriert

Beispiel:

pr -l72 -o10 -n DATEI | lp

Page 36: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Hilfe zu einem Kommando KMDO erhält man über:

Man-Pages (Standard, unter LINUX -s weglassen):

man [[-s] ABSCHNITT ] KMDO (section)

whatis KMDO (Kommandos suchen)

apropos KMDO (Begriffe suchen)

Usage-Meldungen:

KMDO -? oder (nicht bei jedem Kommando)

KMDO -h oder (nicht bei jedem Kommando)

KMDO --help (bei GNU-Programmen)

Info-Dateien (bei GNU-Programmen):

info KMDO

HowTo‘s: The Linux Documentation Project (www.tldp.org)

Folie 36Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Hilfestellung

Hilfe zu einem Kommando KMDO erhält man über:

– Man-Pages (Standard, unter LINUX -s weglassen):

man [[-s] ABSCHNITT ] KMDO (section)

– Usage-Meldungen:

KMDO -? (--help bei Linux)

– Info-Dateien (bei GNU-Programmen):

info KMDO

– HowTo‘s (in Internet www.tldp.org)

– Internet (Newsletter, Googeln)

Page 37: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Manual-Seiten haben eine feste Struktur (NAME, SYNOPSIS, DESCRIPTION, OPTIONS, ...).

Im Abschnitt SEE ALSO finden sich Verweise auf verwandte Kommandos (teilweise der gleiche Name in einem anderen Abschnitt).

Bei längeren Manual-Seiten nicht alles durchlesen, sondern mit Textsuche arbeiten (/TEXT RETURN und n/N (next) zum Wiederholen der Suche), um die gewünschte Information zu finden.

Manual-Seiten sind in folgende Abschnitte aufgeteilt:

1 Ausführbare Programme oder Shellbefehle

2 (C-)Systemaufrufe (Kernelfunktionen)

3 (C-)Bibliotheksaufrufe (Systembibliotheken)

4 Gerätedateien

5 Format und Bedeutung von Konfigurationsdateien

6 Spiele

7 Makropakete und Konventionen

8 Kommandos zur Systemadministration

9 Kernelroutinen (LINUX)

Folie 37Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Manual-Seiten

• Manual-Seiten haben feste Struktur

(NAME, SYNOPSIS, DESCRIPTION, OPTIONS, ...).

• Im Abschnitt SEE ALSO:

Verweise auf verwandte Kommandos

• längere Manual-Seiten nicht ganz durchlesen, sondern mit Textsuche arbeiten:

/TEXT RETURN und n/N (next) zum Wiederholen der Suche gewünschte Information finden

Page 38: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Weitere Steuertasten (LINUX bzw. bash-spezifisch):

Cursor-Auf/Ab In alten Kommandos blättern

Cursor-Links/Rechts, Entf, BACKSPACE, ...

Aktuelles Kommando editieren

Shift-Bild-Auf/Ab In Kommandoausgabe blättern

Strg-Alt-BACKSPACE X-Windows abbrechen

Strg-Alt-F1..F6 Textterminal 1..6 anwählen

Strg-Alt-F7 Grafikterminal anwählen

Auf englischsprachigen Tastaturen: CTRL-Taste verwenden!

Folie 38Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Steuertasten

Wichtige SteuertastenRETURN eingegebenes Kommando ausführen

BACKSPACE letztes eingegebenes Zeichen löschen

Strg-C laufendes Kommando abbrechen

Strg-D Ausloggen/Dateiende EOF (end of file)

Strg-L Bildschirm neu aufbauen

Strg-S Terminal-Scrolling anhalten (stop)

Strg-Q Terminal-Scrolling laufen lassen

Page 39: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Beispiele:

cd (change directory):

cd /etc

cd /usr/lib

cd text

pwd (print working directory) aktuelles Verzeichnis anzeigen

ls (list):

ls /etc

ls /usr/lib

ls text

ls -l (list long):

ls -l /etc

date gibt Datum+Uhrzeit aus

(date +%T ® Uhrzeit

date '+%d. %m. %Y' ® Datum

s. man date

echo 'dies ist ein Text' 'und noch einer'

grep 'made' text/gedicht

ls -l /usr/bin | more

Folie 39Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Die wichtigsten Kommandos

• cd wechselt in anderes Verzeichnis

• ls zeigt Inhalt eines Verzeichnisses an

• ls -l zeigt ein Verzeichnis ausführlich an

• * steht für alle Dateien in einem Verzeichnis

• clear löscht das Terminal

• date gibt Datum+Uhrzeit aus

• echo 'TEXT' gibt TEXT auf dem Terminal aus

• grep 'TEXT' DATEI sucht Zeilen mit TEXT in DATEI

• KMDO | more seitenweise Ergebnisanzeige eines Kommados

• exit Abmelden / Terminal-Fenster schließen

Page 40: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Bei UNIXWARE mit Alt-Druck-F1 oder Alt-Druck-h

Bei X-Terminals über die Setup(Pause)-Taste ein neues Terminal holen

Folie 40Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 2a

• Schalten Sie mit Strg-Alt-F1 auf die (virtuelle) Textkonsole 1 um und loggen Sie sich dort ein!

• Loggen Sie sich auf den Textkonsolen 2 bis 6 ein!

• Schalten Sie wieder auf die Grafikoberfläche zurück mit Strg-Alt-F7!

• Starten Sie in der Grafikoberfläche weitere Terminals!

• Loggen Sie sich wieder aus den Grafikterminals aus!

• Loggen Sie sich wieder aus den Textkonsolen aus!

Page 41: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Weitere Hilfe bei Linux:In der Menue-Leiste: Rettungsring

Folie 41Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 2b

• Sehen Sie sich die Dateien /etc/passwd, /etc/profile und gedicht mit Hilfe eines Pagers an!

• Sehen Sie sich die Manualseiten und Usage-Meldungen zum Kommando man an!

• Probieren Sie whatis und apropos mit ls aus!

• Browsen Sie in den HowTos herum!

• Probieren Sie die Steuertasten aus!

• Probieren Sie die wichtigsten Kommandos aus!

Page 42: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Whitespace: Leerzeichen, Tabulator und Zeilenvorschub (oder mehrere).

Ein Kommandoaufruf hat folgendes Aussehen:

KMDO [OPTIONEN ] [PARAMETER ]

Die einzelnen Komponenten (Wörter) des Aufrufes werden durch ein (oder mehr) Whitespaces getrennt.

Das 1. Wort auf der Kommandozeile ist immer das auszuführende Kommando.

Das Kommando liest die OPTIONEN und ändert entsprechend sein Standardverhalten.

Die PARAMETER bezeichnen meist Dateinamen, die vom Kommando zu bearbeiten sind.

Optionen sind einbuchstabig und werden durch einen Bindestrich - eingeleitet (Parameter nicht),

Optionsbuchstaben stehen für den Anfangsbuchstaben eines englischen Wortes (Merkhilfe!).

Sie stehen immer vor den Parametern.

Ihre Reihenfolge ist beliebig.

Sie können zusammengefaßt werden:

ls -l -i -a ® ls -lia

Das erste Wort, das nicht mit einem -(oder --) beginnt, schließt die Liste der Optionen ab.

Folie 42Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Kommando-Syntax

Ein Kommandoaufruf hat folgendes Aussehen:

KMDO [OPTIONEN ] [PARAMETER ]

-auszuführendes Kommando-liest Optionen, ändert entsprechend Standardverhalten

-bezeichnet Dateinamen, vom Kommando zu bearbeiten

-einbuchstabig, durch „-“ eingeleitet-stehen immer vor Para- metern-mehrere Optionen können zu einer zusammengefasst werden

Leerzeichen Leerzeichen

Page 43: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Eine expliziter Abschluß der Optionsliste ist auch durch -- möglich (z.B. um mit einem - beginnende Dateinamen zu verarbeiten).

Einige Programme kennen sehr viele Optionen (z.B. ls, ps). Bitte nur die wichtigsten merken und die anderen bei Bedarf nachschlagen!

Kommandos aus dem GNU-Projekt kennen auch Optionswörter, sie werden durch -- eingeleitet, z.B.:

ls --help --recursive --interactive

Manche Optionen benötigen einen Parameter (z.B. Änderung des Default-Trennzeichens). Er ist direkt nach der jeweiligen Option anzugeben (z.B. -t:).

Nur wenige Programme (z.B. tar, find, dd) halten sich nicht an diesen Kommando-Syntax-Standard (find / -name 'xx'; dd if=).

Folie 43Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Kommando-Syntax

Beispiele für Kommandoaufrufe Kommando Optionen + Parameter

ls -l -a -ils -lai (bzw. ls -ial, ...)ls --all --inode # Linux

more /etc/passwdtouch -- -i (bzw. rm -- -i)rm -r /home/usr1 -i # Datei -i wird gelöscht!

mount -t iso9660 /dev/cdrom /cdromsort -t: /etc/passwd

Page 44: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 44Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Grundlagen Benutzer und Gruppen

InhaltInhalt• Multiuser-SystemMultiuser-System

• BenutzerBenutzer

• Benutzer-TypenBenutzer-Typen

• Aufgaben des SuperusersAufgaben des Superusers

• GruppenGruppen

Kapitel 4

Kapitel 4.1

Kapitel 4.1

Page 45: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 45Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Benutzer

Multiuser-System: iuser-System:

mehrere Benutzer gleichzeitig

an einem Rechner

Zu jedem Benutzer (Konto, Account) gehören:

- Name (Kennung)

- Passwort

- Persönliche Umgebung (Heimat -Verzeichnis):

kann nur selbst konfiguriert und geändert werden

dort werden Dateien und Verzeichnisse angelegt

Page 46: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Es gibt folgende Benutzer-Typen:

Den privilegierten Benutzer (root)

Die gewöhnlichen Benutzer (können sich anmelden)

Verwaltungs-Benutzer (können sich nicht anmelden)

Der privilegierte Benutzer heißt auch Superuser oder Systemadministrator (bzw. Sysadmin oder root).

Jeder Benutzer erhält beim Einrichten eine beliebige, aber eindeutige Benutzer-Nummer (UID=User ID), meist größer als 100 bzw. 1000 (Linux).

Der Superuser hat die UID 0 (daran wird er erkannt).

Folie 46Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Benutzer

Privilegierter BenutzerPrivilegierter Benutzer gewöhnlicher gewöhnlicher VerwaltungsVerwaltungs-auch: BenutzerBenutzer BenutzerBenutzerSuperuser / Superuser / Systemadministrator / rootSystemadministrator / root

Benutzernummer (UID) für jeden :

UID : 0 UID: beliebig, aber eindeutig

Page 47: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Aufgaben des Superusers sind:

Installieren/Konfigurieren/Überwachen des Betriebssystems.

Einrichten von Benutzern + Gruppen

Einrichten neuer Hardware + Treiber

Einrichten/Konfigurieren von Programmen + Diensten

Backup von Programmen + Daten

Gewährleisten der Systemsicherheit (Netzwerk)

Damit er diese Aufgaben wahrnehmen kann, wird er durch keinerlei Zugriffsrechte eingeschränkt!

Deshalb sollte man höchste Vorsicht walten lassen, wenn man unter der Kennung root arbeitet.

Aufgaben, für die keine besonderen Rechte notwendig sind, daher auf keinen Fall als root durchführen.

Achtung: Löscht man unter UNIX eine Datei oder ein Verzeichnis, dann gibt es (in aller Regel) keine Möglichkeit, dies wieder rückgängig zu machen (zumindest auf der Kommandozeile).

Folie 47Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Benutzer

Der privilegierte Benutzer / SuperuserDer privilegierte Benutzer / Superuser

• Hat verschiedene Aufgaben nicht durch Zugriffsrechte eingeschränkt

wenn man als Superuser arbeitet: nur Aufgaben ausführen, für die besondere Rechte nötig sind

löscht man eine Datei oder Verzeichnis keine Möglichkeit dies rückgängig zu machen!

Page 48: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Zu jedem Account gehört ein Paßwort (sollte so gewählt sein, dass es nicht erraten werden kann, oft mindestens 6 Zeichen lang).

Der root-Account ist ebenfalls nur durch ein Passwort geschützt (das nur ganz wenige Leute kennen sollten).

Die Benutzerdaten (Name, UID, GID der primären Gruppe, Beschreibung, Login-Verzeichnis, Login-Shell) sind in der Datei /etc/passwd gespeichert.

Das (verschlüsselte) Paßwort und die Verfallszeiten von Account/Passwort stehen in /etc/shadow.

Die Kennung, unter der man angemeldet ist, kann man sich mit whoami oder who am i anzeigen lassen.

Alle aktuell angemeldeten Benutzer kann man sich mit who anzeigen lassen.

Das aktuelle Paßwort wird mit passwd (password) geändert (mind. 6 Zeichen, mind. 1 Sonderzeichen).

Auf Systemen mit NIS (Network Information System) ist yppasswd zu verwenden (yellow pages).

Folie 48Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Benutzer

• zu jedem Account gehört Paßwort

• die Benutzerdaten sind in der Datei /etc/passwd

• Paßwort und Verfallszeiten von Account/Paßwort stehen in /etc/shadow

• Änderung des aktuellen Paßworts mit passwd

• Anzeigen von:Anzeigen von:– Kennung, unter der man angemeldet ist mit:

whoami oder who am i

– allen angemeldeten Benutzern mit: who

Page 49: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Eine temporäre Änderung der Benutzerkennung ist mit su [-] [USER] (substitute user, switch user) möglich:

su USER Kennung USER, alte Umgebung beibehalten

su - USER Kennung und Umgebung von USER (inklusive Startup-Dateien und Heimat-Verzeichnis)

su Kennung root, alte Umgebung beibehalten

su - Kennung und Umgebung von root

Der Rücksprung zur vorherigen Benutzerkennung erfolgt mit exit.

Folie 49Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Benutzer

• mit su [-] [USER] temporäre Änderung der Benutzerkennung

su USER Kennung USER, alte Umgebung beibehalten

su - USER Kennung und Umgebung von USER

su Kennung root, alte Umgebung beibehalten

su - Kennung und Umgebung von root

• mit exit Rücksprung zur vorherigen Benutzerkennung

Page 50: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Neben Benutzern gibt es unter UNIX noch Gruppen, das sind Zusammenfassungen beliebiger Benutzer.

Jeder Benutzer gehört einer primären Gruppe an.

Jede Gruppe erhält beim Einrichten eine beliebige, aber eindeutige Gruppen-Nummer (GID=Group ID).

Die Gruppendaten (Name, GID, Liste der Mitglieder) sind in der Datei /etc/group gespeichert.

Folie 50Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Gruppen

• Gruppen = Zusammenfassungen beliebiger Benutzer

• Jeder gehört primären Gruppe an

• Jede Gruppe erhält beliebige, aber eindeutige Gruppen-Nummer (GID)

• Die Gruppendaten sind in der Datei /etc/group

Page 51: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die aktuelle Gruppe und in welchen Gruppen man Mitglied ist, kann man sich durch id (identity) – eventuell mit Option -a (all) – anzeigen lassen.

groups gibt nur die Namen der Gruppen aus, in denen man Mitglied ist.

newgrp GRP (new group) wechselt in eine andere Gruppe (nur beim Anlegen von Dateien relevant, man muss zuvor in /etc/group eingetragen sein).

Der Rücksprung zur vorherigen Gruppenkennung erfolgt mit exit.

Folie 51Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Gruppen

Anzeigen von:Anzeigen von:

• aktueller Gruppe mit id (identity)

• Namen der Gruppen, in denen man Mitglied ist mit groups

• mit newgrp GRP (new group) Wechsel in andere Gruppe

• mit exit Rücksprung zur vorherigen Gruppenkennung

Page 52: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 52Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Benutzer und Gruppen

Kommandoswho(ami) aktuellen Benutzernamen ausgeben

who alle angemeldeten Benutzer ausgeben

(yp)passwd Paßwort ändern ((yellow pages) password)

su Benutzer ändern (substitute user)

exit aktuelle Anmeldung verlassen (Ausloggen)

id aktuellen Benutzer ausgeben (identity)

groups Gruppennamen des Benutzers ausgeben

newgrp in andere Gruppe wechseln (new group)

Beispiele:

su - # wechselt in root

su - usr16 # wechselt zu User usr16 mit Umgebung

newgrp dialup # wechselt in Gruppe dialup

Page 53: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 53Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 3a

• Ermitteln Sie Ihre eigene UID und GID durch:– entsprechende Kommandos– Ansehen der entsprechenden Konfigurationsdateien

• Loggen Sie sich mehrmals auf verschiedenen Terminals ein und überprüfen Sie anschließend, wer alles auf Ihrem System angemeldet ist.

• Ändern Sie Ihr Passwort

• Zeigen Sie alle Gruppen an, in denen Sie Mitglied sind und wechseln Sie in eine dieser Gruppen.

Page 54: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Sofern andere Benutzer bekannt und installiert sind.

Folie 54Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 3b

• Loggen Sie sich auf einer Textkonsole als anderer User ein und wieder aus.

• Wechseln Sie mit su die Benutzerkennung (mit und ohne -).

– Was für unterschiedliches Verhalten von su ergibt sich?

• Wenn Sie mehrmals hintereinander das Kommando su USER verwenden, wie oft müssen Sie dann exit eingeben, bis Sie wieder ausgeloggt sind?

Page 55: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 55Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem

Inhalt• BegriffeBegriffe

• Auskunftsfunktionen 1Auskunftsfunktionen 1

• AufbauAufbau

• Auskunftsfunktionen 2Auskunftsfunktionen 2

• Verändernde KommandosVerändernde Kommandos

• ZugriffsrechteZugriffsrechte

• StandardverzeichnisseStandardverzeichnisse

Kapitel 4.2

Kapitel 4.2

Page 56: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 56Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Inhalt „Begriffe“• Dateiname, versteckte DateiDateiname, versteckte Datei

• Dateibaum, VerzeichnisDateibaum, Verzeichnis

• Dateisystemobjekt (DSO)Dateisystemobjekt (DSO)

• Eltern-, Aktuelles, Heimat-VerzeichnisEltern-, Aktuelles, Heimat-Verzeichnis

• Pfadname, absoluter Pfad, relativer PfadPfadname, absoluter Pfad, relativer Pfad

Page 57: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Dateiname

Ein Dateiname (file name) unter UNIX kann aus bis zu 255 (bei manchen Dateisystemtypen auch mehr) beliebigen Zeichen (außer /) bestehen (in älteren UNIX-Versionen max. 14 Zeichen).

Dateinamen dürfen keinen Schrägstrich (/) enthalten, da er als Verzeichnistrenner in Pfaden dient.

Leerzeichen oder Sonderzeichen der Shell (z.B. *, ?, $, >, #, &, ...) könnten, sollten aber nicht verwendet werden (da sie sonst vor der Shell zu schützen sind).

UNIX unterscheidet grundsätzlich zwischen Groß- und Kleinschreibung, insbesondere auch in Datei- und Verzeichnisnamen.

Es ist also möglich, Dateien mit den Namen TEST, Test, test und TeSt im selben Verzeichnis zu erzeugen (dies sollte aber aus Gründen der Übersicht vermieden werden).

Versteckte Dateien im Heimatverzeichnis beginnen mit einem Punkt ., sie werden von ls (ohne Option -a) nicht angezeigt, z.B.:

.profile .bashrc .exrc

Folie 57Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Dateiname (auch: file name)• Dateinamen können aus bis zu 255 beliebigen Zeichen bestehen

• Dateinamen dürfen keinen Schrägstrich „/“ enthalten

• Leerzeichen oder Sonderzeichen der Shell (*,?,$,...)nicht verwenden

• Unterscheidung zwischen GROSSSCHREIBUNG und kleinschreibung:

TEST test TeSt tEsT ...

Page 58: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Dateibaum

Unter UNIX (wie auch in anderen Betriebssystemen) werden alle Dateien in hierarchisch organisierten Verzeichnissen abgelegt, die den so genannten Dateibaum (directory tree) bilden.

Der Startpunkt (Wurzelverzeichnis, root directory) des UNIX-Dateibaums hat den Namen / (nicht \ wie unter MS-DOS).

Folie 58Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Dateibaum• alle Dateien werden in hierarchisch organisierten Verzeichnissen abgelegt,

die bilden den Dateibaum

• Startpunkt (Wurzelverzeichnis, root directory) des UNIX-Dateibaums ist „/“

/ (root)

usrtmphomebin etc

Peter Ursula

AdressenBriefePrivat Geschäft

Wurzelverzeichnis

dev var

Page 59: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Verzeichnis (Katalog, Ordner)

Ein Verzeichnis (directory) ist eine vom Betriebssystem verwaltete Datei, die eine Liste von Namen von Dateien und Unterverzeichnissen enthält

Zu jedem Namen enthält sie einem Verweis (Index-Node oder Inode) auf die zugehörigen Daten.

Die Namen innerhalb eines Verzeichnisses müssen eindeutig sein (jeder kann nur 1* vorkommen).

Folie 59Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Verzeichnis (Katalog, Ordner)

Verzeichnis

= vom Betriebs-systemverwaltete Datei

enthält Liste von NamenNamenvon Dateien undUnterverzeichnissen

enthält zu jedem NamenNamen VerweiseVerweise auf zugehörigeDaten

auch: Index-NodeIndex-Nodeoder InodeInode

NamenNamen müssen eindeutig sein sind einmalig

Page 60: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Dateisystemobjekt (DSO)

Zusammenfassung von Dateien und Verzeichnissen.

Jedes DSO gehört:

Einem bestimmten Benutzer (Besitzer)

Einer bestimmten UNIX-Gruppe (Gruppe).

Jedes DSO kennt Zugriffsrechte für:

Den Besitzer (user)

Die Gruppe (group)

Alle anderen (others)

Folie 60Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Dateisystemobjekt (kurz: DSO)• Zusammenfassung von Dateien und Verzeichnissen

• jedes DSO gehört:– bestimmtem Benutzer – bestimmter UNIX-Gruppe

• jedes DSO kennt Zugriffsrechte für:

Besitzer Gruppe alle anderen

(user) (group) (others)

Page 61: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Aktuelles Verzeichnis

Jeder angemeldete Benutzer befindet sich zu jedem Zeitpunkt in seinem aktuellen Verzeichnis (current directory, working directory, Arbeitsverzeichnis).

Der Punkt . ist der Name des aktuellen Verzeichnisses (analog MS-DOS).

Dateien im aktuellen Verzeichnis sind besonders einfach erreichbar, Beispiel:

gedicht briefe.txt

Folie 61Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Aktuelles Verzeichnis• jeder angemeldete Benutzer steht zu jedem Zeitpunkt in einem

aktuellen Verzeichnis (Arbeitsverzeichnis)

• Der Punkt ist Name des aktuellen Verzeichnisses

• Dateien im aktuellen Verzeichnis sind einfach erreichbar

gedicht briefe.txt

.

Page 62: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Eltern-Verzeichnis

Zu jedem Verzeichnis gibt es genau ein Eltern-Verzeichnis (parent directory).

Das Root-Verzeichnis ist sein eigenes Eltern-Verzeichnis.

Der doppelte Punkt .. ist in jedem Verzeichnis der Name seines Eltern-Verzeichnisses (analog MS-DOS).

Dateien im Eltern-Verzeichnis sind ebenfalls sehr einfach erreichbar, Beispiel:

../text ../user12/text/gedicht

Anmerkung: Im Englischen wird die Beziehung zwischen zwei aufeinander folgenden Verzeichnissen (Prozessen) mit "parent-" und "child-"directory (process) und im Deutschen mit "Eltern-" und "Kind-"Verzeichnis (Prozess) bzw. "Vater-" und "Sohn-"Verzeichnis (Prozess) bezeichnet. Im Skript wird "Eltern-/Kind-"Verzeichnis (Prozess) verwendet.

Folie 62Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Eltern-Verzeichnis• zu jedem Verzeichnis gibt es genau ein Eltern-Verzeichnis

• zwei Punkte : Name des Eltern-Verzeichnisses

• Dateien im Eltern-Verzeichnis ebenfalls einfach erreichbar

../text ../user12/text/gedicht

. .

Page 63: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Heimat-Verzeichnis

Nach dem Anmelden ist das beim Einrichten des Benutzers festgelegte Heimat-Verzeichnis (home directory), z.B. /home/user12, sein aktuelles Verzeichnis.

Die Heimat-Verzeichnisse aller Benutzer befinden sich im gleichen (Eltern)Verzeichnis, meist:

/home oder /usr/home

Bitte das Heimat-Verzeichnis nicht mit dem Verzeichnis /home verwechseln!

Folie 63Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Heimat-Verzeichnis• beim Anmelden wird das Heimat-Verzeichnis des festgelegt = sein

aktuelles Verzeichnis

/home/user12

• die Heimat-Verzeichnisse aller Benutzer sind im gleichen (Eltern-)Verzeichnis, meist:

/home /usr/home

• NICHT mit dem Verzeichnis /home verwechseln!

Page 64: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Pfadname (path name)

Wegen der hierarchischen Dateisystem-Struktur genügt ein Dateiname alleine nicht, um ein DSO eindeutig zu bezeichnen.

Neben dem Dateinamen ist daher auch das Verzeichnis anzugeben, in dem der Dateiname steht (rekursiv).

Die einzelnen Namenskomponenten werden durch den Verzeichnistrenner / getrennt (\ unter MS-DOS): .../VERZ1/VERZ2/DATEI

Folie 64Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Pfadname (path name)• um DSO eindeutig zu bezeichnen immer Dateinamen und Verzeichnis, in

dem Dateiname steht, nötig!! (wegen hierarchischen Dateisystem-Struktur)

• Namenskomponenten durch Verzeichnistrenner „/“ getrennt :

.../VERZ1/VERZ2/DATEI

Page 65: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Absoluter Pfad

Beschreibt den Weg zu einer Datei ausgehend vom Root-Verzeichnis / (d.h. fängt immer mit / an).

Lautet immer gleich, egal wo man steht.

Besteht aus / + allen Verzeichnisnamen auf dem Weg durch den Dateibaum zu einer Datei + dem Dateinamen, jeweils getrennt durch Schrägstrich (/).

Beispiel: /home/Peter/Privat/brief.txt

Folie 65Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Absoluter Pfad• Beschreibt den Weg zu einer Datei ausgehend vom Root-Verzeichnis /

( beginnt immer mit /)

• immer gleich, egal wo man steht

/ (root)

usrtmphomebin etc

Peter Ursula

AdressenBriefePrivat Geschäft

Beispiel:

/home/Peter/Privat/brief.txt/home/Peter/Privat/brief.txt

brief.txt

Page 66: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Relativer Pfad

Beschreibt den Weg zu einer Datei ausgehend vom aktuellen Verzeichnis.

Hängt davon ab, wo man im Dateibaum steht.

Kennzeichen: Relative Pfade fangen nicht mit / an. Explizite Angabe mit ./ ist möglich (nicht notwendig).

Beispiel: gedichtPeter/Privat/brief.txt../usr12/gedicht

Folie 66Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Relativer Pfad• beschreibt den Weg zu einer Datei ausgehend vom aktuellen Verzeichnis

( beginnt nicht mit /, kann mit ./ beginnen)

• abhängig von der Position (aktuelles Verzeichnis) im Dateibaum

• Beispiel: gedichtPeter/Privat/brief.txt../usr12/gedicht

Page 67: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 67Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Begriffe

Logischer Dateibaum / (root)

usrtmphomebin etc

Peter Ursula

AdressenBriefePrivat Geschäft

Relativer Pfad:../Peter/Privat/brief.txt

Relativer Pfad:../Privat/brief.txt

Absoluter Pfad:/home/Peter/Privat/brief.txt

brief.txt

Page 68: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Mit cd (change directory) kann man zwischen Verzeichnissen hin- und herwechseln:

cd PFAD Wechselt in das Verzeichnis PFAD

cd / Wechselt in das Root-Verzeichnis

cd .. Wechselt in das Eltern-Verzeichnis (Leerz!)

cd Wechselt in das eigene Heimat-Verzeichnis

cd ~ Analog

Mit pwd (print working directory) kann man das aktuelle Verzeichnis ausgeben.

Mit ls (list) kann man den Inhalt von Verzeichnissen (alphabetisch nach Namen sortiert) ausgeben:

ls Inhalt des aktuellen Verzeichnisses ausgeben

ls PFAD Inhalt von Verzeichnis PFAD ausgeben

Die wichtigsten Optionen:

-l Ausgabe im langen Format (long)

-a Alle Dateien (auch versteckte) ausgeben (all)

-d Verzeichnis-Name statt Inhalt ausgeben (directory)

-R Kompletten Dateibaum ausgeben (recursive)

Folie 68Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Auskunftsfunktionen 1

• mit cd (change directory): zwischen Verzeichnissen wechseln

cd PFAD wechselt in das Verzeichnis PFAD

cd / wechselt in das Root-Verzeichnis

• mit pwd (print working directory): aktuelles Verzeichnis ausgeben

• mit ls (list): Inhalt von Verzeichnissen ausgeben

ls Inhalt des aktuellen Verzeichnisses ausgeben

ls PFAD Inhalt von Verzeichnis PFAD ausgeben

Page 69: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 69Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Auskunftsfunktionen 1

• Die Ausgabe von ls -l (long) besteht aus folgenden Komponenten:

drwxrwxrwx 3 usr3 users 342 Mar 30 17:49 text

Zugriffsrechte

DateitypAnzahl Linksauf Datei

Besitzer

Gruppe

Dateilänge(Byte)

letztes Änderungsdatum

Dateiname

Dateitypen können sein:

- normale Datei (File)

d Verzeichnis (directory)

c Zeichengerät (character device)

b Blockgerät (block device)

l Verweis (link)

p FIFO (named pipe)

s Socket

Das Modifikationsdatum wird entweder mit Monat/Tag/Uhrzeit oder mit Monat/Tag/Jahr (wenn älter als 1/2 Jahr) angegeben.

Page 70: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Mit cat (concatenate) kann man Dateien aneinanderhängen und auf dem Bildschirm ausgeben (ohne Blätter-Möglichkeit):

cat DATEI1 DATEI2 ...

Mit more oder less (bei Linux und auch wieder zurück) kann man Dateien seitenweise auf dem Bildschirm ausgeben und darin blättern:

more DATEI ...

less DATEI ...

Folie 70Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Auskunftsfunktionen 1

• mit cat (concatenate): Dateien aneinanderhängen und auf dem Bildschirm ausgeben

cat DATEI1 DATEI2 ...

• mit more oder less: Dateien seitenweise auf dem Bildschirm ausgeben und darin blättern

more DATEI ...

less DATEI ...

Page 71: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 71Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 4a

• Probieren Sie die verschiedenen Varianten von cd aus und lassen Sie sich jeweils das aktuelle Verzeichnis mit pwd ausgeben.

• Probieren Sie ls mit verschiedenen Optionen aus (Gesamtliste per Usage-Meldung oder man-Page).

• Welche Dateien enthält Ihr Heimat-Verzeichnis?

• Geben Sie einige Dateien aus dem Verzeichnis /etc seitenweise bzw. ohne Aufteilung in Seiten auf dem Bildschirm aus.

Page 72: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 72Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 4b

• Schauen Sie sich die Inhalte (Dateien und Unterverzeichnisse) folgender Verzeichnisse an:

– / Root-Verzeichnis

– /etc Konfigurations-Dateien (et cetera)

– /tmp Temporäre Dateien (temporary)

– /bin Ausführbare Programme (binary)

– /home Heimat-Verzeichnisse der Benutzer

– /usr Dateibaum für zusätzliche UNIX-Programme(unix system ressources)

– /var variable Dinge: Logbücher, ...

Page 73: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 73Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Inhalt• Dateitypen, DateiartenDateitypen, Dateiarten• Gewöhnliche und ausführbare DateienGewöhnliche und ausführbare Dateien• Dateisystem, Physikalische PartitionDateisystem, Physikalische Partition• Inode, Hard-Link, Symbolischer LinkInode, Hard-Link, Symbolischer Link• GerätedateiGerätedatei

Page 74: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

UNIX-Dateitypen (1. Zeichen bei ls -l):

Gewöhnliche Dateien (-)

Verzeichnisse (d, directory)

Ein/Ausgabe-Geräte (block- oder zeichenorientiert, b/c)

Symbolische Links (l)

Named Pipes (p)

Sockets (s)

Mit file DATEI kann über den Dateiinhalt die Dateiart ermittelt werden (/etc/magic die Extension hat unter UNIX keine Funktion).

Gewöhnliche und ausführbare Dateien

Gewöhnliche Dateien umfassen Textdateien, C-Code, ASCII-Daten, Skripte, Binärdateien, usw.

Ausführbare Dateien (Binärprogramme, Skripte) werden unter UNIX nicht durch eine Extension (.bat, .com, .exe, .cmd), sondern durch das Recht „ausführbar“ (executable) gekennzeichnet, das im Prinzip für jede Datei vergebbar ist.

Folie 74Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

• UNIX-Dateitypen

– Gewöhnliche DateienGewöhnliche Dateien (-)– VerzeichnisseVerzeichnisse (d, directory)

– Ein/Ausgabe-GeräteEin/Ausgabe-Geräte (b/c, block- oder zeichenorientiert)

– Symbolische Symbolische LLinksinks (l)– Named Named PPipesipes (p)– SSocketsockets (s)

• mit file DATEI: Ermittlung der Dateiart über den Dateiinhalt

Page 75: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Dateisystem

Das UNIX-Dateisystem kennt – im Gegensatz zum Windows-Dateisystem – keine Laufwerksbuchstaben A:, B:, ... sondern nur einen logischen Dateibaum.

In diesen Dateibaum werden alle physikalischen Platten (Partitionen) in einem beliebigen, frei wählbaren Verzeichnis (mount point) eingehängt („montiert“, englisch: mount).

z.B.: mount /cdrom

mount /floppy

mount /dev/hda3 /usr # kann nur root

Folie 75Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Dateisystem• keine Laufwerksbuchstaben, nur einen logischen Dateibaum

• in Dateibaum werden alle physikalischen Platten (Partitionen) in beliebigem, frei wählbaren Verzeichnis (mount point) eingehängt

/ (root)

usrtmphomebin etc

Peter Ursula

AdressenBriefePrivat Geschäft

dev

Page 76: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Physikalische Partitionen

Eine Festplatte umfaßt meist mehrere (physikalische) Partitionen (CD-ROM und Floppy nur eine).

Eine Partition wird beim Formatieren eingeteilt in:

Super-Block Dateisystem-Beschreibung (Typ, Größe,Anz. freier/belegter Inodes/Datenblöcke)

Inode-Tabelle Liste der verfügbaren Inodes

Datenblöcke Dateiinhalte bzw. Indirektionsblöcke

Boot-Block Urlader für Systemstart

Während dem Booten werden die Dateisysteme der zu montierenden Partitionen in Verzeichnisse des Dateibaums eingehängt.

Die Verzeichnisse sollten leer sein (müssen aber nicht).

Mindestens die Root-Partition (/) muß vorhanden sein (wird beim Booten vom Kern zuerst montiert).

Welche weiteren Partitionen beim Booten wo im Dateibaum eingehängt werden, steht in der Datei /etc/fstab (filesystem table).

Folie 76Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Physikalische Partitionen• Eine Festplatte umfaßt meist mehrere (physikalische) Partitionen

• beim Booten: die Dateisysteme der zu montierenden Partitionen werden eingehängt in Verzeichnisse des Dateibaums

Page 77: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 77Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Logischer Aufbau

/

boot

usr local

var

pool

floppy

cdromCDROM Floppy

1. Festplatte, 1. Partition

1. Festplatte, 2. Partition

1. Festplatte, 3. Partition

1. Festplatte, 4. Partition

2. Festplatte, 1. Partition

2. Festplatte, 2. Partition

Physikalischer Aufbau

Page 78: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Standardverzeichnisse/bin Grundlegende Programme für alle Benutzer (binary).

/dev Gerätedateien (devices).

/etc (Fast alle) Konfigurationsdateien (et cetera).

/home Enthält die Heimat-Verzeichnisse der Benutzer.

/lib Systembibliotheken (library).

/opt Zusätzliche (kommerzielle) Software (optional)./sbin Programme für den Superuser (system binary).

/tmp Temporäre Dateien aller Benutzer (temporary).

/usr 2. (analoge) Dateihierarchie (unix system ressources).

/var (Temporäre) System-Zwischendateien (variable).

Folie 78Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

/

boot

usr local

var

tmp

floppy

cdrom

1. Festplatte, 1. Partition (Boot-Partition)

1. Festplatte, 2. Partition(Root-Partition)

1. Festplatte, 3. Partition

1. Festplatte,4. Partition

2. Festplatte, 1. Partition

2. Festplatte, 2. Partition

CDROM

Floppy

Zusammenhänge nach dem Montieren

Page 79: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Mit df (disk free) kann man sich zu einer oder allen montierten Partitionen ihre Größe und ihren Belegungsgrad in Prozent anzeigen lassen:

df [VERZ]

Mit mount ev. /sbin/mount nur die montierten Partitionen.

Mit du (disk usage) kann man sich den von einem Verzeichnisbaum belegten Platz

anzeigen lassen:du [VERZ] Größe des Verzeichnisses VERZ

und aller Unterverzeichnisse darindu [-s] VERZ Unterverzeichnisse nicht auflisten(silent)

Folie 79Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Auskunftsfunktionen 2

• mit df (disk free):

Anzeige von Größe und Belegungsgrad einer oder aller montierten Partitionen (in kByte oder Prozent)

df [VERZ]

• mit du (disk usage):

Anzeige von belegtem Platz eines Verzeichnisbaums

du [VERZ] Größe des Verzeichnisses VERZ und aller Unterverzeichnisse darin

du [-s] VERZ Unterverzeichnisse nicht auflisten (silent)

Page 80: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Inode (Index-Node)

Jedem DSO in einem UNIX-Dateisystem wird eine eindeutige Nummer zugewiesen, die auf den sogenannten Inode (Informationsknoten) verweist.

Für jedes DSO stehen im zugehörigen Inode seine Eigenschaften (Attribute) bis auf Name und Inhalt.

Verzeichnisse enthalten nur eine Liste der darin abgelegten DSO-Namen + der Nummer des jeweils zugehörigen Inodes.

Kommando zum Anzeigen der i-Nummern:

ls -i

Folie 80Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau - Inode

Inode 123 Daten

Block 2Block 2

Block 1Block 1

......

Block 3Block 3

BesitzerBesitzer

BesitzergruppeBesitzergruppe

#Hardlinks:2#Hardlinks:2

Hardlink1

Verzeichnis 2

Name3 Name3 987987

...... ......

Inode 987 Daten

ÄnderungsdatumÄnderungsdatum

Verzeichnis 1

123123Name1Name1

...... ......

Verzeichnis 2123123Name2Name2

...... ......

Hardlink2

Verzeichnis1/Name1Verzeichnis1/Name1......

......

......

Partition 1

Partition 2

Hardlink3

Symbolischer LinkSymbolischer Link

Page 81: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Hard-Link (Physikalischer Link)

Weiterer Verzeichniseintrag zu einer Datei, der auf denselben Inode zeigt (nicht unterscheidbar!).

Kann keine Partitionsgrenzen überschreiten, da Inode-Nummern nur in derselben Partition eindeutig sind.

Kann nur auf normale Dateien verweisen (nicht aber auf Verzeichnisse und Geräte).

Die Anzahl Hard-Links auf ein DSO wird gezählt, erst beim Löschen des letzten wird der Dateiinhalt freigegeben.

Folie 81Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Hard-Link (Physikalischer Link)• weiterer Verzeichniseintrag zu einer Datei, der auf denselben Inode zeigt

• kann keine Partitionsgrenzen überschreiten ( Inode-Nummern nur in derselben Partition eindeutig)

• Kann nur auf normale Dateien verweisen –

– Die Anzahl Hard-Links auf einem DSO wird gezählt, erst beim Löschen des letzten wird der Dateiinhalt freigegeben!!

Page 82: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Symbolischer Link (Soft-Link)

Verweist auf eine Datei, deren Inhalt den Pfadnamen (absolut oder relativ) einer anderen Datei enthält.

Entspricht einer „Verknüpfung“ unter WINDOWS.

Kann Partitionsgrenzen überschreiten.

Das Ziel muss nicht existieren (zeigt ins „Leere“).

Kann auf alle DSO verweisen (insbes. Verzeichnisse), d.h. im Dateibaum sind „Rekursionen“ möglich.

Die Anzahl Soft-Links auf ein DSO wird nicht gezählt.

Folie 82Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Symbolischer Link (Soft-Link)• Verweist auf Datei, deren Inhalt enthält den Pfadnamen (absolut oder

relativ) einer anderen Datei

• kann Partitionsgrenzen überschreiten

• kann auf alle DSO verweisen (insbesondere Verzeichnisse) „Rekursionen“ im Dateibaum möglich

• Anzahl der Soft-Links auf DSO wird nicht gezählt

Page 83: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 83Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Zweck von Links• immer gleichen Namen für Gerät festlegen

• einfacher Zugriff vom Heimat-Verzeichnis aus

• Plattenplatz sparen

• Schreibfehler / geänderte Konventionen abfangen

• Konsistenz erhalten bei Updates

• gültige Version aus mehreren vorhandenen auswählen

• Programme / Skripts verhalten sich abhängig vom Namen ihres Aufrufs anders

Page 84: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 84Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Unterschiede zwischen den beiden Link-Typen Hard Symbolic

• Referenz per Inode Name• Anzahl Links auf Datei bekannt –• Über Partitionen hinweg möglich – • Ziel kann ein Verzeichnis sein – • Rekursion möglich – • Ziel muss existieren –• Geschwindigkeit schnell langsam• Äquivalent unter WINDOWS – Verknüpfung

Page 85: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Gerätedatei:

Alle physikalischen Geräte in einem UNIX-System sind im Dateibaum unter dem Verzeichnis /dev (device) per Dateiname ansprechbar.

Man unterscheidet je nach Art des Datenzugriffs zeichen- (zeichenweiser, serieller Zugriff) und blockorientierte Geräte (wahlfreier Zugriff):

/dev/console /dev/hda

/dev/psaux /dev/sdb

/dev/tty01

Jedes Gerät wird über einen Treiber angesprochen, der entweder fester Teil des Kerns ist oder erst bei Bedarf als Modul nachgeladen wird.

Zwei wichtige Pseudo-Geräte sind:

/dev/null Alle Daten, die dort gespeichert werden, gehen verloren

/dev/zero Von diesem Gerät können beliebig viele Nullbytes

gelesen werden (Vorsicht!).

Die Gerätedateien enthalten Verweise auf eine Tabelle mit Treiber-Startadressen (Major-Device-Number)

Kommt das gleiche Gerät mehrfach vor, so wird der gleiche Treiber verwendet, aber die einzelnen Geräte über eine Minor-Device-Number unterschieden.

Folie 85Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Aufbau

Gerätedatei

• alle physikalischen Geräte sind im Dateibaum unter dem Verzeichnis /dev (device) per Dateiname ansprechbar

• man unterscheidet zeichen- und blockorientierte Geräte

• jedes Gerät wird über einen Treiber angesprochen

• zwei wichtige Pseudo-Geräte sind:

/dev/null alle dort gespeicherten Daten gehen verloren

/dev/zero es können beliebig viele Nullbytes gelesen werden

Page 86: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 86Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Auskunftsfunktionen

Kommandoscd Verzeichnis wechseln (change directory)

pwd aktuelles Verz. ausgeben (print working directory)

ls Dateien und Verzeichnisse auflisten (list)

file Dateityp feststellen

more Textdateien seitenweise am Bildschirm ausgeben

less analog more (eher bei Linux)

cat Dateien aneinanderhängen (concatenate)

df freien Plattenplatz ausgeben (disk free)

du Speicherverbrauch von DSO ausgeben (disk used)

Beipiele:

cd /etc

cd /usr/lib

cd text

cd ../usr3/text

ls -i

ls -a

ls -ali

file /etc/passwd

more /etc/passwd

less /etc/group

cat /etc/hosts

Page 87: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 87Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 5a

• Stellen Sie den Dateityp verschiedener Dateien in folgenden Verzeichnissen fest: Heimat-Verzeichnis, /usr/include, /usr/bin, /boot.

• Suchen Sie nach Textdateien und lassen Sie sich deren Inhalt ausgeben.

• Stellen Sie fest, wieviel Speicherplatz die Verzeichnisse /home, /etc und /usr belegen.

• Stellen Sie fest, welche Partitionen wohin montiert sind und wieviel Speicherplatz darauf noch frei ist.

Page 88: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 88Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 5b

• Suchen Sie einige ausführbaren Dateien.

• Suchen Sie einige versteckte Dateien und zeigen Sie ihren Inhalt an.

• Suchen Sie einige zeichen- und block-– orientierte Gerätedateien.

• Suchen Sie einige Hard-Links und – Symbolische Links.

• Ermitteln Sie die Inode-Nummern einiger Dateien (ls -i gibt die Inode-Nummer zu Dateien aus).

Page 89: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Beispiele:

mkdir (make directory) legt neue Verzeichnisse an:

mkdir VERZEICHNISmkdir -p VERZEICHNISPFAD (path, erzeugt auch

fehlende Zwischen-verzeichnisse)

rmdir (remove directory) löscht Verzeichnisse (nur wenn sie leer sind!):

rmdir VERZEICHNIS

touch legt neue leere Dateien an oder aktualisiert das Änderungsdatum von Dateien:

touch DATEI

Folie 89Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Verändernde Kommandos

• mkdir legt neue Verzeichnisse an:

mkdir VERZEICHNIS

• rmdir löscht Verzeichnisse (nur leere)

rmdir VERZEICHNIS

• touch legt neue leere Dateien an oder aktualisiert das Änderungsdatum von Dateien:

touch DATEI

Page 90: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die wichtigsten (gemeinsamen) Optionen sind:

-i Vor Datei überschreiben fragen (interactive)

-r/-R Ganzen Dateibaum bearbeiten (recursive)-f Überschreiben des Ziels erzwingen (force)

Beispiele:

cp -i file1 file2

cp f1 f2 f3 a* dir

mv f1 ../dir

Folie 90Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Verändernde Kommandos

• cp (copy) kopiert Dateien

• mv (move) verschiebt oder benennt Dateien um

• Die Syntax der beiden Kommandos ist identisch:

cp/mv [OPTIONEN] QUELLDATEI ZIELDATEI

cp/mv [OPTIONEN] QUELLDATEIEN ZIELVERZ

Page 91: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

ln (link) legt Links (weitere Verweise) auf DSO an:

ln QUELLDATEI ZIELDATEI (Variante 1)ln -s QUELLDSO ZIELDSO (Variante 2)

Variante 1 legt Hard-Links an:

Können nur auf Dateien in der gleichen Partition zeigen.

Variante 2 legt Symbolic Links an (symbolic):

Können auf beliebige DSO in anderen Partitionen zeigen.

Beim Anlegen von symbolischen Links sollte mit absoluten Pfaden gearbeitet werden.

rm (remove) löscht Dateien oder Verzeichnisbäume:

rm [OPTIONEN ] DATEI

Die wichtigsten Optionen sind (analog zu cp/mv):

-i Vor jedem Löschen fragen (interactive)-r/-R Ganzen Dateibaum bearbeiten (recursive)-f Löschen erzwingen ohne Meldung (force)

Beispiel:

rm -ri dir/a*

Folie 91Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Verändernde Kommandos

• ln (link) legt Links auf DSO an:

ln QUELLDATEI ZIELDATEI (Variante 1: Hard-Links)

ln -s QUELLDSO ZIELDSO (Variante 2: Soft-Links)

– Beim Anlegen von symbolischen Links sollte mit absoluten Pfaden gearbeitet werden!

• rm löscht Dateien oder Verzeichnisbäume:

rm [OPTIONEN] DATEI

Page 92: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 92Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Verändernde Kommandos

Kommandosmkdir Verzeichnis anlegen (make directory)

rmdir Verzeichnis löschen (remove directory)

touch Änderungsdatum eines DSO verändern oder ein leeres DSO anlegen

cp DSO kopieren (copy)

mv DSO umbenennen oder verschieben (move)

ln Hard-Link auf ein DSO anlegen (link)

ln -s Symbolic-Link auf ein DSO anlegen (link)

rm DSO löschen (remove)

Beispiele:

mkdir unter

rmdir unter

touch f1 f2

cp f1 f3

mv f1 f5

ln f5 f6

ln -s f5 f7

rm -i f*

Page 93: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 93Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 6

• Erzeugen Sie in ihrem Heimatverzeichnis einige (leere) Dateien, Verzeichnisse, sowie Hard-Links und symbolische Links.

• Zeigen Sie mit ls -l die Datei-Informationen an.

• Kopieren Sie einige dieser DSO.

• Benennen Sie einige der neuen DSO um.

• Verschieben Sie einige der neuen DSO

• Löschen Sie alle von Ihnen angelegten DSO wieder.

Page 94: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Das UNIX Dateisystem kennt 3 verschiedene Arten von Zugriffsrechten:

Lesen (r=read)

Schreiben (w=write)

Ausführen (x=execute)

Sie können pro DSO definiert werden für (a=all):

den Besitzer (u=user)

die Gruppe (g=group)

alle anderen Benutzer (o=others)

Folie 94Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• Es gibt 3 verschiedene Arten von Zugriffsrechten:

– Lesen (rr=read)

– Schreiben (ww=write)

– Ausführen (xx=execute)

• Sie können pro DSO definiert werden für (aa=all):

– den Besitzer (uu=user)

– die Gruppe (gg=group)

– alle anderen Benutzer (oo=others)

Page 95: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 95Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• Die Zugriffsrechte werden vom Kommando ls -l in folgender Form ausgegeben:

- r w x r w x r w x

Das erste Feld bezeichnet den Dateityp:Das erste Feld bezeichnet den Dateityp: - normale Dateid Verzeichnis (directory)c zeichenorientiertes Gerät (character device)

b blockorientiertes Gerät (block device)

l Symbolischer Link

p Named Pipes Socket

user group otherRechtevektormit 3 * 3 Rechten

Page 96: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 96Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• Bedeutung der Zugriffsrechte bei Dateien:

– Lesen: Dateiinhalt kann gelesen werden– Schreiben: Dateiinhalt kann verändert werden– Ausführen: Datei kann als Programm ausgeführt werden

• Beispiel:

-rw-r--r-- Datei ist für den Besitzer les- und schreibbar, für alle anderen nur lesbar

-rwxr-xr-x wie oben, aber die Datei ist für alle auch ausführbar

-rw------- Datei nur für den Besitzer les- und schreibbar

-r--r--r-- Datei für alle nur lesbar (auch für den Besitzer!)

u g o

Page 97: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Bedeutung der Zugriffsrechte bei Verzeichnissen:

Lesen: Verzeichnisinhalt kann aufgelistet werden (ls)

Schreiben: Dateien können angelegt/gelöscht werden (touch, mkdir, cp, mv, rm, rmdir)

Ausführen: In Verzeichnis kann gewechselt werden (cd)

Folie 97Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• Bedeutung der Zugriffsrechte bei Verzeichnissen:

– Lesen: Verzeichnisinhalt kann aufgelistet werden – Schreiben: Dateien können angelegt/gelöscht werden – Ausführen: In Verzeichnis kann gewechselt werden (cd)

• Beispiel:

drwxr-xr-x Besitzer darf Dateien anlegen und löschen, Rest darf Verzeichnis lesen und in Verzeichnis wechseln

drwx------ Verzeichnis ist nur für Besitzer lesbar/schreibbar/besuchbar

drwxrwx--- Besitzer und Gruppe dürfen alles, Rest nichts

u g o

Page 98: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Rechte-Anomalie

Über Veränderungen am Inhalt einer Datei entscheiden die Dateirechte.

Über Veränderungen am Namen einer Datei entscheiden die Rechte des Verzeichnisses, in dem die Datei steht (umbenennen, verschieben, löschen).

D.h. eine Datei kann z.B. gelöscht werden, obwohl man kein Schreibrecht auf sie hat.

Mit dem Nichtsetzen des Schreibrechts im Verzeichnis kann also ein Löschen (aller) Dateien dieses Verzeichnisses verhindert werden - nicht mit dem Schreibrecht einer Datei!

Folie 98Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

Rechte-Anomalie• über Veränderungen am Inhalt einer Datei entscheiden die Dateirechte

• über Veränderungen am Namen einer Datei entscheiden die Rechte des Verzeichnisses, in dem die Datei steht

d.h. eine Datei kann z.B. gelöscht werden, obwohl man kein Schreibrecht auf sie hat

Page 99: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 99Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• chmod verändert die Zugriffsrechte einer Datei (change modus):– chmod RECHTE DATEI

• Nur dem Besitzer einer Datei möglich!

• Die RECHTE können angegeben werden als:

– Buchstaben (kein Leerzeichen): [ugoa] [+-=] [rwx] (+ = Hinzufügen, - = Wegnehmen, = = Absolut Setzen)

– Oktalzahl: 000-777 (dreistellig)

Page 100: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 100Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• Zugriffsrechte können als Bitmuster interpretiert werden

RechteRechte WertWertr w x 7r w - 6r - x 5r - - 4- w x 3- w - 2- - x 1- - - 0

Page 101: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Weitere Beispiele:

chmod a+rx file1 file2chmod 754 a*

Folie 101Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

Beispielechmod u=rw,go=r DATEI Besitzer hat Schreib- und Leserecht auf

DATEI, der Rest hat nur Leserecht (Komma als Trennzeichen)

chmod a+x DATEI Jeder erhält (zusätzlich) Ausführungsrecht für DATEI

chmod -R a+x VERZ Wie oben, nur werden alle Unterverzeichnisse

des Verzeichnisses VERZ und ihre Dateien darin eingeschlossen

chmod o-rwx DATEI Rest bekommt die Lese-, Schreib- und

Ausführungsrechte für DATEI entzogen

chmod 666 DATEI Jeder erhält Schreib- und Leserecht

Page 102: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

umask (usage mask) legt Standardzugriffsrechte von DSO fest, die neu angelegt werden:

Die Usage Mask besteht aus 3 Oktalziffern, die von den Zugriffsrechten 777 (für Verzeichnisse) bzw. 666 (für Dateien) Rechte entfernen (maskieren).

umask setzt die Maske oder gibt ihren aktuellen Wert aus:

umask ® 022 (meist)

umask MASK (z.B. umask 027)

Folie 102Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• umask (usage mask) legt Standardzugriffsrechte für neue DSO fest

• die Usage Mask besteht aus 3 Oktalziffern

• umask setzt die Maske oder gibt ihren aktuellen Wert aus:

umask ® 022

umask MASK (z.B. umask 027)

Page 103: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 103Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

Wirkung beim Anlegen neuer Dateien• umask 022

0 0 0 0 1 0 0 1 0 Usage MaskUsage Mask

1 1 0 1 0 0 1 0 0

bei Dateien wird das Flag x nicht automatisch gesetzt explizit mit chmod setzen!

r w - r - - r - - Zugriffsrechte derZugriffsrechte derneuen Dateineuen Datei

Page 104: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 104Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

Wirkung beim Anlegen neuer Verzeichnisse• umask 027

0 0 0 0 1 0 1 1 1 Usage MaskUsage Mask

1 1 1 1 0 1 0 0 0

beim Anlegen eines Verzeichnisseswerden nur die gesetzten Bits maskiert

r w x r - x - - - Zugriffsrechte desZugriffsrechte desneuen Verzeichnissesneuen Verzeichnisses

Page 105: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Zugriffsrechte von symbolischen Links werden von umask nicht beeinflußt, sie lauten stets:

lrwxrwxrwx

Die tatsächlichen Zugriffsrechte eines symbolischen Links werden durch das DSO bestimmt, auf das der symbolische Link zeigt.

Erst beim Zugriff auf das DSO werden die Rechte überprüft (d.h. ein symbolischer Link kann ohne Schreibberechtigung für sein Ziel gelöscht werden).

Folie 105Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Dateisystem - Zugriffsrechte

• Die Zugriffsrechte von symbolischen Links nicht von umask beeinflußt, immer:– lrwxrwxrwx

• Die tatsächlichen Zugriffsrechte eines symbolischen Links durch DSO bestimmt, auf das symbolischer Link hinweist

Page 106: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 106Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 7

• Legen Sie (als normaler Benutzer) verschiedene DSO an und ändern Sie die Zugriffsrechte darauf.

• Überprüfen Sie, was diese Änderungen bewirken.

• Legen Sie Dateien und Verzeichnisse mit unterschiedlichen Belegungen der umask an.

• Versuchen Sie (als normaler Benutzer) Dateien und Verzeichnisse in (System)Verzeichnissen anzulegen.– Wo klappt das und warum?

Page 107: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 107Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse

Inhalt• Multitasking, Zeitscheiben-VerfahrenMultitasking, Zeitscheiben-Verfahren

• Start, Verwaltung, Beenden von ProzessenStart, Verwaltung, Beenden von Prozessen

• Prozess-StatiProzess-Stati

• Prozess-UmgebungProzess-Umgebung

• SignaleSignale

• KommandosKommandos

Kapitel 4.3

Kapitel 4.3

Page 108: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

UNIX kann mehrere Kommandos (Tasks) gleichzeitig durchführen (Multitasking).

Hierzu führt es eine Prozess-Liste der aktiven Prozesse.

Ein Scheduler teilt jedem Prozess einen kurzen Abschnitt der verfügbaren Rechenzeit zu (Zeitscheibe).

Die Länge des Abschnitts hängt von der Priorität des Prozesses ab (beim Start festlegbar, später änderbar).

Ein Prozess beendet sich entweder selbst oder er wird von seinem Besitzer vorzeitig abgebrochen.

Folie 108Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Multitasking

• UNIX: multitasking - fähig

• eine Prozess-Liste der aktiven Prozesse wird geführt• ein Scheduler teilt jedem Prozess einen kurzen Abschnitt der verfügbaren

Rechenzeit zu

• Länge des Abschnitts hängt von der Priorität des Prozesses ab

• Ein Prozess beendet sich selbst oder er wird von Besitzer vorzeitig abgebrochen

SchedulerScheduler

Task 1

Task 2

Task 3

11

22

33

ZeitlicherAblauf

Page 109: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 109Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Multitasking

Prozess 7

Prozess 7 Proz

ess 1

Proz

ess 1

Prozess 2Prozess 2

Prozess 3

Prozess 3

Prozess 4

Prozess 4Proze

ss 5

Proze

ss 5

Prozess 6Prozess 6

Zeitscheiben-Verfahren

zeitlicherzeitlicherAblaufAblauf(Uhrzeigersinn)(Uhrzeigersinn)

aktuelleraktuellerProzessProzess

Page 110: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Prozesse werden durch folgende Aktionen gestartet:

Eingabe eines Programmnamens und RETURN.

Aufruf aus einem Binärprogramm oder Skript heraus.

Durch einen Betriebssystem-Prozess (z.B. cron).

Ein Prozess ist ein laufendes (aktives) Programm, und nicht die Programm-Datei selbst (bleibt auf der Festplatte stehen ;-).

D.h. zum gleichen Programm (auf der Festplatte) können beliebig viele Prozesse erzeugt werden.

Folie 110Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Start

• Ein Prozess ist ein laufendes (aktives) Programm

zum gleichen Programmzum gleichen Programm Erzeugung beliebig vieler Prozesse beliebig vieler Prozesse möglich

• Start von Prozessen durch :

Eingabe Eingabe eines Programm-eines Programm-namens namens und und RETURNRETURN

Aufruf Aufruf aus einem aus einem Binärprogramm Binärprogramm oder oder Skript Skript

durch durch Betriebssystem-Betriebssystem-Prozess Prozess (z.B. cron).(z.B. cron).

Page 111: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Jedem Prozess wird vom Betriebssystem eine eindeutige Prozess-ID (PID) zugewiesen.

Die Prozessnummern werden aufsteigend vergeben, wird die Obergrenze (32767) erreicht, so wird wieder von vorne begonnen.

Der erste gestartete Prozess ist der Prozess init, er hat die Prozessnummer 1 (oder in seltenen Fällen 0).

Er liest die Anweisungen zum Booten des Systems aus der Datei /etc/inittab (initialization table).

Ein Prozess kann beliebig viele Kind-Prozesse (child processes) starten.

Er ist dann der Eltern-Prozess (parent process) dieser Prozesse.

Die Kind-Prozesse kennen die Prozessnummer ihres Eltern-Prozesses (parent process ID=PPID).

Die Prozesse bilden daher eine Prozess-Hierarchie (analog dem Dateisystem), der Prozess init ist die Wurzel dieser Hierarchie.

Folie 111Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Verwaltung

• jedem Prozess wird vom Betriebssystem eine eindeutige Prozess-ID (PID) zugewiesen

• der erste gestartete Prozess ist der Prozess init oder systemd: Prozessnummer 1

Page 112: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 112Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Verwaltung

• ein Prozess kann beliebig viele Kind-Prozesse starten

Eltern-Prozess dieser Prozesse

Prozess-Hierarchie,

der Prozess init ist die Wurzel

kennen Prozessnummer ihres Eltern-Prozesses (PPID)

ElternEltern

KindKind

KindKind KindKind

KindKind

Page 113: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die laufenden Prozesse können mit Hilfe des Kommandos ps (process status, unter LINUX auch pstree, top) angezeigt werden.

Jeder Benutzer kann alle im System laufenden Prozesse auflisten ® Sicherheitsproblem, Datenschutz!

Jeder Benutzer kann nur seine Prozesse abbrechen.

Der Superuser kann jeden Prozess abbrechen.

Folie 113Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Verwaltung

• laufende Prozesse können mit ps angezeigt werden

• jeder kann alle im System laufenden Prozesse auflisten ® Sicherheitsproblem

• jeder kann nur seine Prozesse abbrechen

• der SuperuserSuperuser kann jeden Prozess abbrechen

Page 114: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Mit ps (process status) werden Informationen über Prozesse angezeigt:

ps [OPTIONEN ]

Die wichtigsten Optionen von ps sind:

-e alle Prozesse (every)

-l mehr Informationen ausgeben (long)

-u user Prozess dieses Benutzers (user)

-t terminal Prozesse an diesem Bildschirm(tty)

-x Prozesse ohne Terminal anzeigen (Dämonen, ältere Linuxe)

-a alle Prozesse (ältere Linuxe)

Folie 114Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Verwaltung

• mit ps Anzeige von Informationen über Prozesse

ps [OPTIONEN]

• Die Ausgabe von ps besteht aus folgenden Komponenten:

PID TTY TIME CMD 52 tty1 0:01 bash

Terminal-Terminal-namename

Prozess-Prozess-IDID

Rechen-Rechen-zeitzeit

KommandoKommando

Page 115: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 115Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Verwaltung

• Die Ausgabe von ps -l besteht aus folgenden Komponenten:

S UID PID PPID PRI NI ADDR SZ WCHAN TTY TIME CMD R 100 52 45 8 10 FFFF 5984 - pts/14 0:00 bash

User-User-IDID

Prozess-Prozess-StatusStatus Prozess-Prozess-

IDID

Eltern-Eltern-Prozess-Prozess-IDID

PrioritätPriorität

Nice-Nice-WertWert

Start-Start-adresseadresse

Prozess-Prozess-größegröße

Warte-Warte-InfoInfo

TerminalTerminal

Rechen-Rechen-zeitzeit

Kommando-Kommando-AufrufAufruf

Beispiel:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD000 S 101 3642 3638 0 69 0 - 366 n_tty_ pts/0 00:00:00 cat000 S 101 3667 3658 0 69 0 - 678 wait4 pts/1 00:00:00 bash004 S 101 6204 3667 0 69 0 - 402 n_tty_ pts/1 00:00:00 rlogin002 S 101 6206 6204 0 69 0 - 402 ip_set pts/1 00:00:00 rlogin000 S 101 6209 3658 0 69 0 - 733 n_tty_ pts/2 00:00:00 bash000 S 101 7104 6209 0 69 0 - 3251 poll_f pts/2 00:00:02 gimp

Page 116: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Prozesse – Stati

Ein Prozess kann in einem der folgenden Zustände (in der Bildschirmausgebe des Befehls ps -l mit S = Status) sein:

R Lauffähig in der Queue (runnable)

S Wartend auf ein Ereignis (sleeping)

T Angehalten durch die Job-Control (stopped)

W Wartend auf die Zuteilung einer Ressource (waiting)

Z Abgeschlossen (zombie)

Prozess - Umgebung

Jeder Prozess hat eine nur ihm zugängliche (Laufzeit)-Umgebung, die sein Verhalten bestimmt. Sie umfasst:

Auszuführenden Maschinencode

Programmzähler und Aufrufstack

Zu verarbeitende Daten

Ein/Ausgabe-Kanäle

Variablen

Prozesszusammenhang (Eltern / Kinder)

Folie 116Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozess - Stati

WW

TT

RR

SS

** ZZ

* * = Bereit

WW = Waiting

RR = Runnable

SS = Sleeping

TT = Stopped

ZZ = Zombie

Page 117: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Läuft ein Prozess ordnungsgemäß bis zum Ende, so beendet ihn UNIX automatisch.

Das manuelle Beenden eines laufenden Prozesses geschieht mit dem Kommando kill:

kill [-SIGNAL ] PID

Durch kill wird dem Prozess PID ein Signal geschickt, auf das er reagieren kann (oder muss) oder das er auch ignorieren kann (dies kann durch den Entwickler entschieden werden).

Folie 117Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Beenden

• manuelles Beenden eines laufenden Prozesses mit kill:

kill [-SIGNAL] PID

• kill ist Signal für den Prozess PID

er kann auf das Signal reagieren – oder

er muß auf das Signal reagieren– oder

er kann das Signal ignorieren

Page 118: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Es gibt etwa 30 unterschiedliche Signale, die kill verschicken kann.

Signale werden vor allem vom Kern, aber auch von den Prozessen selbst gesendet und empfangen.

Signale sind über ihren Namen (mit oder ohne den Präfix SIG) oder ihre Nummer (1..30) angebbar.

Die vollständige Liste aller Signale erhält man durch:

kill -l (list) oder

man [-s] 7 signal

Bestimmte Tasten lösen ebenfalls Signale aus, z.B.:

SIGTSTOP (19) anhalten (Strg-Z)

SIGCONT (18) Weiterlaufen (continue, fg/bg)

Viele Signale werden auch automatisch vom Betriebssystem ausgelöst:

SIGQUIT (3) Prozessende erreicht

SIGILL (4) Nicht erlaubte Anweisung (illegal)

SIGFPE (8) Mathefehler (floating point error)

SIGBUS (10) Zugriffsverletzung (Bus-Alignment)

SIGSEGV (11) Falscher Speicherzugr. (segment violation)

SIGPIPE (13) Prozess in Pipeline weg (broken pipe)

SIGCHLD (18) KindProzess beendet (child)

Folie 118Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Signale

• Die wichtigsten Signale sind:

SIGHUP (1) Konfigurationsdatei lesen (hangup)

SIGINT (2) Abbruch mit STRG/CTRL-C (interrupt)

SIGKILL (9) Bedingungsloser Prozessabbruch

SIGTERM (15) Prozess beenden (terminate)

Page 119: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Das Beenden eines Prozesses PID ist manchmal nicht so einfach möglich:

Er kann mit dem Standard-Signal SIGTERM (terminate, 15) von kill sauber (d.h. mit Aufräumen) beendet werden, er kann dieses Signal aber auch ignorieren:

kill PID

Das Signal SIGKILL (9) beendet ihn sicher, läßt ihm aber keine Möglichkeit mehr zum Aufräumen (z.B. Löschen temporärer Dateien, sollte nicht der Normalfall sein):

kill -9 PID

Folie 119Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Signale

• Beenden eines Prozesses PID oft nicht einfach möglich:

– mit Standard-Signal SIGTERM von kill sauber beenden, aber:• er kann dieses Signal auch ignorieren

• kill PID

– Signal SIGKILL beendet sicher, läßt aber keine Möglichkeit mehr zum Aufräumen • kill -9 PID

Page 120: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 120Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Prozesse - Kommandos

Kommandos

ps listet Prozesse auf (process status)

kill beendet Prozesse (verschickt Signale)

top listet fortlaufend alle Prozesse auf (nur LINUX)

pstree Prozesshierarchie auflisten (nur LINUX)

Page 121: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 121Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 8a

• Listen Sie mit ps auf:– Ihre eigenen Prozesse – Alle DämonProzesse (haben kein Terminal)– Sämtliche Prozesse

• Rufen Sie top in einem Fenster auf.– Welcher Prozess kostet am meisten CPU?

• Welche Prozesse kosten viel CPU, wenn:– Die Maus bewegt wird– Der InternetBrowser (z.B. firefox) gestartet wird

Page 122: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 122Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 8b

• Beenden Sie durch kill in einem anderen Fenster:

– Das laufende Programm top

– Das laufende Programm InternetBrowser

– Eine laufende bash– Ein Terminal-Fenster– Die X-Oberfläche (startkde/kde/kdm)

• Verfolgen Sie über die Eltern-Prozessnummer die Prozesshierarchie

Page 123: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 123Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell

Inhalt• FunktionsweiseFunktionsweise

• Shell-TypenShell-Typen

• FunktionalitätenFunktionalitäten

Kapitel 4.4

Kapitel 4.4

Page 124: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Eine Shell ist ein Programm, das Kommandos vom Benutzer entgegennimmt und sie ausführt.

Sie zeigt dazu eine Eingabe-Aufforderung (Prompt) an und wartet dann auf eine Eingabe

Wird ein Kommando eingegeben, so startet sie einen entsprechenden

Prozess und wartet auf sein Ende. Dieses Warten kann durch ein & am Ende der Kommandozeile vermieden werden (HintergrundProzess).

find / -name passwd > erg 2> err &

Danach gibt die Shell die PID des Prozesses und dann erneut die Eingabe-Aufforderung an und wartet auf eine Eingabe des Benutzers.

Folie 124Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Funktionsweise

Ausführung von Kommandos:Ausführung von Kommandos:

Eingabe-Aufforderung wird angezeigt

warten auf Eingabe

Kommandoeingabe

Start des entsprechenden Prozesses

warten auf Ende

erneute Anzeige der Eingabe-Aufforderung

warten auf neue Eingabe des

ShellShell==

ProgrammProgramm

bekommt Kommandos vom und führt diese aus

Page 125: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Eine Shell führt auch sogenannte Shell-Skripte (Batch-Dateien) aus.

Dies sind normale Textdateien, die eine Folge von Shell-Kommandos enthalten, wie sie auch auf der Kommandozeile eingegeben werden.

Sie bietet eine vollwertige Programmiersprache, die allerdings stark auf die Systemverwaltung und Automatisierung zugeschnitten ist.

Shell-Skripts werden nicht übersetzt, sondern sofort zeilenweise gelesen und ausgeführt (interpretiert).

Folie 125Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Funktionsweise

• Eine Shell führt sogenannte Shell-Skripte aus normale Textdateien, die Folge von Shell-Kommandos enthalten

• Sie bietet vollwertige Programmiersprache (stark auf die Systemverwaltung und Automatisierung zugeschnitten)

• Shell-Skripte werden nicht übersetzt, sondern sofort zeilenweise gelesen und ausgeführt

Page 126: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Korn-Shell ksh und die Born-Again Shell bash sind Weiterentwicklungen der originalen Bourne-Shell sh.

Die C-Shell csh (und ihr Nachfolger, die Tenex-C-Shell tcsh) haben (leider) eine völlig andere Syntax als die sh und ihre Abkömmlinge (ähnlich zur Programmiersprache C).

Die Bourne-Shell sh ist für Interaktion nicht gut geeignet, für die Skript-Programmierung ist sie sehr gut geeignet.

Die C-Shells csh/tcsh sind mehr für Interaktion und weniger für Skript-Programmierung geeignet (sie enthält auch einige Fehler und Einschränkungen).

Die Born-Again-Shell bash und die Korn-Shell ksh sind sowohl für Interaktion als auch für Skript-Programmierung geeignet.

Eine Shell ist weitgehend konfigurierbar und an Benutzerwünsche anpassbar, sie definiert letztlich die Arbeitsumgebung des Benutzers.

UNIX kennt viele unterschiedliche Shells:

sh Bourne-Shell (Original-Shell)

csh C-Shell (alter BSD Standard)

tcsh Tenex-C-Shell (BSD Standard)

bash Born-Again-Shell (LINUX Standard)

ksh Korn-Shell (System V Release 4 Standard)

Sie unterscheiden sich in Syntax, Konfigurationsfähigkeit und Funktionalität sowie in der Eignung für interaktives Arbeiten auf der Kommandozeile und für diese Skript-Programmierung.

Folie 126Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Shell-Typen

• UNIX kennt unterschiedliche Shells:

sh Bourne-Shell (Original-Shell)

tcsh Tenex-C-Shell (BSD Standard)

bash Born-Again-Shell (LINUX Standard)

ksh Korn-Shell (System V Release 4 Standard)

• Unterschiede in – - Syntax, Konfigurationsfähigkeit, Funktionalität

– - Eignung für interaktives Arbeiten auf der Kommandozeile und für diese Skript-Programmierung

Page 127: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 127Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 9

• Geben Sie folgendes ein, um festzustellen, welche Login-Shell im Augenblick verwendet wird:echo $SHELL

• Rufen Sie einige Shells über ihren Namen auf, um festzustellen, welche davon installiert sind:– Was ändert sich nach dem Aufruf einer anderen Shell?

– Stellen Sie mit ps fest, welche Shells nun laufen.– Was für Beziehungen haben die gestarteten Shells?

• Kehren Sie mit exit zu Ihrer Login-Shell zurück.

Page 128: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 128Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Funktionalitäten

Inhalt (1)• VerarbeitungsschritteVerarbeitungsschritte

• Shell-Umgebung Shell-Umgebung

• Shell- und Umgebungs-VariablenShell- und Umgebungs-Variablen

• Wichtige vordefinierte VariablenWichtige vordefinierte Variablen

• PfadsuchePfadsuche

• Shell-SkripteShell-Skripte

• HistoryHistory

• Namens-VervollständigungNamens-Vervollständigung

Page 129: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 129Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Funktionalitäten

Inhalt (2)• AliaseAliase

• Standard-Ein/Ausgabe Standard-Ein/Ausgabe

• Datei-UmlenkungDatei-Umlenkung

• PipesPipes

• Dateinamen-ExpansionDateinamen-Expansion

• QuotierungQuotierung

Page 130: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Bevor ein eingegebenes Kommando gestartet wird, führt die Shell automatisch eine Reihe von Standard-Operationen auf den Text der Kommandozeile durch, der dadurch verändert wird.

In den folgenden Abschnitten werden die wichtigsten dieser Operationen besprochen und am Schluss nochmal zusammengefasst

Im letzten Abschnitt wird gezeigt, wie man alle oder einige dieser Schritte durch Quotieren verhindert.

Folie 130Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Verarbeitungsschritte

1) Vor Start eines eingegebenen Kommandos:

Shell führt automatisch Reihe von Standard-Operationen auf den Text der Kommandozeile durch verändert Text

2) Die wichtigsten dieser Operationen werden besprochen und zusammengefasst

3) Im letzten Abschnitt:

es wird gezeigt, wie man diese Schritte durch Quotieren verhindert

Page 131: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Shell-Umgebung

Alle Prozesse (also auch ein Shell-Prozess) haben eine eigene Umgebung (Environment), die ihr Verhalten beeinflusst.

Ein Teil des AnmeldeProzesses ist das Erstellen der Shell-Umgebung. Hierzu werden nach dem Login einige Shell-Konfigurationsdateien gelesen:

/etc/profile (sh + Nachfolger, zuerst gelesen)

~/.profile (sh + Nachfolger, danach gelesen)

Nicht Login-Shells (interaktive Shells) lesen andere Konfigurationsdateien ein (aus Geschwindigkeits- oder sonstigen Gründen), z.B.

~/.bashrc (bash, ressource/run control)

~/.cshrc (csh)

~/.kshrc (ksh)Die verschiedenen Shells kennen oft noch weitere Konfigurationsdateien, die sie beim Login oder Logout lesen und ausführen, z.B.

~/.bash_login (bash beim Login)

~/.bash_logout (bash beim Logout)

Folie 131Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Umgebung

Shell-Umgebung• alle Prozesse haben eigene Umgebung, die Verhalten beeinflusst

• beim AnmeldeProzess wird Shell-Umgebung erstellt, nach Login Lesen von Shell-Konfigurationsdateien

• Nicht-Login-Shells (interaktive Shells) lesen andere Konfigurationsdateien ein

• verschiedene Shells kennen weitere Konfigurationsdateien (werden beim Login oder Logout gelesen und ausgeführt)

Page 132: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Variable

Das Konfigurieren der Shell-Umgebung geschieht mit Hilfe von Variablen.

Der Wert einer Variable kann ein beliebig langer Text sein (andere Datentypen kennt die Shell nicht!).

Der Zugriff auf den Wert einer Variable erfolgt durch $VAR (oder ${VAR}, warum?). Z.B. gibt echo $VAR den Wert einer Variablen auf dem Bildschirm aus.

Es können beliebig viele Variablen benutzt werden.

Variablen werden gemäß Konvention meist GROSS geschrieben (um sie leichter erkennbar zu machen).

Man unterscheidet:

Shell-Variablen:Legen das Verhalten der Shell fest, werden nicht „vererbt“.

Umgebungs-Variablen (Teil der Shell-Variablen):Werden beim Aufruf eines Programms aus der Shell an dessen Umgebung „vererbt“.

Folie 132Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Variable

Variable• Konfigurieren der Shell-Umgebung durch Variablen

• Wert einer Variable kann beliebig langer Text sein

• Setzen mit = VAR='text'

• Zugriff auf den Wert einer Variable erfolgt durch $VAR

• Benutzen von beliebig vielen Variablen möglich

• Variablen werden gemäß Konvention meist GROSS geschrieben

• Man unterscheidet:

– Shell-Variablen

– Umgebungs-Variablen (Teil der Shell-Variablen)

Page 133: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Shell-Variable

set gibt die Liste aller Shell-Variablen mit ihren Werten aus.

Das Setzen einer Shell-Variablen erfolgt durchVAR=TEXT

Keine Leerzeichen um das = verwenden (warum?)!

In der csh erfolgt es durch set VAR=TEXT

Es gibt eine ganze Reihe vordefinierter Variablen.

Ihren Wert nur dann ändern, wenn die Wirkung klar ist!

Umgebungs-Variable

env (environment) gibt die Liste aller Umgebungs-Variablen mit ihren Werten aus (Teilmenge der von set gelieferten Liste).

Das Setzen einer Umgebungs-Variablen erfolgt durch export VAR=TEXT

Das Umwandeln einer Shell-Variable in eine Umgebungs-Variable (exportieren) erfolgt durch: export VAR

Folie 133Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Variable

code1

code2

lsls

shellshell

Prozessstarten

UmgebungsvariableUmgebungsvariable= Teil der Shell-Variable= Teil der Shell-Variable

Shell-VariableShell-Variable

bei Programmaufruf aus der Shell kopiert / vererbtvererbtdie Shell an ihre Umgebungdie Shell an ihre Umgebung

Daten-bereich

Page 134: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Weitere vordefinierte Variable

CDPATH Suchpfad für cd-Kommando

EDITOR Editor für Kommandozeile

MANPATH Suchpfad für man-Kommando

RANDOM Zufallszahl (0..32767)

TZ Zeitzone (time zone)

LANG Sprache z.B.: de_DE

Folie 134Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Variable

Wichtige vordefinierte VariablenHOME Heimat-Verzeichnis des Benutzers

LOGNAME/USER aktueller Loginname

PATH Suchpfad für ausführbare Programme

PS1 Eingabe-Prompt (prompt string)

PS2 Fortsetzungs-Prompt (prompt string)

PWD aktuelles Verz. (print working directory)

SHELL Name der Login-Shell

TERM Name des verwendeten Terminaltyps

Page 135: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die PS1- und PS2-Variablen

Die Variable PS1 legt die Form der Eingabe-Aufforderung fest, die also somit frei konfiguriert werden kann (Standard: $ oder %).

Die Variable PS2 legt die Form des Fortsetzungs-Prompts fest.

Wird von der Shell ausgegeben, wenn sie erkennt, dass ein Kommando noch nicht voll-ständig ist (Standard: >).

Der Standard-Prompt der root ist #.

Beispiel für eine eigendefinierte Prompt-Variable (für ksh und bash):

PS1="$HOSTNAME \$PWD --> "

Nun wird der Rechnername und das aktuelle Verzeichnis angezeigt.

Folie 135Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Variable

Die PS1- und PS2-Variablen

• PS1 legt Form der Eingabe-Aufforderung fest kann frei konfiguriert werden

Standard: $ oder %

• PS2 legt Form des Fortsetzungs-Prompts fest

gibt Shell aus, wenn Kommando noch nicht vollständig ist Standard: >

• Standard-Prompt der root ist #

Page 136: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 136Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 10

• Setzen Sie eine eigene Variable und greifen Sie darauf zu.

• Starten Sie eine neue Shell und prüfen Sie, ob die Variable da ist.

• Lassen Sie sich alle zur Zeit gesetzten Variablen (Shell- und Umgebungs-Variablen) ausgeben.

• Suchen Sie in den Dateien /etc/profile, ~/.profile und ~/.bashrc nach Variablen-Definitionen und Variablen-Verwendungen.

• Passen Sie die Prompt-Variablen PS1 und PS2 an Ihre Wünsche an (temporär und dauerhaft).

Page 137: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die PATH-Variable

Enthält eine Liste aller Verzeichnisse (getrennt durch Doppelpunkt :), die die Shell nach ausführbaren Programmen durchsuchen soll („Suchpfad“).

Die Verzeichnisse werden in genau der Reihenfolge durchsucht, in der sie in PATH angegeben sind.

WINDOWS hat ; als Trennzeichen im Suchpfad!

Kann vom Benutzer erweitert oder verändert werden, z.B. durch: PATH=$PATH:$HOME/skripte

PATH=$PATH:$HOME/bin

Soll auch im aktuellen Verzeichnis gesucht werden, ist dies mit anzugeben: PATH=$PATH:.

Folie 137Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Pfadsuche

Die PATH-Variable

• enthält Liste aller Verzeichnisse, die die Shell nach ausführbaren Programmen durchsuchen soll

• Durchsuchen erfolgt in Reihenfolge, wie in PATH angegeben

• kann vom Benutzer erweitert oder verändert werden, z.B. durch:

– PATH=$PATH:$HOME/skripte

Page 138: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Shell sucht in folgender Reihenfolge nach Kommandos, das 1. gefundene wird ausgeführt:

Shell-Builtins: In die Shell direkt eingebaute Kommandos (z.B. cd, set, env, ...).

Aliase: Abkürzungen (wie z.B. ll, l, ...).

Funktionen: Zusammenfassungen von Shell-Kommandos unter einem Namen.

Pfadsuche: In der Reihenfolge der Verzeichnisse im Suchpfad PATH nach Programmen.

Fehlermeldung „command not found“.

Folie 138Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Pfadsuche

In folgender Reihenfolge sucht die Shell nach Kommandos,

das erste gefundene wird ausgeführt:

Shell-Builtins: in die Shell direkt eingebaute Kommando

Aliase: Abkürzungen

Funktionen: Zusammenfassungen von Shell-Kommandos unter einem Namen

Pfadsuche: in der Reihenfolge der Verzeichnisse im Suchpfad

PATH nach Programmen

Fehlermeldung „command not found“

Page 139: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Damit ein Kommando gefunden werden kann, muß es ausführbar (ein Shell-Skript auch lesbar) sein.

type simuliert die Suche nach dem tatsächlich ausgeführten Kommando und gibt seinen Typ aus:

type KMDO

Alternativ können auch alle bei der Suche gefundenen Kommandos ausgegeben werden:

type -a KMDO (all)

Das aktuelle Verzeichnis . wird (im Unterschied zu DOS/WIN) nur dann durchsucht, wenn PATH das Verzeichnis . enthält.

Beim Superuser nie der Fall, warum?

Ein Doppelpunkt : am Anfang oder Ende des Pfades oder zwei Doppelpunkte :: hintereinander stehen implizit für das aktuelle Verzeichnis ., z.B.:

PATH=:/bin:/usr/bin (= .:/bin/:usr/bin)

PATH=/bin:/usr/bin: (= /bin:/usr/bin:.)

PATH=/bin::/usr/bin (= /bin:.:/usr/bin)

Folie 139Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Pfadsuche

• damit Kommando gefunden werden kann, muss es ausführbar sein - ein Shell-Skript auch lesbar

• type simuliert Suche nach tatsächlich ausgeführtem Kommando und gibt Typ aus:

• type KMDO

• das aktuelle Verzeichnis wird nur durchsucht, wenn PATH es enthält

• am Anfang oder Ende des Pfades oder stehen für das

aktuelle Verzeichnis

PATH=:/bin:/usr/bin (= .:/bin/:usr/bin)

.

.: ::

Page 140: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 140Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 11

• Sichern Sie die Variable PATH in eine Hilfsvariable.

• Geben Sie den Wert von PATH aus.

• Löschen Sie die Variable PATH.– Welche Kommandos können Sie danach noch aufrufen?

• Stellen Sie die Variable PATH wieder her.

• Ergänzen Sie die Variable PATH um das Verzeichnis ~/bin vorne und den Inhalt der Variablen HOME hinten (temporär und permanent).

• Suchen Sie einige Kommandos mit type.

Page 141: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Shell-Skripte können mit jedem gewöhnlichen ASCII-Texteditor erstellt werden.

Sie können alle UNIX-Kommandos enthalten, die auf der Kommandozeile eingebbar sind.

Beim Aufruf eines Shell-Skriptes werden die darin stehenden Kommandos abgearbeitet.

Ein Skript ist über seinen Namen aufrufbar, wenn:

Die Skript-Datei lesbar + ausführbar ist (rx-Rechte).

Der Suchpfad $PATH das Skript-Verzeichnis enthält.

Der Name eines Shell-Skriptes sollte so gewählt werden, dass daraus auf seine Bedeutung geschlossen werden kann (irgendwann gibt es 100erte davon!).

Die Namen von Shell-Skripten sollten die Endung .sh erhalten (für die Shell nicht notwendig), da sie:

Sofort als Shell-Skripten erkennbar sind.

Mit Suchbefehlen suchbar (und z.B. sicherbar) sind.

Nicht mit bereits vorhandenen UNIX-Kommandos (z.B. test) kollidieren können.

Folie 141Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell-Skripte

• Erstellen von Shell-Skripten mit jedem gewöhnlichen ASCII-Texteditor möglich

• können alle UNIX-Kommandos enthalten, die auf Kommandozeile eingebbar sind

• Abarbeiten der Kommandos beim Aufruf eines Shell-Skriptes

• Ein Skript ist über seinen Namen aufrufbar, wenn:– Skript-Datei lesbar + ausführbar ist

– Der Suchpfad $PATH das Skript-Verzeichnis enthält

• Die Namen von Shell-Skripten sollten (müssen aber nicht) die Endung .sh erhalten

Page 142: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die erste Zeile eines Shell-Skriptes sollte folgende Form haben („Shee-Bang“-Notation):

#!/bin/sh

Sie legt fest, durch welches Programm (in obigem Fall /bin/sh, aber auch awk, sed, perl, ... sind angebbar) das Skript ausgeführt werden soll.

Fehlt diese Zeile, wird das Skript von der aktuellen Shell ausgeführt. Ist das z.B. die tcsh und handelt es sich z.B. um ein sh-Skript, führt dies zu Fehlern.

Jedes Skript sollte einen Kommentarkopf (#)enthalten mit

- Autor

- Name und Aufgabe

- Datum

- Änderungen

- benötigte Programme

- Fehlermöglichkeiten und exit-Code

Folie 142Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell-Skripte

• Die erste Zeile eines Shell-Skriptes sollte folgende Form haben:

#!/bin/sh

• dadurch wird festgelegt, welches Programm das Skript ausführen soll

• fehlt diese Zeile, wird das Skript von aktueller Shell ausgeführt

• Shellskripte gut dokumentieren!

• mit exit 0 oder exit 1 beenden (0=ok, 1-255=Fehler)

Page 143: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 143Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 12

• Erstellen Sie ein Skript first.sh (mit der Shee-Bang-Notation), das folgendes (mit jeweils einer entsprechenden Überschrift per echo) ausgibt:

– Das aktuelle Datum (date +%D)– Wer gerade am System angemeldet ist– Das aktuelle Arbeitsverzeichnis– Den Typ des verwendeten Terminals ($TERM)

– Den Namen des verwendeten Terminals (tty)

• Machen Sie das Skript für jeden aufrufbar.

Page 144: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Shell merkt sich pro Benutzer alle eingegebenen Befehle in einer Datei .bash_history (HISTFILE, auch zwischen Sitzungen) und numeriert sie durch.

Standard sind die letzten 1000 Befehle (HISTSIZE).

Mit dem Befehl history [N] können diese 500 (bzw. die letzten N) Befehle angezeigt werden.

Mit history | grep TEXT kann nach Befehlen mit bestimmten Inhalten gesucht werden.

Die Shell sh kennt dieses History nicht!

Folie 144Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - History

• Shell merkt sich pro alle eingegebenen Befehle (500 bis 1000) in einer Datei .bash_history (Linux) und numeriert sie durch

• mit history [N] können diese 500 oder die letzten N Befehle angezeigt

werden

• mit history | grep TEXT kann nach Befehlen mit bestimmten Inhalten gesucht werden

Page 145: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Mit den Cursortasten-Auf/Ab kann in diesen Befehlen geblättert werden.

Ein alter Befehl kann editiert und durch RETURN erneut gestartet werden.

Achtung: in der ksh oder csh funktioniert dies anders!

Mit !NR (oder r NR in der ksh) kann ein Befehl über seine Nummer erneut aufgerufen werden (repeat).

Mit !TEXT (oder r TEXT in der ksh) kann ein Befehl über seinen Anfangstext erneut aufgerufen werden.

Es wird der neueste passende Befehl gesucht.

Folie 145Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - History

• mit den Cursortasten-Auf/Ab Blättern in Befehlen möglich

• ein alter Befehl kann editiert werden und erneuter Start durch RETURN

• mit !NR erneuter Aufruf eines Befehl über seine Nummer

• mit !TEXT erneuter Aufruf eines Befehls über seinen Anfangstext

Page 146: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

In der bash von Linux:

Drücken der Tabulator-Taste während Eingabe eines Kommandos führt zu einer Suche nach passenden Kommando- oder sonstigen Namen durch die Shell.

Ist das eingegebene Stück Text eindeutig, so wird der Name automatisch ergänzt.

Ist es mehrdeutig, so piepst der Rechner. Durch erneutes Drücken der Tabulator-Taste können dann alle passenden Namen angezeigt werden.

Dadurch muss man sich nicht soviel merken, vermeidet Tippfehler und steigert die Eingabegeschwindigkeit.

Bei der Eingabe des 1. Wortes wird nach passenden Kommandos (gemäß Suchpfad PATH) gesucht.

Ab dem 2. Wort wird nach passenden Dateien im Dateisystem gesucht.

Nach $ wird nach passenden Variablen gesucht.

Nach ~ wird nach passenden Usern gesucht

Nach @ wird nach passenden Rechnern gesucht (wenn HOSTFILE=/etc/hosts gesetzt ist).

Folie 146Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Namens-Vervollständigung

• gedrückte Tabulator-Taste während Kommando-Eingabe die Shell sucht nach passenden Kommando- oder sonstigen Namen – Eingabe eindeutig:Name wird automatisch ergänzt– Eingabe mehrdeutig: Tabulator-Taste erneut drücken

alle passenden Namen werden angezeigt

• Eingabe des 1. Wortes: Suche nach passenden Kommandos

• ab dem 2. Wort: Suche nach passenden Dateien im Dateisystem

• nach $: Suche nach passenden Variablen

• nach ~: Suche nach passenden Usern

• nach @: Suche nach passenden Rechnern

Page 147: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Aliase stellen „Abkürzungen“ dar, die wie normale Kommandos aufgerufen werden können.

Das 1. Wort der Kommandozeile wird dabei vor der Ausführung des Kommandos durch einen Text ersetzt.

Damit lässt sich das eigene System „maßschneidern“.

Auf manchen Systemen ist bereits für jeden Benutzer eine Datei ~/.alias vorbereitet, in die er seine persönlichen Aliase eintragen kann

Wird automatisch beim Login gelesen, wenn sie existiert.

Folie 147Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Alias

• Aliase sind „Abkürzungen“ , Aufruf wie normale Kommandos

• 1. Wort der Kommandozeile wird vor Kommando-Ausführung durch Text ersetzt

„ maßschneidern“ eines eigenen Systems

Page 148: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Das Erstellen eines neuen Alias NAME erfolgt durch(kein Leerzeichen um = erlaubt):

alias NAME='ERSATZ'

z.B.alias lr= '/bin/ls -lF /' (list root)

Das Auflisten eines Alias NAME erfolgt durch:alias NAME

Das Auflisten aller Aliase erfolgt durch:alias

Das Löschen eines Alias NAME erfolgt durch:unalias NAME

Folie 148Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Aliase

• Erstellen eines neuen Alias NAME durch

alias NAME='ERSATZ' alias lr= '/bin/ls -lF /'

• Auflisten eines Alias NAME durch:alias NAME

• Auflisten aller Aliase durch: alias

• Löschen eines Alias NAME durch:unalias NAME

um = keine Leerzeichen !!

Page 149: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 149Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 13a

• Probieren Sie die History-Funktionen der Shell aus.

• Probieren Sie die automatische Namens-Vervollständigung der Shell aus.

• Ermitteln Sie, welche Aliase in ihrer Umgebung bereits definiert sind.

• Ermitteln Sie, wo diese Alias-Definition steht.

• Löschen Sie einen vordefinierten Alias (z.B. ll oder dir) und überprüfen Sie dann, ob er noch aufrufbar ist (oder ein gleichnamiges „echtes“ Kommando).

Page 150: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 150Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 13b

• Definieren Sie folgende Aliase temporär (in einem Fenster) und permanent (automatisch nach Login):

cx chmod u+x

c clear

va vi ~/.alias

sa source ~/.alias (oder . statt source)

• Probieren Sie diese Aliase aus (va und sa erleichtern die Definition und Aktivierung neuer Aliase)

Page 151: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Unter UNIX kennt jeder Prozess drei automatisch geöffnete „Standard-Kanäle“, sie heißen:

Standard-Eingabe (stdin, 0)

Standard-Ausgabe (stdout, 1)

Standard-Fehlerausgabe (stderr, 2)

Fast alle UNIX-Kommandos und Anwendungen nehmen Eingaben von der Standard-Eingabe entgegen (normalerweise von der Tastatur).

Ihre Ausgaben werden auf der Standard-Ausgabe ausgegeben (normalerweise auf dem Bildschirm).

Ihre Fehler- und Diagnosemeldungen werden auf der Standard-Fehlerausgabe ausgegeben (normalerweise auf dem Bildschirm).

Programme mit diesem Standardverhalten heißen auch Filter (da die Daten wie durch einen „Kaffeefilter“ hindurchlaufen und dabei verarbeitet werden – Ausnahme z.B. lp)..

Für jede Login-Shell werden beim Login folgende Zuordnungen standardmäßig eingerichtet:

Standard-Eingabe Tastatur

Standard-Ausgabe Bildschirm

Standard-Fehlerausgabe Bildschirm

Alle von einer Shell aus gestarteten Prozesse „erben“ diese Belegung der Standard-Kanäle (außer sie werden beim Kommando-Aufruf umgeleitet).

Folie 151Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Standard-Ein/Ausgabe

• jeder Prozess kennt drei „Standard-Kanäle“ (automatisch geöffnet)

– Standard-Eingabe (stdin, 0)

– Standard-Ausgabe (stdout, 1)

– Standard-Fehlerausgabe (stderr, 2)

• fast alle Kommandos und Anwendungen nehmen Eingaben von der Standard-Eingabe entgegen

• Ausgaben erfolgen auf der Standard-Ausgabe

• Fehler- und Diagnosemeldungen erfolgen auf der Standard-Fehlerausgabe

Page 152: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 152Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Standard-Ein/Ausgabe

Standard-Eingabe und -Ausgabe

stdin 0

Prozess liestEingabenvon stdin

stderr 2

stdout 1Prozess

Prozess schreibt Ausgabennach stdout

Prozess schreibt Fehler und Warnungennach stderr

Page 153: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Durch Umlenken kann die Shell den Standard-Kanälen neu gestarteter Prozesse aber auch andere Dateien zuordnen.

Weil UNIX Dateien und Geräte gleich behandelt, kann es sich dabei sowohl um eine echte Datei als auch um Geräte (z.B. Festplatte oder Drucker) handeln.

Das Umlenken geschieht durch die Shell „von außen“, die Prozesse merken nicht, welche Dateien/Geräte wirklich mit ihren Standard-Kanälen verbunden sind.

Folie 153Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Standard-Ein/Ausgabe

Umlenkung der Standard-Eingabe bzw. -Ausgabe

stdin stdoutProzess Bildschirm

Drucker

Prozess

Datei

Tastatur

Datei

Prozess

/dev/nullBildschirm Datei

stderr

Erfolgt durch die Shell von außen

Page 154: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Viele Kommandos können Dateinamen auch von der Kommandozeile als Parameter lesen, sodass ein Umlenken der stdin nicht notwendig ist:

grep 'error:' logfilecat gedicht

Folie 154Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Datei-Umlenkung

• KMDO < FILE lenkt die Kommando- / Programm-Standard-Eingabe so um, dass sie aus Datei FILE kommt und nicht vom Terminal

• Die Datei muss existieren!

• Beispiel:

grep 'error:' < logfile

cat < gedicht

mail sarah < brief.txt

Page 155: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

KMDO > FILE lenkt die Kommando- / Programm - Ausgabe in Datei FILE um

Existiert die Datei bereits, wird sie überschrieben!

Beispiel:

date > now

grep "error:" logfile > err

ls -l > file.lst

echo "Viele Grüße" > brief.txt

KMDO >> FILE hängt die Ausgabe eines Kommandos oder Programmes an eine bereits existierende Datei FILE an.

Existiert die Datei noch nicht, so wird sie erzeugt.

Beispiel:

date >> now

grep "error:" logfile2 >> err

ls -l / >> file.lst

echo "Dein Tux" >> brief.txt

Folie 155Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Datei-Umlenkung

• KMDO > FILE lenkt die Kommando- / Programm - Standard-Ausgabe in Datei FILE um

• Existiert die Datei bereits, wird sie überschrieben!

• Beispiel: date > nowecho "Viele Grüße" > brief.txt

• KMDO >> FILE hängt die Kommando- / Programm - Standard-Ausgabe an bereits existierende Datei FILE an

• Existiert die Datei noch nicht, wird sie erzeugt!!

• Beispiel: date >> now; echo "Dein Tux" >> brief.txt

Page 156: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

find sucht nach Dateien im Dateisystem und hat folgende Syntax:

find abwo nachwas [wasdamittun]

find / -name passwd # sucht ab / nach Datei # passwd

Folie 156Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Datei-Umlenkung

• KMDO 2> FILE bzw. KMDO 2>> FILE die Standard-Fehlerausgabe eines Kommandos / Programms wird in eine Datei umgelenkt bzw. an eine bereits existierende Datei angehängt

• Beispiel:

rm DATEI_GIBT_ES_NICHT 2> err

find /etc -print 2> err

find /bin -print 2>> err

Page 157: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Neben Dateien können auch Geräte (Devices) für Umlenkungen genutzt werden, die beiden wichtigsten sind:

/dev/null Alle Daten, die dorthin gesendet werden, gehen verloren („Schwarzes Loch“):

cat .profile > /dev/null

/dev/zero Von diesem Gerät können beliebig viele Nullbytes gelesen werden (Vorsicht!, schnell viel Speicherplatz):

cat < /dev/zero

cat < /dev/zero > /tmp/nulle

Folie 157Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Datei-Umlenkung

• auch Geräte (Devices) können für Umlenkungen genutzt werden, die wichtigsten sind:

/dev/null Alle Daten, die dorthin gesendet werden, gehen verloren:

cat .profile > /dev/null

/dev/zero Von diesem Gerät können beliebig viele Nullbytes gelesen werden:

cat < /dev/zero

oder von einer Tastatur/serielle Schnittstelle lesen: cat < /dev/tty1 cat < /dev/ttyS0

Page 158: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Umlenkungen sind nur beim Start eines Programms möglich, danach kann die Zuordnung nicht mehr geändert werden.

Umlenkungen sollten nach den Optionen und Parametern des Kommandos angegeben werden.

Sollen mehrere Kanäle gleichzeitig umgelenkt werden, so sind die Umlenkungen in beliebiger Reihenfolge hintereinander zu schreiben: ls -l /etc/profile DATEI_GIBT_ES_NICHT \

> files.lst 2> /dev/null

Die gleiche Datei kann nicht für die Umlenkung mehr als eines Standard-Kanals verwendet werden, z.B. (warum?):

sort < liste > listefind / -print > output 2> output

Umlenkungen sind insbesondere für Shell-Skripten interessant, die unbeaufsichtigt und ohne Interaktion mit einem Benutzer ablaufen sollen und deren Ausgaben man sich erst später ansehen möchte.

Folie 158Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Datei-Umlenkung

• Umlenkungen nur beim Start eines Programmes möglich, danach keine Änderung der Zuordnung mehr

• Umlenkungen nach Optionen und Parametern des Kommandos angegeben

• bei Umlenkung mehrerer Kanäle gleichzeitig ist Reihenfolge der Umlenkungen beliebig – ls -l /etc/profile DATEI_GIBT_ES_NICHT \

> files.lst 2> /dev/null

• Verwendung der gleichen Datei für die Umlenkung mehr als eines Standard-Kanals nicht möglich sort < liste > liste

Page 159: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 159Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 14

• Lassen Sie sich von verschiedenen Verzeichnissen mit ls das Inhaltsverzeichnis ausgeben und sammeln Sie diese Ausgaben in einer Datei list.

• Erzeugen Sie mit echo eine Textdatei zeilenweise.

• Überlegen Sie sich ein Kommando, das Meldungen auf der Standard-Ausgabe und der Standard-Fehlerausgabe ausgibt.

– Lenken Sie beide Kanäle einzeln in je eine Datei um.

Page 160: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Prozesse über Pipes verbinden

Häufig möchte man die Ausgabe eines Programmes oder eines Kommandos als Eingabe für ein anderes Programm oder ein anderes Kommando nutzen.

Dies geschieht mit Hilfe einer (unnamed) Pipe |:

KMDO1 | KMDO2

Die Standard-Ausgabe von KMDO1 wird durch die Pipe gesendet und als Standard-Eingabe von KMDO2 verwendet.

Eine Pipe liegt vollständig im Speicher.

Belegt etwa 8 KByte Speicherplatz.

Synchronisiert beide Prozesse (was ist damit gemeint?).

Beide Prozesse laufen gleichzeitig (parallel).

Folie 160Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Pipes

Prozesse über Pipes verbinden• Nutzen der Ausgabe eines Programmes / Kommandos als Eingabe für anderes

Programm / Kommando mit Hilfe einer Pipe |:

KMDO1 | KMDO2

• Standard-Ausgabe von KMDO1 wird durch Pipe gesendet und als Standard-Eingabe von KMDO2 verwendet

PipestdinstdoutProzess1 Prozess2

Page 161: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Ausgaben auf den Fehlerkanal werden durch Pipes nicht umgelenkt, sie müssen für jedes Kommandos getrennt (direkt danach) umgelenkt werden:

KMDO1 2> err1 | KMDO2 2> err2

Eine (unnamed) Pipe transferiert Daten nur in eine Richtung (uni-direktional).

(Unnamed) Pipes können nur zwischen den KindProzessen eines ElternProzesses aufgebaut werden.

Folie 161Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Pipes

• Ausgaben auf den Fehlerkanal nicht durch Pipes umgelenkt, müssen für jedes Kommandos getrennt umgelenkt werden:– KMDO1 2> err1 | KMDO2 2> err2

• eine Pipe transferiert Daten nur in eine Richtung

• Aufbau von Pipes nur zwischen Kind-Prozessen eines Eltern-Prozesses möglich

Pipestdinstdout

Prozess1 Prozess2

Page 162: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Es können beliebig viele Kommandos/Programme zu einer Pipeline (Filterkette) verbunden werden:

KMDO1 | KMDO2 | ... | KMDO_N

Die Standard-Eingabe von KMDO1 und die Standard-Ausgabe von KMDO_N können direkt nach den beiden Kommandos umgelenkt werden.

KMDO1 < in | KMDO2 | ... | KMDO_N > out

Was ist der Unterschied einer Pipe zu einer Lösung mit Umlenken auf/von Zwischendatei?

Manche Pipes nicht sinnvoll:

cd | more

cat file* | ls -l

tee-Stück zweigt ab (-a hängt an):

KMDO1 | tee file1 | KMDO2 | tee -a file2 | ...

Folie 162Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Pipes

• beliebig viele Kommandos/Programme können zu einer Pipeline (Filterkette) verbunden werden:

KMDO1 | KMDO2 | ... | KMDO_N

• Umleitung der Standard-Eingabe von KMDO1 und der Standard-Ausgabe von KMDO_N direkt nach den beiden Kommandos möglich

KMDO1 < in | KMDO2 | ... | KMDO_N > out

• Beispiele ls -l | morecat /etc/passwd | sort | lpps -el | grep 'top'

Page 163: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 163Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 15

• Überlegen Sie sich zwei unterschiedliche Möglichkeiten, eine Datei mit Hilfe von cat, Pipes, Umlenkungen und more seitenweise ausgeben.

• Suchen Sie mit Hilfe von ps -ef, einer Pipe und grep $USER nach Prozessen mit Ihrer Kennung.

• Starten Sie das Programm sleep 1000 in einigen Fenstern (schläft 1000 Sekunden und stoppt dann) und listen Sie mit ps nur diese sleep-Prozesse auf.

Page 164: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Dateinamen-Expansion

Sollen viele Dateien bearbeitet werden, so ist eine Beschreibung von Dateinamen über Muster nützlich.

Die Shell bietet hierzu die sogenannten Metazeichen ? * [...] [!...] ~ {...} an, über die sich Dateinamen-Muster beschreiben lassen (~ und {} nur in der bash)

In einer Kommandozeile angegebene Muster werden von der Shell vor der Ausführung des Kommandos durch die Liste der passenden Dateinamen ersetzt.

Die Kommandos bekommen von den Mustern nichts mehr mit, sondern sehen nur noch die expandierte Liste der passenden Dateinamen.

Achtung: Passt kein einziger Dateiname zum Muster, so bleibt das Muster selbst stehen.

Folie 164Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Dateinamen-Expansion

Dateinamen-Expansion• Bearbeitung vieler Dateien Beschreibung von Dateinamen über Muster

nützlich

• Die Shell bietet hierzu Metazeichen ? * [...] [!...] ~ {...}

• Shell ersetzt in Kommandozeile angegebene Muster vor Kommando - Ausführung durch Liste der passenden Dateinamen

• Kommandos sehen nur noch die Liste der passenden Dateinamen

• Passt kein Dateiname zum Muster, bleibt das Muster selbst stehen

Page 165: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Metazeichen

* steht für beliebig viele beliebige Zeichen (auch 0!):

ls *.txt

? steht für genau 1 beliebiges Zeichen:

ls report.???

[abc] steht für genau 1 Zeichen aus der Menge der Zeichen abc (Zeichenklasse):

ls *.[ch]

[a-z]steht für genau 1 Zeichen aus dem ASCII-Bereich a-z (analog [A-Z] und [0-9]):

ls [a-z]*

[!abc] (oder [^abc]) steht für genau 1 Zeichen außer den angegebenen (Negierte Zeichenklasse):

ls [!a-z]*

{abc,def,ghi} steht für genau eine der Zeichenketten abc, def, ghi aus der Liste (tcsh, bash):

ls {kapitel,chapter}[0-9]*

~USER steht für das Heimat-Verzeichnis von USER.

Kommt ein Leer- oder Sonder-Zeichen im Muster vor, so ist es ebenfalls mit \ zu schützen.

rm Datei\ mit\ Leerzeichen\ im\*Namen

Folie 165Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Dateinamen-Expansion

Metazeichen (einige Beispiele)• * für beliebig viele beliebige Zeichen

ls *.txt

• ? für genau 1 beliebiges Zeichenls report.???

• [abc] für 1 Zeichen aus der Auswahl ([a-c] [!a-z])ls [a-f]*

• ~ für das eigene Heimat-Verzeichnis

• kommt Leerzeichen im Muster vor, ist es mit \ zu schützen

Page 166: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Metazeichen heißen auch Wildcards (oder „Joker “).

Metazeichen und normale Zeichen können zu beliebig langen Mustern aneinandergehängt werden.

Die Dateinamen müssen immer vollständig zum angegebenen Muster passen („verankert“)

Folie 166Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Dateinamen-Expansion

• Metazeichen heißen auch Wildcards oder „Joker “

• Aneinanderhängen von Metazeichen und normale Zeichen zu beliebig langen Mustern möglich

• Dateinamen müssen immer vollständig zum angegebenen Muster passen

Page 167: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Mit Metazeichen nicht beschreibbar sind:

Wiederholung eines Buchstabens oder Textes.

Dateinamen suchen, die Buchstaben nicht enthalten.

Veroderung und Klammerung in einem Muster.

Bei den Metazeichen zur Dateinamen-Expansion handelt sich um eine stark eingeschränkte Form der Regulären Ausdrücke (die unter UNIX in vielen Werkzeugen einsetzbar sind). Vollen Umfang der regulären Ausdrücke erhält man durch Kombination mit grep:

ls | grep '^[a-f].*[0-9]$'

Gegenüber MS-DOS sind die Möglichkeiten der Dateinamen-Expansion stark erweitert:

Beliebige Kombination der Metazeichen möglich.

Komplette Pfadnamen können gesucht werden.

Die Ergebnisliste darf sehr lang werden (20.000 Zeichen).

Folie 167Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Shell - Dateinamen-Expansion

• manches ist mit Metazeichen nicht beschreibbar

• Metazeichen zur Dateinamen-Expansion sind stark eingeschränkte Form der Regulären Ausdrücke

• gegenüber MS-DOS Möglichkeiten der Dateinamen-Expansion stark erweitert

Page 168: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 168Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 16a

• Suchen Sie in /usr/bin nach Dateinamen, die:

– Das Zeichen a enthalten

– Mit a beginnen

– Mit a enden

– Mit a beginnen und enden

– 2 a direkt hintereinander enthalten

– Einen der Vokale aeiou enthalten

– Die Vokale aeio(u) in dieser Reihenfolge enthalten

– Ein Sonderzeichen enthalten (kein Buchstabe + Ziffer)

Page 169: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

In lokalisierten Systemen kann die Unterscheidung zwischen Gross- und Kleinschreibung entfallen. Wird aber die Shell-VariableLANG=C

gesetzt, gilt sie wieder. Dies kann grundsätzlich in Skripten so eingestellt werden.

Folie 169Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 16b

• Suchen Sie in /usr/bin nach Dateinamen, die:

– Einen Großbuchstaben enthalten (Problem?, Variable LANG=C setzen)– Genau 1/2/3 Zeichen lang sind (Problem?)– Einen der Vokale 2* direkt hintereinander enthalten

• Suchen Sie in den Unterverzeichnissen bis zur Stufe 4 des Wurzelverzeichnisses / nach C-Dateien (besitzen die Endung .c)

Page 170: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 170Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 16c

• Suchen Sie in Ihrem Heimat-Verzeichnis nach Dateinamen, die mit Punkt beginnen (Problem?).

– Wie können Sie daraus die Namen . und .. weglassen?– Können Sie Namen mit 2 oder mehr Punkten weglassen?

• Suchen Sie in /etc nach Dateinamen, die beide Zeichenketten auto und conf irgendwo im Dateinamen enthalten (bzw. auto oder conf).

Page 171: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 171Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

Inhalt• Wozu dient Quotierung?Wozu dient Quotierung?

• Shell-Standard-OperationenShell-Standard-Operationen

• MetazeichenMetazeichen

• TrennzeichenTrennzeichen

• Escape-ZeichenEscape-Zeichen

• Doppelte AnführungszeichenDoppelte Anführungszeichen

• Einfache AnführungszeichenEinfache Anführungszeichen

Page 172: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Shell führt zwischen dem Auslösen eines Kommandos durch RETURN und seinem eigentlichen Start eine Reihe von Standard-Operationen durch.

Eine eingegebene Kommandozeile wird durch diese Operationen zunächst in die endgültige Kommandozeile umgeformt, erst diese wird anschließend wirklich ausgeführt.

Um diese Operationen für Teile der Kommandozeile zu verhindern, sind diese Teile zu „quotieren“.

Folgende Operationen führt die Shell automatisch (in dieser Reihenfolge) beim Kommandoaufruf durch:

1. History-Ersetzung

2. Eingabezeile in Worte zerlegen („Token“)3. Quotierung berücksichtigen

4. Aliase ersetzen

5. I/O-Umlenkung einrichten

6. Variablen ersetzen

7. Kommando-Substitution durchführen (Aufbau-Kurs!)

8. Dateinamen expandieren

Das Ergebnis einer Variablen-Ersetzung wird daher in Kommando-Substitutionen verwendet und auf Metazeichen für Dateinamen-Expansion untersucht.

Das Ergebnis einer Kommando-Substitution wird ebenso auf Metazeichen für Dateinamen-Expansion untersucht.

Für diese beiden Operationen gibt es daher die Möglichkeit, zwar nicht sie selbst zu quotieren, aber ihr Resultat (kann wieder Sonderzeichen enthalten).

Folie 172Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

• Durchführung von einer Reihe von Standard-Operationen zwischen Auslösen eines Kommandos und eigentlichem Start

• um diese Operationen für Teile der Kommandozeile zu verhindern, sind diese Teile zu „quotieren“

Page 173: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Quotierung (Zitieren, Schützen)

Quotierung wird verwendet, um die Sonderbedeutung der Metazeichen (Sonderzeichen) für die Shell aufzuheben, sodaß sie als normaler Text gelten.

Es gibt 3 verschiedene Möglichkeiten, zu quotieren:

Mit Escape-Zeichen (Backslash): \C

Mit einfachen Anführungszeichen: '...' (single quotes)

Mit doppelten Anführungszeichen: "..." (double quotes)

Die Anführungszeichen müssen paarweise auftreten.

Folie 173Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

Quotierung (Zitieren, Schützen)

• Quotierung nützlich, um die Sonderbedeutung der Metazeichen für die Shell aufzuheben, damit als normaler Text gültig

• 3 verschiedene Möglichkeiten der Quotierung:– Escape-Zeichen: \C– einfache Anführungszeichen: '...' – doppelte Anführungszeichen: "..."

Anführungszeichen müssen paarweise auftreten!

Page 174: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folgende Metazeichen (22 Stück!) haben für die Shell eine besondere Bedeutung:

* ? [ ] = $ < > | & \

" ' ‘ ; ( ) { } ~ ^ !

Die Trennzeichen SPACE TAB NEWLINE werden ebenfalls als Metazeichen behandelt.

Es gibt auch eine Reihe von aus Metazeichen zusammengesetzten Symbolen wie z.B.:

>> 1>&2 == != <=

Werden geschützte Texte (und ungeschützte ohne Metazeichen) direkt hintereinander geschrieben, so ergibt dies ein einziges Wort (Token):

"abc"def'ghi' ® abcdefghi

"abc" def 'ghi' ® abc def ghi

Texte ohne Metazeichen müssen nicht geschützt werden. Der Klarheit halber werden sie aber häufig trotzdem geschützt angegeben:

grep "error:" *.c

Folie 174Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

• folgende Metazeichen haben für die Shell besondere Bedeutung:* ? [ ] = $ < > | & \ " ' ‘ ; ( ) { } ~ ^ !

• die Trennzeichen SPACE TAB NEWLINE werden wie Metazeichen behandelt

• es gibt aus Metazeichen zusammengesetzte Symbole, z.B.: >> 1>&2 == != <=

• Werden geschützte Texte direkt hintereinander geschrieben, ergibt dies ein einziges Wort – "abc"def'ghi' abcdefghi

Page 175: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Escape-Zeichen \ (backslash)

Hebt vor einem Metazeichen C die Sonderbe-deutung dieses einen Zeichens auf:

Wenn man also ein Fragezeichen verwenden will, kann man \? schreiben.

Analog schreibt man für den Backslash selbst: \\.

Dies ist eine allgemeine Konvention, die auch in allen anderen UNIX-Programmen gilt!

Folie 175Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

Escape-Zeichen \ (backslash)

• hebt vor einem Metazeichen C die Sonderbedeutung dieses einen Zeichens auf

allgemeine Konvention, gilt auch in allen anderen UNIX- Programmen

Beispiel:– echo Dies sind mehrere\ \ \ Leerzeichen

– echo \$HOME=$HOME

– echo \*\*\* Titel \*\*\* Warum\?

Page 176: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Doppelte Anführungszeichen "..." (double quotes)

Heben um eine Zeichenkette die Sonderbedeutung aller Metazeichen außer den folgenden auf:

$ (Variablen-Ersetzung)

.̀..̀ und $(...) (Kommando-Substitution, Aufbaukurs!)

\ (Escape)

Doppelte Anführungszeichen können mit einem Backslash davor in der Zeichenkette verwendet werden (\").

Bei der Kommandosubstitution wird in einer Sub-Shell das Kommando zuerst ausgeführt und dessen Standard-Ausgabe anstelle der rückwärtigen Hochkomma eingesetzt (substituiert).

Beispiele:

echo "Konfig.dateien: $(ls -d /etc)"

echo "PATH=<$PATH>"

echo "*.c"

echo "\"Text in Anführungszeichen\""

echo " ' "

echo "Es ist genau ̀date +%T̀"

Folie 176Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

Doppelte Anführungszeichen "..." (double quotes)• heben um Zeichenkette die Sonderbedeutung aller Metazeichen auf, außer :

$ (Variablen-Ersetzung)

\ (Escape)

` Kommandosubstitution (rückwärtiges Hochkomma)

• können mit einem Backslash davor in der Zeichenkette verwendet werden (\")

• Beispiel:

echo "&&&&"

echo "Heimatverzeichnis: $HOME"

echo "Pfad = `pwd`"

Page 177: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Einfache Anführungszeichen '...' (single quote)

Heben um eine Zeichenkette die besondere Bedeutung aller Metazeichen der Shell auf (keine einzige Ausnahme).

Ein einfaches Anführungszeichen darf daher nicht innerhalb einer von einfachen Anfüh-rungszeichen eingeschlossenen Zeichenkette vorkommen (auch dann nicht, wenn davor ein Backslash \ steht), da die Zeichenkette sonst an dieser Stelle endet.

Beispiel:

echo '&&&&'

echo 'Konfig.dateien: $(ls -d /etc)'

echo 'PATH=<$PATH>'

echo '*.c'

echo ' "Text in Anführungszeichen " '

echo ' ' ' # Funktioniert nicht!

echo ' \' ' # Funktioniert ebenfalls nicht!

Folie 177Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Quotierung

Einfache Anführungszeichen '...' (single quote)• heben um eine Zeichenkette die besondere Bedeutung aller Metazeichen der

Shell auf (keine Ausnahmen)

• ein einfaches Anführungszeichen darf nicht innerhalb einer von '...' eingeschlossenen Zeichenkette vorkommen Zeichenkette endet dort sonst

• Beispiel: echo '&&&&'echo '*.c'echo '"Text in Anführungszeichen "'echo ''' # Funktioniert nicht!

Page 178: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 178Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 17a

• Überlegen Sie sich, was von den nachfolgenden Kommandos jeweils ausgegeben wird, und überprüfen Sie anschließend ihre Vermutung:

• echo pwd echo '$HOME' echo "pwd" echo \$HOME echo $HOME echo "\$HOME" echo "$HOME" echo '\$HOME' echo "'"'"'"'" echo '"'"'"'"'

Page 179: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 179Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 17b

• Wenden Sie alle 3 Möglichkeiten der Quotierung auf die Argumente des folgenden echo-Kommandos an:

echo * $TERM > x &

– Was sind die Ergebnisse?– Was passiert, wenn Sie die Leerzeichen zwischen

dem Kommando und den Argumenten auch noch

schützen?

Page 180: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 180Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Kontrollstrukturen der Shell

Inhalt• ÜbergabeparameterÜbergabeparameter

• for-Schleifefor-Schleife

• case-Verzweigungcase-Verzweigung

• test-Kommandotest-Kommando

• if-Verzweigungif-Verzweigung

• while-Schleifewhile-Schleife

Page 181: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 181Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übergabeparameter

● Shell-Skripte können Parameter mitbekommen

$1 ... $9 erste 9 Parameter$* alle Parameter$0 Programmname$# Anzahl der Parameter$? Exit-Code des letzten

Kommandos

Shell-Skripte können durch Parameter gesteuert werden (wie UNIX-Kommandos auch).

Exit-Code:Jedes UNIX-Kommando liefert einen Exit-Code an die Shell zurück. Er ist 0 falls alles ok war, er ist ungleich 0 im Fehlerfall. Damit kann in einem Skript überprüft werden, ob etwas funktioniert hat oder nicht (und später mit if oder while darauf reagieren).

Beispiel:#!/bin/sh# Kommentarecho mein Name ist $0echo der erste Parameter ist $1echo die Anzahl der Parameter ist $#echo alle Parameter sind $*ls -lecho der Exit-Code von ls ist $?

Page 182: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 182Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

For-Schleife

● for-Schleife: über alle Elemente der Liste

for VAR in L1 L2 L3 L4 ... do

KMDO1 $VARKMDO2

done

Jedes Element der Liste wird in die Variable VAR übernommen und dann alle Kommandos der Schleife abgearbeitet. Die Anzahl der Listenelemente bestimmt die Anzahl der Schleifendurchgänge. Der in-Teil kann weggelassen werden: es werden dann alle Argumente aus der Kommandozeile ($*) verwendet.

Beispiele:

for i in Maier Mueller # 2 Maldo

grep $i adressenfile # jeweils suchendone

for i in *.c # alle C-Filesdo

cp $i $i.bak # kopierened - $i < edscript # und editieren

done

Page 183: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 183Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Case-Verzweigung

● case-Verzweigung: Mehrfachauswahl

case $VAR in MUSTER1) KMDO1 ;; MUSTER2) KMDO2 ;; ... esac

In Abhängigkeit der Variablen VAR wird verzweigt: Ist VAR identisch mit MUSTER1, wird Kommando1 abgearbeitet ...

Als Muster sind die Metazeichen (*, ?, []) möglich.

Mit dem Befehl read kann eingelesen werden:

read VAR

Beispiel:echo Bitte Zahlread inputcase $input in

1) ls ;;2) who ;;[3-5]*) echo Zahl ;;*) echo Fehler ;;

esac

Page 184: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 184Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Test-Kommando

● test-Kommando: Untersucht Strings, Zahlen, Fileattribute

test $VARtest $VAR = abc test $VAR != abctest $VAR -le 10 test $VAR -gt 200test -f file test -d dirtest -r file test -w file

test -x fileauch: [ -x file ]

test ist ein eingebautes Kommando der Shell (deshalb niemals eigene Skripte test nennen!). Es kann

Strings vergleichen:VAR=abc # Setzen der Variablentest $VAR = abc # Vergleichenecho $? # Anschauen des Exit-Codes

Zahlen untersuchen:VAR=100test $VAR -le 200

Weitere Optionen: -le steht für: <=-ge >=-lt <-gt >-eq ==-ne !=

Fileattribute untersuchen:

-f file # ob es eine normale Datei ist-d dir # ob Verzeichnis-r file # ob lesbar (für den Anwender)-w file # ob beschreibbar-x file # ob startbar

Page 185: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 185Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

If-Verzweigung

● if-Verzweigung: entweder-oder

if KMDO1 then

KMDO2 [ elif KMDO3

thenKMDO4 ]

[ elseKMDO5 ]

fi

Wenn Kommando1 richtig abgearbeitet ist, wird Kommando2 gestartet. Wenn nicht, wird Kommando3 aktiviert. Läuft dieses richtig, geht es bei Kommando4 weiter, sonst bei Kommando5.

elif und else-Zweige sind optional. elif kann beliebig oft vorkommen.

Im else-Zweig darf auch ein neues if stehen (Schachtelung):if grep root /etc/passwdthen

elseif test …then

…fi

fi

Beispiele:if cc file.c # C-Compilerthen

a.out # starten des exeelse

edit file.c # C-File editierenfi

if test $VAR = abc # Vergleichthen

echo 'in VAR steht abc drin'elif test -f file # prueft, ob filethen

echo 'file ist eine normale Datei'else

echo 'weder noch'fi

Page 186: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 186Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

While-Schleife

● while-Schleife: solange ok

while KMDO1 do

KMDO2KMDO3

done

Solange Kommando1 richtig funktioniert (Exit-Code 0), werden die Kommandos2 und 3 abgearbeitet.

Until läuft, solange das Kommando1 nicht richtig funktioniert.break bricht Schleife ab.continue leitet nächsten Durchgang ein.

Beispiele:while true # immer wahrdo

datesleep 5 # wartet 5 sec

done

while test $1 # prueft, ob 1.Parameter dado

echo $1shift # schiebt die Parameter

done

VAR=ja while test "$VAR" = ja # " wegen mögl. * ...do

read VARdone

until test -f file # prueft, ob file nicht dado

sleep 10done

Page 187: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Testmöglichkeit:

sh -x skript 2> protokoll

Folie 187Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 18

• Geben Sie mit einer for-Schleife einige Files mit Überschrift aus• Erstellen Sie ein Menu, in dem Sie einige UNIX-Kommandos auswählen

können (case, while): MenueDatum (1)Verzeichnis (2)

...Bitte wählen:

• Schreiben Sie ein Skript, das den Typ und die Rechte einer Datei als Text ausgibt (if, test):

pruefe filefile ist ein Verzeichnis und ist lesbar und ist schreibbar

Page 188: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 188Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Editoren

Inhalt

• EinführungEinführung

• vivi

Kapitel 4.5

Kapitel 4.5

Page 189: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Unter UNIX gibt es eine Vielzahl von Editoren:

Stream-orientiert (sed, nur für Batch-Verarbeitung)

Zeilen-orientiert (ed, ex)

Bildschirm-orientiert (vi(m), joe, (x)emacs, jed, pico)

Grafisch orientiert (kedit, kate, textedit, nedit)

Diese sogenannten ASCII-Editoren sind zur Erstellung von Konfigurationsdateien, Programmen, Mail, usw. gedacht. Sie unterstützen keine Formatierungen wie fett, kursiv oder unterstrichen.

Folie 189Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Editoren - Einführung

• unter UNIX gibt es eine Vielzahl von Editoren:– Stream-orientiert – Zeilen-orientiert – Bildschirm-orientiert – Grafisch orientiert

• zur Erstellung von Konfigurationsdateien, Programmen, Mail,... gedacht

• unterstützen keine Formatierungen wie fett, kursiv oder unterstrichen

sogenannte ASCII-Editoren

Page 190: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Im folgenden wird von den vielen möglichen Editoren der vi (sprich: wi-ei) besprochen, weil er:

Der Standard-Editor unter UNIX ist (d.h. garantiert auf jedem UNIX-System verfügbar ist).

Sehr schnell ist und schnell gestartet werden kann.

Wenig Ressourcen (Speicher, Netzbandbreite) benötigt.

In gewissen Ausnahmefällen nur noch verfügbar sein kann (z.B. in einem Rettungssystem)

Viele vi-Kommandos auch an anderen Stellen im UNIX-System auftauchen (sed, awk, more, ...)

Folie 190Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Einführung

• Im folgenden wird der Editor vi (sprich: wi-ei) besprochen, weil: • der Standard-Editor unter UNIX

auf jedem UNIX-System verfügbar • sehr schnell und schnell gestartet • wenig Ressourcen benötigt werden• in gewissen Ausnahmefällen alleinig verfügbar sein kann,

z.B. im Rettungssystem• viele vi-Kommandos auch an anderen Stellen im UNIX-System auftauchen

Page 191: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 191Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Einführung

Trotz allem:Trotz allem:

Es besteht Es besteht kein Zwangkein Zwang, den , den vivi zu benutzen! zu benutzen!

Arbeiten Sie mit dem Editor, der Arbeiten Sie mit dem Editor, der IhnenIhnen am besten am besten

liegt!liegt!

Page 192: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 192Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Editoren - vi

Inhalt (1)• EinführungEinführung• ModiModi• Aufruf + VerlassenAufruf + Verlassen• BewegenBewegen• EditierenEditieren• Suchen (+ Ersetzen)Suchen (+ Ersetzen)• OptionenOptionen• KonfigurationsdateiKonfigurationsdatei

Page 193: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Der vi ist etwas gewöhnungsbedürftig, da er eine ungewöhnliche Bedienungs-Logik besitzt:

Kennt keine Maus, keine Cursor- und Funktions-Tasten.

Ist modus-orientiert, da alle Funktionen über die normalen (Buchstaben)Tasten ausgelöst werden.

Kennt sehr viele Bewegungs-Kommandos.

Es ist erst die Operation einzugeben, dann erfolgt die Auswahl des zu bearbeitenden Textes (grafisch orientierte System machen es genau umgekehrt: Sie markieren zuerst den Text und bearbeiten ihn dann).

Da (fast) jeder Buchstabe (klein, groß, mit Strg) im vi ein Kommando auslöst, ist es vorteilhaft, das 10-Finger-System zu beherrschen.

Die Bedeutung jedes Kommando-Buchstabens kann man sich über das zugehörige (gut gewählte) englische Wort leicht merken, z.B.:

c=change d=delete

a=append i=insert

g=go p=put

Hinter dem vi steckt sein zeilenorientierter Vorläufer ex. Er kann noch immer temporär für ein Kommando oder auch permanent aktiviert werden.

Unter LINUX wird eine Erweiterung des vi, der vim (vi improved) eingesetzt. Er stellt eine wesentliche Verbesserung und Erweiterung des vi dar.

Es gibt noch viele weitere „Clones“ des vi, z.B. vile, elvis, nvi, usw. (alle ebenfalls unter LINUX verfügbar).

Folie 193Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Einführung

• Der vi besitzt ungewöhnliche Bedienungs-Logik :

– kennt keine Maus, Cursor- und Funktions-Tasten

– ist modus-orientiert alle Funktionen werden über normale (Buchstaben)Tasten ausgelöst

– kennt sehr viele Bewegungs-Kommandos

– erst Eingabe der Operation, dann erfolgt Auswahl des zu bearbeitenden Textes

Page 194: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die unterste Bildschirmzeile ist im vi eine Statuszeile, in der Warnungen und Fehler-meldungen angezeigt werden (bleiben oft länger stehen).

Beim Wechel in den Ex- oder Such-Modus springt der Cursor ebenfalls in die Statuszeile.

Text nach dem Dateiende wird durch das Zeichen ~ in der ersten Spalte dargestellt.

Da jeder Buchstabe ein Kommando ist, wirkt sich CAPS-LOCK sehr unangenehm aus (z.B. bei j / J).

Folie 194Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Einführung

• unterste Bildschirmzeile ist eine Statuszeile Anzeige von Warnungen und Fehlermeldungen

• Cursor springt beim Wechel in den Ex- oder Such-Modus in Statuszeile

• Text nach dem Dateiende wird durch ~ in der ersten Spalte dargestellt

Page 195: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Da jeder Buchstabe gleichzeitig auch als Kommando dient, ist der vi modus-orientiert.

Während der Bearbeitung eines Textes wechselt man daher ständig zwischen folgenden Modi hin und her:

Kommando-Modus Zur Eingabe von Kommandos

Edit-Modus Zur Eingabe von Text

Ex-Modus Für zeilenorientierte Bearbeitung

Such-Modus Zur Textsuche

(Open-Modus Permanenter Ex-Modus)

Folie 195Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Modi

• vi modus-orientiert, weil jeder Buchstabe gleichzeitig Kommando ist

• bei der Textbearbeitung ständiger Wechsel zwischen folgenden Modi: Kommando-Modus zur Eingabe von Kommandos

Edit-Modus zur Eingabe von Text

Ex-Modus für zeilenorientierte Bearbeitung

Such-Modus zur Textsuche

Open-Modus permanenter Ex-Modus

Page 196: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Zentraler Modus ist der Kommando-Modus, er ist beim Start des vi aktiv.

Durch folgende Eingaben wechselt man von dort aus in die anderen Modi:

a A c C i I o O r R s S ® Edit-Modus.

: ® Ex-Modus.

/ ? ® Such-Modus.

Q ® Open-Modus

(der Open-Modus wird nie benötigt, kann aber über Q versehentlich leicht eingeschalten werden).

Durch folgende Eingaben kehrt man aus den anderen Modi wieder in den Kommando-Modus zurück:

ESC ® Beendet den Edit-Modus wieder.

RETURN ® Führt Befehl im Ex-/Such-Modus aus.

ESC ® Bricht den Ex-/Such-Modus ab.

vi RETURN ® Beendet den Open-Modus.

Der Open-Modus wird nie benötigt (außer bei fehlendem Plattenplatz für die temporäre Kopie der editierten Datei).

Folie 196Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Modi

Edit-Modus

Kommando-Modus

Ex-Modus

vi ... :x :wq :q :q! ZZ

a A c C i Io O (r) R s S

ESC

CRESC

:

Such-Modus

/?

CRESC

ESCEndeStart

Page 197: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Aufruf des vi

vi Starten des vi mit einer leeren Datei

vi DATEI Starten des vi mit einer bereits existierenden Datei

vi Datei1 Datei2 und mit meheren Dateien (umschalten mit :n)

Der Inhalt der Datei wird während des Editierens in einem Puffer im Verzeichnis /tmp gespeichert.

Erst beim Verlassen des vi oder beim expliziten Zwischenspeichern wird die Originaldatei überschrieben.

Folie 197Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Aufruf

Aufruf des vi

vi Starten des vi mit einer leeren Datei

vi DATEI Starten des vi mit einer bereits existierenden Datei

• Dateiinhalt wird während des Editierens in einem Puffer im Verzeichnis /tmp gespeichert

• beim Verlassen des vi oder beim expliziten Zwischenspeichern wird Originaldatei überschrieben

Page 198: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 198Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Verlassen

Verlassen des vi

:q beendet den vi, wenn der Puffer keine Änderungen enthält (quit)

:q! wie oben, aber alle Änderungen im Puffer werden verworfen (quit)

:w schreibt den Puffer in aktuelle Datei, verläßt aber den vi nicht (write)

:wq Schreiben + vi verlassen (write + quit)

:x wie :wq (exit)

ZZ wie :wq

Page 199: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Bewegen des Cursors

h j k l Cursor nach links, unten, oben, rechts (unter den Fingern der rechten Hand!).

Hinweis:

Oft sind die Cursortasten bereits mit vi-Befehlen belegt und funktionieren wie erwartet.

Werden sie allerdings im Editier-Modus benutzt, so finden „unsichtbare“ Moduswechsel statt, die der Benutzer gar nicht mitbekommt.

Daher eine Bitte:Bedecken Sie die Cursortasten während der ersten Stunde vi-Übung mit

einem Blatt Papier und benutzen Sie nur die vi- Kommandos zum Bewegen des Cursors!

Folie 199Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Bewegen

Bewegen des Cursors

hh jj llkk

Cursor nach oben(auch - )

Cursor nach links(auch Backspace )

Cursor nach rechts(auch SPACE )

Cursor nach unten(auch RETURN oder + )

Page 200: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

w W b B e E Wortweise vor (word), zurück (backword) oder ans Wortende (endword).

^ 0 $ Zum 1. Zeichen, Zeilenanfang oder -ende.

Strg-F Strg-B Eine Seite nach unten (forward) oder nach oben (backward).

1G G NNG Zu Dateianfang, zum Dateiende, oder zur Zeile mit der Nummer NN springen (go).

Folie 200Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Bewegen des Cursors

rechtsrechts

Unten

oben

linkslinksSatzSatz SatzSatzZeileZeile ZeileZeileWortWort WortWortZeichenZeichen ZeichenZeichen

DokumentanfangDokumentanfang

DokumentendeDokumentende

(halbe) Seite(halbe) Seite

(halbe) Seite(halbe) Seite

Absatz/AbschnittAbsatz/Abschnitt

Absatz/AbschnittAbsatz/Abschnitt

ZeileZeile

ZeileZeile

( ^ 0 b B h Backsp

G

Ctrl-D/F

) ]]

j +

lG

Ctrl-U/B

( [[

k -

)$w We E

l Blank

Page 201: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 201Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 19

• Öffnen Sie die Datei gedicht mit dem vi.

• Probieren Sie alle Bewegungs-Kommandos aus, decken Sie die Cursortasten dazu bitte ab!

• Was ist der Unterschied zwischen den Kommandos– w und W?

– b und B?

– e und E?

• Verlassen Sie den vi ohne Abspeichern.

Page 202: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Text einfügen

a A Fügt Text hinter der Cursorposition (a) bzw. am Ende der aktuellen Zeile (A) an (append).

i I Fügt Text vor der Cursorposition (i) bzw. am Anfang der aktuellen Zeile (I) an (insert).

o O Öffnet eine neue (leere) Zeile unterhalb (o) bzw. oberhalb (O) der aktuellen Zeile, in der dann Text eingefügt werden kann (open).

Folie 202Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Text einfügen

aktuelle Zeileaktuelle Zeile xx Cursorposition

OO

oo II ii aa AA

Page 203: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Sinnvolle Arbeitstechnik

ESC vor jedem Editier-Kommando funktioniert zwar, allerdings wird dadurch ESC sehr häufig umsonst gedrückt.

Besser ist es, nach jedem Editier-Kommando dieses sofort mit ESC zu beenden (d.h. eine Art „Klammerung“ der Texteingabe durchzuführen).

Der gerade aktive Modus ist in der Statuszeile ablesbar (wenn die Option showmode gesetzt ist).

Nach einer gewissen Einarbeitungszeit hat man den gerade aktiven Modus im Kopf, ohne darüber nachzudenken.

Die Kommandos zum Löschen (d=delete), Ändern (c=change) und Herauskopieren (y=yank) müssen mit einem Bewegungs-Kommando kombiniert werden.

D.h. es steht eine große Auswahl an Möglichkeiten zur Textbearbeitung zur Verfügung, ohne vorher den Text (mit Cursorbewegungen) markieren zu müssen.

Ein Kommando kann durch Eingabe einer Zahl davor entsprechend oft wiederholt werden.

Das letzte Kommando wird durch . wiederholt.

Folie 203Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Sinnvolle Arbeitstechnik

– nach jedem Editier-Kommando dieses sofort mit ESC beenden

– der gerade aktive Modus ist in der Statuszeile ablesbar

– die Kommandos zum Löschen, Ändern und Merken müssen mit Bewegungs- Kommando kombiniert werden

– durch Eingabe einer Zahl vor ein Kommando kann es entsprechend oft wiederholt werden

– das letzte Kommando wird durch . wiederholt

Page 204: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 204Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Text löschen (und merken)x Zeichen unter Cursor löschen (crossout)

dw Zeichen ab Cursor bis zum nächsten Wortanfang löschen (delete word)

d$ D Zeichen ab Cursor bis zum Zeilenende löschen (delete)

dd aktuelle Zeile löschen (delete line)

dG d1G Zeilen ab aktueller Zeile bis Dateiende/anfang löschen (delete go)

dBEWEGUNG gemäß Bewegungs-Kommando löschen (delete)

Page 205: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 205Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Text merken und wieder einfügen (Copy&Paste)

yb Zeichen ab Cursor bis zum vorherigen Wortanfang

herauskopieren (yank backword)

y0 Zeichen ab Cursor bis Zeilenanfang herauskopieren (yank)

3yy die 3 nächsten Zeilen herauskopieren (yank line)

p P kopierten Text nach/vor aktuellem Zeichen oder aktueller Zeile einfügen (put), je nachdem ob nur einzelne Zeichen oder ganze Zeilen kopiert

yBEWEGUNG gemäß Bewegungs-Kommando herauskopieren (yank)

Page 206: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 206Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Text ersetzen

r R aktuelles Zeichen (r) oder ab aktuellem Zeichen (R) durch eingetippte Zeichen ersetzen (replace)

cw aktuelles Wort ab Cursor bis Wortende ersetzen (change word)

c$ ab Cursor bis zum Zeilenende ersetzen (change)

cc gesamte Zeile ersetzen (change line)

cG c1G bis zum Dateiende/anfang ersetzen (change go)

cBEWEGUNG gemäß Bewegungs-Kommando ändern (change)

Page 207: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Änderung zurücknehmen

u Letzte Änderung zurücknehmen, egal wie groß sie war (undo). Geht beim vi nur 1x, nochmal u nimmt undo wieder zurück.Beim vim sind beliebig viele Änderungen zurücknehmbar!

Strg-R Letzte undo-Operation im vim zurücknehmen (redo, hat keine Funktion im vi).

U Alle Änderungen in der aktuellen Zeile zurücknehmen, bevor sie verlassen wurde (undo).

Folie 207Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Änderung zurücknehmen

u letzte Änderung zurücknehmen, egal wie sie war (undo). geht nur 1x, nochmal u nimmt undo wieder zurück

U alle Änderungen in der aktuellen Zeile zurück - nehmen, bevor sie verlassen wurde (undo)

Page 208: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 208Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 20

• Öffnen Sie die Datei gedicht mit dem vi.

• Ändern Sie den Text der Datei, indem Sie sich konkrete Änderungsaufgaben stellen.

– Probieren Sie dabei alle Einfügen-, Änderungs-, Löschen- , Merken-, Kopieren- und Ersetzen-Kommandos aus.

– Nehmen Sie Änderungen auch wieder zurück.

• Verlassen Sie den vi, ohne vorher abzuspeichern.

• Wiederholen Sie die Übung und speichern Sie den Text während dem Editieren und beim Verlassen ab.

Page 209: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 209Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Suchen

Suchen

/TEXT vorwärts nach Zeichenkette TEXT suchen

?TEXT rückwärts nach Zeichenkette TEXT suchen.

n In aktueller Richtung weitersuchen (next)

N In entgegengesetzter Richtung weitersuchen (next)

•TEXT kann ein sogenannter Regulärer Ausdruck sein

• Suche kann auch als Bewegungs-Kommando mit den Editier- Kommandos c d y verwendet werden

Page 210: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Suchen und Ersetzen

Die gesamte Datei nach TEXT durchsuchen und durch die Zeichenkette ERSATZ ersetzen (substitute, global):

:1,$s/TEXT/ERSATZ/g

Vor dem s (substitute) ist eine Zeilennummer NR oder ein Zeilennummernbereich BEGINN,ENDE angebbar, auf die sich die Ersetzung beziehen soll, Abkürzungen dafür sind:. = Aktuelle Zeile

$ = Letzte Zeile der Datei

% = Alle Zeilen der Datei (entspricht 1,$)

Folie 210Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Suchen + Ersetzen

Suchen und Ersetzen – die gesamte Datei nach TEXT durchsuchen und durch die Zeichenkette

ERSATZ ersetzen (substitute, global)::1,$s/TEXT/ERSATZ/g

– vor dem s (substitute) ist eine Zeilennummer NR oder ein Zeilennummernbereich BEGINN,ENDE angebbar, auf die sich die Ersetzung beziehen soll

– Abkürzungen dafür : . = aktuelle Zeile

$ = letzte Zeile der Datei

% = alle Zeilen der Datei (entspricht 1,$)

Page 211: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Schrägstriche / begrenzen den Suchtext TEXT und den Ersatztext ERSATZ.

Kommt der Schrägstrich / in TEXT oder ERSATZ vor, so ist er mit einem Backslash \ davor zu schützen.

Alternativ kann zur Begrenzung ein beliebiges anderes Zeichen (z.B. # oder @) verwendet werden (das in TEXT nicht vorkommt).

Wird g (global) am Ende weggelassen, so wird die Änderung nur 1-mal pro Zeile (beim ersten Vorkommen) durchgeführt.

Wird statt g am Ende eine Zahl n (max. 512) angegeben, so wird das n-te Vorkommen des Suchtextes ersetzt.

Folie 211Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Suchen + Ersetzen

– die Schrägstriche / begrenzen den Suchtext TEXT und den Ersatztext ERSATZ

– kommt der Schrägstrich / in TEXT oder ERSATZ vor, ist er mit Backslash \ davor zu schützen

– wird g (global) am Ende weggelassen, wird die Änderung nur 1-mal pro Zeile durchgeführt

– wird statt g am Ende eine Zahl n (max. 512) angegeben, wird das n-te Vorkommen des Suchtextes ersetzt

Page 212: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Wird der Zeilenbereich weggelassen, so wird nur die aktuelle Zeile bearbeitet.

TEXT kann ein sogenannter Regulärer Ausdruck sein, in ERSATZ können Teile von TEXT wiederverwendet werden (extrem leistungsfähig!).

Die gesamte Datei nach der Zeichenkette TEXT durchsuchen, jeden gefundenen passen-den Text (mit ^^^ darunter) markieren und durch ERSATZ ersetzen, wenn der Benutzer dies mit y (yes) bestätigt (confirm):

:1,$s/TEXT/ERSATZ/gc

Folie 212Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Suchen + Ersetzen

– wird der Zeilenbereich weggelassen, wird nur die aktuelle Zeile bearbeitet

– TEXT kann sogenannter Regulärer Ausdruck sein, in ERSATZ können Teile von TEXT wiederverwendet werden

– gesamte Datei nach Zeichenkette TEXT durchsuchen, jeden gefundenen passenden Text (mit ^^^ darunter) markieren

und durch ERSATZ ersetzen, wenn der dies mit y bestätigt (confirm): :1,$s/TEXT/ERSATZ/gc

Page 213: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 213Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 21

• Suchen Sie im vi in der Datei gedicht vorwärts und rückwärts nach bestimmten Textmustern (z.B. made).

• Ersetzen Sie dabei manche dieser Textstellen mit Hilfe der vi-Kommandos zum Ändern und Ersetzen (können mit dem Kommando . wiederholt werden).

• Ersetzen Sie Textstellen mit Hilfe des ex-Kommandos zum Suchen und Ersetzen (mit und ohne Bestätigung).

Page 214: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Neben Optionen zum Ein- und Ausschalten (Flags) gibt es auch numerische und Text-Optionen, z.B.:

:set report=10:set dir=/tmp

Die Belegung der geänderten Optionen läßt sich abfragen mit:set

Die Belegung aller Optionen läßt sich abfragen mit:set all

Folie 214Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Optionen

• der vi wird durch eine Vielzahl von Optionen konfiguriert

• das Setzen von Optionen durch: :set OPTION

• das Zurücksetzen von Optionen durch::set noOPTION

• viele Optionen können abgekürzt werden z.B. showmode durch sm

• neben Optionen zum Ein- und Ausschalten (Flags) gibt es auch numerische und Text-Optionen

Page 215: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Weitere wichtige Optionen sind:

autoindent Automatisch Einrücken (Strg-D/T)

showmatch Öffnende Klammer bei Eingabe der schließenden anzeigen

tabstop=NN Tabulatorbreite NN

shiftwidth=NN Tabulatorbreite NN beim nachträglichen Ein/Ausrücken

native System-Zeichensatz verwenden (vim)

eightbits 8-Bit Zeichen erlauben (vim)

syntax Syntaxcoloring durchführen (vim)

(in ~/.vimrc Color auf true setzen!)

Folie 215Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Optionen

Die wichtigsten Optionen sind

showmode Vi-Modus in Statuszeile anzeigen

ignorecase Groß/Kleinschreibung in Suche ignorieren

number Zeilen numeriert anzeigen

wrapscan Suche über Dateiende/anfang fortsetzen

list Tabulatoren und Zeilenenden anzeigen

wrapmargin=NN Automatischer Umbruch NN Zeichen vor dem Zeilenende (0=kein Umbruch)

report=NN Änderungen ab NN Zeilen in Statuszeile anzeigen

Page 216: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Die Konfigurationsdatei ~/.exrc (bzw. beim vim die Datei ~/.vimrc) wird bei jedem vi-Aufruf gelesen und legt seine Grundeinstellungen fest.

In ihr sind alle ex-Kommandos angebbar (ohne führenden Doppelpunkt):

set wrapscan

set report=1

set tabstop=4

set showmode

...

Folie 216Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Konfigurationsdatei

• die Konfigurationsdatei ~/.exrc wird bei jedem vi-Aufruf gelesen und legt Grundeinstellungen fest

• in ihr sind alle ex-Kommandos angebbar

set wrapscanset report=1set tabstop=4set showmode...

Page 217: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 217Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 22

• Ändern Sie Optionen im vi direkt und probieren Sie das geänderte Verhalten aus.

• Ändern Sie die Optionen in der Konfigurationsdatei ~/.exrc (bzw. ~/.vimrc) nach ihren Wünschen ab (mit dem vi) und probieren Sie das geänderte Verhalten aus.

Page 218: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 218Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

UNIX-Editoren - vi

Inhalt (2)• AbkürzungenAbkürzungen• Spezielle KommandosSpezielle Kommandos• Visual-Mode (VIM)Visual-Mode (VIM)• Spezielle Bewegungen und SucheSpezielle Bewegungen und Suche• MarkenMarken• PufferPuffer• MakrosMakros• AbkürzungenAbkürzungen

Page 219: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 219Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Abkürzungen

. letztes Edit-Kommando wiederholen

~ Groß/Kleinschreibung akt. Zeichen vertauschen

xp 2 Zeichen vertauschen (crossout + put)

ddp 2 Zeilen vertauschen (delete line + put)

dwwp 2 Worte vertauschen (delete word + word + put)

X Backspace (crossout)

Page 220: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 220Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Editieren

Spezielle Kommandos

J zwei Zeilen aneinanderhängen (join)

% zur korrespondierenden Klammer springen für {[()]}, auch bei Verschachtelung

>> << aktuelle Zeile ein/ausrücken

>BEWEGUNG gemäß Bewegungs-Kommando einrücken

<BEWEGUNG gemäß Bewegungs-Kommando ausrücken

:!KOM UNIX-Kommando ausführen

Beispiel:

:!ls -l

:!cc % # % ist aktuelle Datei

Page 221: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 221Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vim - Visual Mode

Markieren im Visual Mode (Besonderheit des VIM):v Textblock zeichenweise markieren

V Textblock zeilenweise markieren

Strg-V Textblock spaltenorientiert markieren

• Nach dem Markieren kann eines der Kommandos– c d y > < ~

auf den markierten Text angewendet werden

Page 222: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 222Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Bewegen

Spezielle Bewegungen und SucheH M L Cursor auf den Anfang der ersten (home),

mittleren (middle) oder letzten Zeile (last)des Bildschirms setzen

tC TC Zeichen C vorwärts/rückwärts suchenCursor vor/hinter das Zeichen setzen, to

fC FC Zeichen C vorwärts/rückwärts suchenCursor auf das Zeichen setzen, find

NN| Cursor auf Spalte NN setzen

Page 223: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 223Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 23

• Probieren Sie im vi die gerade gelernten Kommandos aus:

– Abkürzungen– Zeilen aneinanderhängen– Zwischen korrespondierenden Klammern springen– Zeilen ein/ausrücken– Visual-Mode (nur im vim!)– Spezielle Bewegungen und Suche

Page 224: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 224Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Marken

Marken setzen und anspringen

mC Marke C (26 verschiedene Marken a-z möglich)auf aktuelle Zeile/Zeichen setzen (mark)

’C zum Zeilenanfang mit Marke C springen

‘C zum Zeichen mit Marke C springen

’’ zum Zeilenanfang vor letztem Bewegungs-Kommando springen (hin- und her)

‘‘ zum Zeichen vor letztem Bewegungs-Kommando springen (hin- und her)

Page 225: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Wenn Puffer in unterschiedlichen Dateien verwendet werden sollen, müssen sie einen Namen ("C) haben (:n :n# :n file).

Folie 225Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Puffer

(Benannte) Puffer füllen und einfügen

"CyBEWEG ausgewählten Text in Puffer C (26 verschiedene

Puffer a-z möglich) kopieren (yank)

"CdBEWEG ausgewählten Text in Puffer C ausschneiden (delete)

"Cp Text in Puffer C nach aktueller Zeile/Cursoreinfügen (put)

"CP Text in Puffer C vor aktueller Zeile/Cursoreinfügen (put)

Page 226: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Der vi kennt Makros, sie erlauben eigendefinierte Kommandos im Kommando-Modus.

Makros werden mit dem Kommando

:map KEY KMDOdefiniert (mapping) bzw.

mit dem Kommando

:unmap KEY

gelöscht (un-mapping).

Damit werden z.B. meist die Cursortasten auf die entsprechenden vi-Kommandos abgebildet.

Man kann die Funktionstasten entweder mit #1 … #9 angeben oder wenn man STRG-V davor gibt, auch durch Drücken der Taste selber. STRG-V kann auch zum Eingeben von RETURN- und ESC-Taste verwendet werden.

Folie 226Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Makros

• Der vi kennt Makros, die eigendefinierte Kommandos im Kommando-Modus erlauben

• Makros werden mit dem Kommando :map KEY KMDOdefiniert bzw. mit dem Kommando :unmap KEYgelöscht

Abbildung der meisten Cursortasten auf die entsprechenden vi-Kommandos

Page 227: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Der vi kennt Abkürzungen, die bestimmte Worte (während der Texteingabe) in einen beliebigen Text umwandeln (nach Eingabe eines Leerzeichens).

Abkürzungen werden mit dem Kommando

:ab KÜRZEL TEXT

definiert (abbreviation)

bzw. mit dem Kommando

:unab KÜRZELgelöscht (un-abbreviation).

Beispiel:

:ab mfg Mit freundlichen Grüßen

Folie 227Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

vi - Abkürzungen

• Der vi kennt Abkürzungen, die bestimmte Worte in einen beliebigen Text umwandeln

• Abkürzungen werden mit dem Kommando :ab KÜRZEL TEXTdefiniert bzw.

mit dem Kommando :unab KÜRZELgelöscht

• Beispiel:– :ab mfg Mit freundlichen Grüßen

Page 228: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 228Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Übung 24

• Probieren Sie Marken setzen und anspringen aus.

• Probieren Sie benannte Puffer aus.

• Probieren Sie Makros aus.

• Probieren Sie Abkürzungen aus.

Page 229: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

UNIX - Ein praktischer Einstieg, Todino, Strang & Peek, O`Reilly, 1999, ISBN 3-89721-125-4

Kurze Einführung (100 Seiten) für absolute Einsteiger, enthält das absolut Notwendige, ist relativ preisgünstig.

Keine Angst vor UNIX, Christine Wolfinger, VDI Verlag, 1996, ISBN 3-540-62369-8

Gründliche Einführung für absolute Einsteiger (beginnt mit allgemeiner Computertechnik, viele Bilder), ausgereift, Frau Wolfinger hält viele UNIX-Kurse, mit getrennter Kurzanleitung.

Jetzt lerne ich UNIX, Brockmann, Markt&Technik, 1999, ISBN 3-8272-5520-1

Gute Einführung in UNIX allgemein, für Einsteiger, zum Selbststudium geeignet, der Autor hält selbst UNIX-Kurse.

UNIX-System V.4, Jürgen Gulbins, Springer, 1995, ISBN 3-450-588864-7

Der deutsche Klassiker, gründlich, vollständig, eher für Leute mit mehr Computer/Informatik-Background.

LINUX - UNIX Grundlagen, Helmut Herold, Addison-Wesley, 2000, ISBN 3-8273-1435-6

Ausgereiftes und ausführliches UNIX + LINUX-Standardwerk, Teil einer fünfbändigen Reihe (Kurzreferenz, Profitools, Shells, Systemprogrammierung)

UNIX in a Nutshell, Gilly, O`Reilly, 1998, ISBN 3-89721-114-9

Sehr gute Kurzreferenz aller UNIX-Befehle, zum Einstieg allerdings nicht geeignet.

Folie 229Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Literatur-Hinweise

• UNIX - Ein praktischer Einstieg Todino, Strang & Peek, O`Reilly, 1999, ISBN 3-89721-125-4 (» 10.-)

• Keine Angst vor UNIX Christine Wolfinger, VDI Verlag, 1996, ISBN 3-540-62369-8 (» 30.-)

• Jetzt lerne ich UNIX Brockmann, Markt&Technik, 1999, ISBN 3-8272-5520-1 (» 25.-)

• UNIX-System V.4 Jürgen Gulbins, Springer, 1995, ISBN 3-450-588864-7 (» 40.-)

• LINUX - UNIX Grundlagen Helmut Herold, Addison-Wesley, 2000, ISBN 3-8273-1435-6 (» 50.-)

Page 230: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 230Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Weitere Hilfen

– Die SuSE-Support-Datenbank:

• Rettungsring-Icon anklicken (im KDE)

• Kommando hilfe aufrufen

– Das Internet:

• Newsgroups

• Sites (www.linux.de)

• Frequently Asked Questions (FAQs)

• Suchmaschinen (www.metager.de)

• HowTos: www.tldp.org

Page 231: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 231Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Fragen

...noch Fragen???...noch Fragen???

Page 232: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 232Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

Weitere Kurse, Feedback, ...

• Weitere Kurse

– UNIX Aufbaukurs– UNIX Shellprogrammierung– Linux Installationskurs– Linux Systemadministrator– Linux Netzadministrator– Linux Samba

• Ausfüllen des Bewertungsbogen

– Was hat Ihnen gefallen / nicht gefallen?

Page 233: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Folie 233Stockmayer GmbH, Solzerstr. 4, 36179 Bebra-ImshausenTel.: 06622/919610, eMail: [email protected]

http://www.stockmayer.de Linux/UNIX-Grundlagen

ENDE

Page 234: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

InhaltsverzeichnisInhalt 7Einführung 8Historie 9Linux 12Linux-Struktur 13graphische Oberfläche 15Linux Philosophie 17Linux Eigenschaften 18Grundlagen 28An- und Abmelden 30Anzeigen von Dateien 34Drucken 35Hilfe 36Kommando-Syntax 42Benutzer und Gruppen 44Dateisystem 55Auskunftsfunktionen 68Dateisystem-Aufbau 73weitere Auskunftsfunktionen 79Inode 80Link 81Gerätedatei 85verändernde Kommandos 89Zugriffsrechte 94Prozesse 107Multitasking 108Prozess-Verwaltung 114Prozesse beenden 117Signale 118Shell 123Shell-Typen 126Shell-Funktionalität 128

Umgebung 131Variable 132Pfadsuche 137Shell-Skript 141History 144Namensvervollständigung 146Alias 147Ein-/Ausgabe 151Umlenken 153Pipe 160Metazeichen 164Quotierung 171Kontrollstrukturen der Shell 180Übergabeparameter 181for-Schleife 182case-Verzweigung 183test 184if-Verzweigung 185while-Schleife 186Editor vi 188vi: Einführung 193vi: Modi 195vi: Verlassen 198vi: Bewegen 199vi: Einfügen 202vi: Löschen 204vi: Suchen 209vi: Optionen 214vi: Spezialkommandos 218Literatur 229

Page 235: UNIX/Linux-Betriebssystem Einführung · Entwicklungsgrundlage sind viele Komponenten des freien UNIX-Systems GNU („GNU is not UNIX“, ab 1985 von der FSF (Free Software Foundation)

Besprochene KommandosKom-mando

# Kom-

mando

# Kom-

mando

# Kom-

mando

#

alias 148 exit 39 lpr 35 sort 158

apropos 36 export 133 ls 39,68 su 49

bash 126 file 74 man 36 tcsh 126

case 183 find 124,156 mkdir 89 tee 162

cat 70 for 182 more 34,70 test 184

cd 39 grep 39 mount 75 top 120

cd 68 groups 52 mv 90 touch 89

chmod 99 history 144 newgrp 51 tty 143

clear 39 id 51 passwd 48 type 139

cp 90 if 185 pr 35 umask 102

csh 126 info 36 ps 114 until 186

date 39 kill 117 pstree 120 vi 192

# Kom-

mando

# Kom-

mando

# Kom-

mando

#

alias 148 exit 39 lpr 35 sort 158

apropos 36 export 133 ls 39,68 su 49

bash 126 file 74 man 36 tcsh 126

case 183 find 124,156 mkdir 89 tee 162

cat 70 for 182 more 34,70 test 184

cd 39 grep 39 mount 75 top 120

cd 68 groups 52 mv 90 touch 89

chmod 99 history 144 newgrp 51 tty 143

clear 39 id 51 passwd 48 type 139

cp 90 if 185 pr 35 umask 102

csh 126 info 36 ps 114 until 186

date 39 kill 117 pstree 120 vi 192

df 79 ksh 126 pwd 68 whatis 36

du 79 less 34,70 rmrmdir

91 89

while 186

echo 39 ln 91 set 133 who 48

exit 39 lp 35 sh 126 whoami 48