2001-02-14

 

UNIX

 

 

 

UNIX

 

Historie:

1969               Multics wurde von Bell Laboratories entwickelt

 

Ken Thompson entwickelte auf DEC PDP7 für ein Spiel ein Betriebssystem Unics

 

Ende 1969    wurde aus Unics die erste Unix-Version entwickelt

 

1971                              UNIX wurde in Programmiersprache C portiert

 

40 Installationen von UNIX weltweit (auf PDP11)

 

1974                              erste öffentlicher Artikel über UNIX

 

 

Im Laufe der Zeit entstanden viele UNIX-Varianten (Derivate):

·        Sinix

·        Xenix

·        Ultrix

·        Alux

·        AX

·        Sun-OS

·        BSD-UNIX

·       

 

Merkmale eines UNIX-Betriebssystems:

·        hierarchisches Dateisystem

·        identische Schnittstellen für Daten-, Geräte- und Interprozesskommunikation

 

cp /etc/motd /tmp/xyz                                   (Copy-Anweisung)

cp /etc/motd /dev/tty1

 

·        Hintergrundprozesse

·        Prozesskonzept zur Realisierung synchroner und asynchroner Vorgänge

·        Filtertechnik

 

cat /etc/passwd /grep hugo /sort/less        (Darstellungs-Anweisung)

 

·        viele Werkzeuge

o       Werkzeuge erfüllen i.d.R. genau eine Aufgabe, diese aber perfekt

·        hohes Maß an Portabilität

Linux?!

·        ein finnischer Student wollte die Funktionsweise eines 80386-Prozessors ergründen: Linus Benedict Torvalds

·        Steuerprogramm wurde entwickelt: Wechsel zwischen zwei Programmen möglich

·        nach einigen Weiterentwicklungen: Linux Version 0.1

·        1991 erste öffentliche Version von Linux

·        Studenten und interessierte Personen entwickeln weiter

·        1994: Version 1.0

·        1999: Version 2.0.36

·        2001: Version 2.4.0

 

Linux-Distribution

·        Betriebssystem (Kernel) wird von Linus Torvalds verwaltet – Änderungen werden von ihm kontrolliert

 

Anwendungen

 
 


                                                                                                                      Word/Excel

 

Systemprogramme

 
 


                                                                                                                      Betriebssystem

Betriessystem (Kernel)

 
                                                                                                                      LINUX

 

 

Hardware

 
 


                                                                                                                     

 

 

·        alle andere Software (Systemprogramme, Anwendungen) kommt „sonstewo“ her

Þviele freie Entwickler

 

                        GNU (GNU is not Unix)

 

                        Þunüberschaubare Vielfalt an Software

 

·        Distributor sichtet Angebot an Software, trifft eine Auswahl und stellt diese auf geeigneten Medien bereit:

 

SuSE Linux 6.0 (Dez. 1998), DM 99,- (5 CD’s)

Debion 2.0

Redhat 5.1

 


Installation von Linux

·        textbasierte Installation: YAST1 (YAST=yet another setup tool)

o       viele Konfigurationsmöglichkeiten

·        Installation mit YAST2 (“Knopfdruckinstallation”)

o       viele Entscheidungen werden von YAST2 selbständig getroffen

o       geeignet für neuen Rechner, auf dem nur Linux laufen soll

·        von DOS aus: Setup/Loadlin

o       bei „problematischer“ Hardware (Linux erkennt CD-ROM nicht, CD nicht bootfähig,...)

 

 

YAST1

Ausgangsvoraussetzungen:

·        von CD booten (oder Bootdiskette)

·        Festplatte mit genügend Platz für Linux-Installation (~250MB – 8GB)

·        CD-ROM wird von Linux unterstützt

 

 

Vorgehensweise:

·        CD1 booten (evtl. Bootreihenfolge im BIOS ändern!)

®Begrüßungsbildschirm

wenn „boot:“ erscheint: innerhalb von 3 Sekunden eine beliebige Taste drücken, damit YAST2 nicht gestartet wird

·        boot: manual <Enter>; Befehl für das manuelle Booten des Mini-Kerns; linuxrc wird gestartet (menügeführt)

 

LinuxRC

·        Einstellungen zur Installation vornehmen

·        falls notwendig: Treiber als Kernelmodule laden

·        am Ende wird YAST gestartet (eigentliche Installation von System- und Anwendungsprogrammen)

·        Navigation:

­, ¯     Menüpunkt auswählen

¬, ®  Kommando auswählen

¿         Kommando ausführen

·        Sprachauswahl:        deutsch

·        Bildschirm:                Farbe

·        Tastaturlayout:          deutsch

·        Hauptmenü von LinuxRC:

o       Einstellungen                        Sprache, Bildschirm, Tastatur,...

o       Systeminformationen          Informationen über erkannte Hardware,

geladene Module

o       Kernel-Module                     laden von passenden Modulen für spezielle

Hardware, z.B. SCSI-Controller (falls zur

Installation benötigt)

o       Installation/                            Installation wird fortgesetzt

System starten

o       Abbruch/Reboot                  „Linux doch nicht installieren“

 

Installation/System starten:

·        Installation/Update starten              Fortsetzen der Installation

·        Installiertes System booten wird benötigt, falls es zu Problemen

beim regulären Booten kommt

·        Rettungssystem starten                   in Notfällen

·        Live-CD starten                                mit Linux “spielen”, ohne es auf

Festplatte zu kopieren

 


·        Quellmedium festlegen                   CD

·        YAST-Variante wählen                    ®textbasiert: YAST1

®grafisch:YAST2

ÞYAST wird gestartet

·        Tastaturbelegung wählen und testen

 

Hauptmenü

·        Linux installieren                             

·        bestehendes System updaten       aktualisieren von SuSE Linux

·        Experten-Modus

·        Abbruch                                            keine Installation

 

Festplatte partitionieren und formatieren

·        nicht partitionieren

·        partitionieren

·        LVM (Logical Volume Manager)

 

·        Anzahl der gefundenen Festplatten wird gemeldet; bei mehreren:

o       /dev/hda

o       /dev/hdb

o       /dev/hdc

o       ...

·        Partitionieren:                                  manuell partitionieren

 

Partitionen für Linux

mind. 2 Partitionen

1.      Betriebssystem, Daten, Programme

2.      Swap-Partition

 

Zu 1)

            Partitionstyp:                         Linux Native

            Größe:                                   mind. 180MB (Minimalsystem)

                                                           + Platz für Benutzerdaten, spez.

                                                           Anwendungsprogramme, etc.

                                                           „Spielen“ mit X-Windows: ~500MB

Zu 2)

            Partitionstyp:                         Linux Swap

            Normalfall:                             64MB

            „sicher“:                                 128MB

            ansonsten:                            abhängig vom Speicherbedarf der

Programme

®Partitionstabelle wird angezeigt

 

Löschen: Partition auswählen ®F4 = Löschen

 

Einfügen:

·        nur möglich, falls Platz vorhanden

·        Art der Partition wählen: Logisch, Primär

·        Start und Ende festlegen

 

Startzylinder:             Z96

Endzylinder               200M

 

Vorschlag: Anfang des freien Bereiches, Ende des freien Bereiches; änderbar

 

hier sinnvoll:             

1. Partition einrichten, Startzylinder übernehmen, Endzylinder: +128MB

ÞGröße der Swap-Partition festlegen

2. Partition einrichten; Start- und Endzylinder übernehmen ÞRest der Platte für Native Partition verwenden

UNIX-Name der Partition festlegen ®Auswahlliste; z.B.:

 

/dev/hda1

/dev/hda2

 

einfach einen auswählen und notieren!

 

Typ setzen

 

Partition auswählen, <F3> (Swap oder Native auswählen)

 

Festlegen der Dateisysteme

a) Dateisystem festlegen

·        Typ, Mountpoint, Formatieren für Linux-Dateisysteme festlegen

·        Partition auswählen

·        F3: Typ setzen ®ext2 wählen (reiserfs noch nicht ganz ausgereift...)

 

b) Mount Point festlegen

·        Partition auswählen

·        F4 Mount Point   /

/usr

/home

 

c) Formatieren

·        Partition auswählen

·        F6 ®Formatieren ®Normal

Software-Konfiguration festlegen:

Was soll installiert werden?

 

Konfiguration laden:

            vordefinierte Zusammenstellungen von Software zur Installation auswählen

            ®SuSE Minimalsystem

            Hinzufügen:    ausgewählte Konfiguration wird hinzugefügt

            Ersetzen:       nur ausgewählte Konfiguration wird installiert

(evtl. vorhandene Auswahlen werden

entfernt)

 

... (Hauptmenü ®Weiter mit Installation)

 

Kernel für das System auswählen

®Standard-Kernel (pentiumoptimiert)

 

für spez. Fälle: z.B. i386/i486-Kernel

 

LILO Konfigurieren

            Ja! Auf eine Bootdiskette. (Vorläufig)

            - Konfiguration erzeugen

            - auf Diskette

            Diskette einlegen; später: im BIOS Bootreihenfolge beachten!

 

Grundkonfiguration des Systems

·        Zeitzone wählen                   Europa (Berlin)

·        Rechneruhr                           GMT oder lokale Zeit

·        Netzwerkkonfiguration:        nur loopback

·        Rechnernamen, Domainname:

z.B. Erde.Kosmos

hier sinnvoll: CA10 als Rechnername, ca.de Domainname

·        Sendmail-Konfiguration:     keine Modifikation

 

Kennwort für root

            <= 8 Zeichen

            root entspricht „Administator“ in WinNT

 

Modem einrichten

            Nein

 

Maus einrichten

            Ja :-)

            Microsoft serielle Schnittstelle

            PS/2-Maus

            ...

            Testen, Umkonfigurieren/Übernehmen

            GMP starten ®Ja (damit Maus im Textmodus verfügbar ist)

 


ÞLinux ist installiert

 

·        im Hintergrund werden Konfigurationsskripte abgearbeitet

·        dennoch anmelden und arbeiten möglich

login:   root

password:      *****

CA10:#          <Befehle eingeben; arbeiten, etc.>

ls                     zeigt Inhaltsverzeichnis an

ls/                    zeigt Hauptverzeichnis an

ls/dev            

...

yast

 

                        ls = List (zeigt Inhalt eines Verzeichnisses an)

                       

                        logout             Abmelden vom System

                                   CA10:# shutdown –h now (herunterfahren und anhalten)

 

 


2001-02-15

 

UNIX

 

 LILO kann nicht booten, wenn Kern (vmlinuz) in einer Partition oberhalb 1024 Zylinder liegt.

Lösung, z.B. Bootdiskette erzeugen, die Kern direkt enthält: (siehe 4.6 Booten und Bootmanager)

 

CA10: # /sbin/badblocks –v /dev/fd0 1440

CA10: # dd if=Ihr_Kernel of=/dev/fd0 bs=18k

CA10: # rdev /dev/fd0 Ihre_Root_Partition

CA10: # rdev –R /dev/fd0 1

 

Anmelden, virtuelle Konsolen, etc.

·        Zugang zu UNIX nur nach Anmeldung Þgültiger Benutzer und Kennwort

·        Warum: Multi-User - Betriebssystem muß jeden Anwender identifizieren können

 

klassische Anwendung:

 


                                                                                                                      Konsole

 


            Terminals

 

 

 

 

 


Hugo, Erwin, Meier, root melden sich am UNIX-Rechner an; diese können gleichzeitig mit gleichen oder unterschiedlichen Programmen arbeiten.

 

unter Linux: virtuelle Terminals

 

                  Alt + F1          Alt + F2           Alt + F2

 

 

 

 


                                            virtuelle Terminals

 

 

 

Besonderheiten der Konsole (<Alt> + <F1>)

Ausgabe von Fehler- und Kontrollmeldungen (Systemmeldungen)

 

 


einige Befehle:

 

tty                                "An welchem Terminal bin ich angemeldet?"

                                   z.B. /dev/tty1

 

logout                         Abmelden von einem Terminal

                                   auch:   exit

                                               <Strg> + D (EOF)

 

pwd                            print working directory

                                   (zeige das aktuelle Arbeitsverzeichnis an)

 

cd                               change directory

                                   wechsle das aktuelle Verzeichnis

                                   (wie unter DOS)

                                   cd /      (Hauptverzeichnis)

                                   cd /tmp           (temporäres Verzeichnis)

                                   cd ..     (übergeordnetes Verzeichnis)

 

ls                                 List

                                   zeige den Inhalt des aktuellen Verzeichnisses an

                                   ls-l       long (Listenform)

                                   ls /       (Verzeichnis /)

                                   ls /dev (Verzeichnis /dev)

 

ls --help                      zeigt Optionen an (fast bei jedem Befehl; manchmal auch -h --h)

 

ls --help | more          zeigt Liste in "More" (Programm, das Datenstrom seitenweise anzeigt)

 

 

Einfacher Anwendungsfall

·        Erstellen einer Ablage für eine neue Notiz

·        eine Notiz erzeugen

·        die erstellte Notiz nochmals anzeigen

·        eine Kopie der Notiz erzeugen

·        die Notiz löschen

 

(Anmeldung am System, root)

cd /root                                              in Verzeichnis /root wechseln (=Arbeitsverzeichnis

                                                           = Heimatverzeichnis des Benutzers root)

 

mkdir ablage                                    make dir; erstellt Verzeichnis "ablage"

 

ls                                                        ablage

 

cd ablage

 

ls                                                        leer

 

            -Editor verwenden: vi, emacs, joe, pico, ...

 

vi notiz                                               Startet den Editor "vi" mit der Datei "notiz"

 

            -Eingabe von Text-

 

i                                                          insert (einfügen)

 

            -"Aller Anfang ist schwer.

            Aber Übung macht den Meister."-

 

<ESC>                                              Verlassen des Eingabemodus

 

            -Speichern der Datei-

 

ZZ                                                      speichern und Editor verlassen

 

:w                                                       speichern

 

            -Verlassen des Editors-

 

:q

 

            -Speichern und Verlassen-

 

:wq

 

            -Verlassen ohne Speichern-

 

:q!

 

            -Editor startet, ohne Datei-

 

vi

 

            -"Speichern unter..."-

 

:w notiz

 

            -Bewegen im Text-

 

hjkl                             

 

            -Nochmals anzeigen-

 

vi notiz

 

cat notiz                                             liest von stdin (=Tastatur) und schreibt auf stdout

(=Bildschirm) bis EOF kommt (<Strg> + D)

 

            -Kopie erzeugen-

 

cp notiz notiz.kopie              Kopiert von Quelle nach Ziel

 

cat notiz.kopie                                  ansehen

 

ls                                                        notiz und notiz.kopie

 

rm notiz                                             remove (löscht die angegebene Datei)

 

rm /root/ablage/notiz                        (absolute Pfadangabe)

 

ls                                                        notiz.kopie

 

cp /root/ablage/notiz /tmp/hugo      notiz als hugo in tmp gespeichert

 

 

 

mv                                                      move (bewegen, umbenennen)

 

mv notiz erwin                                   benennt notiz in erwin um

 

            -Ordner löschen-

 

es existiere /root/frank/test

aktuelles Verzeichnis: /root/frank

 

rm -r test                                            löscht Ordner "test" und alle untergeordneten

Objekte

                                                           -r: recursive

 

rm -r /                                                 NICHT machen! Löscht alle Dateien!!!

 

 

Manual Pages (Handbuch)

man <Stichwort>                  Manual Page zu Stichwort aufrufen (Ruft

automatisch less auf; beenden mit :q)

 

man cp

man ls

man mv

man vi

...

man man

 

man -f <Stichwort>               sucht nach Stichwort und listet gefundene Seiten (Stichwortsuche)

                                               man -f passwd

 

 


man -k <Stichwort>              sucht innerhalb der Seiten nach Stichwort (Volltextsuche)

                                               man -k cp

 

man <Sektion> <Stichwort>

                                               ruft Manual Page zu Stichwort in bestimmter Sektin auf

                                               man 1 passwd

                                               man 5 passwd

                                               man cp = man 1 cp (der erste Treffer zählt)

 

Kapitel:

            1          Befehle (=Programme) für Benutzer

            2          Systemaufrufe der verschiedenen Bibliotheken

            3          C-Bibliotheksfunktion

            4          Beschreibung von Konfigurationsdateien

            5          Syntax wichtiger Dateien

            6          Beschreibung von Spielen

            7          Text, Textformatierung

            8          Befehle des Systemverwalters

            9          Linux-Kernelroutinen

            n          "der Rest"

 

weitere Informationen (Artikel, Bücher, FAQs, etc.)

            /usr/share/doc und Unterordner

 

 


2001-02-16

 

UNIX

 

Mit welchem Befehl kann überprüft werden, ob man sich im Heimatverzeichnis befindet?

pwd (aktuelles Verzeichnis anzeigen)

 

Heimatverzeichnis = Homedirectory = Verzeichnis für einen bestimmten Benutzer; nach der Anmeldung befindet sich der Benutzer i.d.R. im Homedirectory, d. h. aktuelles Arbeitsverzeichnis = Homedirectory

 

Benutzer

Homedirectory

Root

/root

Hugo

/home/hugo

Erika

/home/erika

erwin

/home/erwin

           

 

 


            üblich

cd (ohne Argumente) wechselt in Homedirectory des angemeldeten Benutzers

 

 

Erstellen eines Verzeichnisses uebung im Heimatverzeichnis

mkdir uebung

mkdir /root/uebung

mkdir ~/uebung

mkdir ~/root/uebung

 

~ (Tilde)

~ = Heimatverzeichnis des angemeldeten Benutzers

            hier: Benutzer ist root ®/root

~hugo             ®/home/hugo

~root              ®/root

 

mkdir /root/neu1/neu2/test

            Was passiert? (nur root existiert bisher)

 

            ®Test soll erzeugt werden?

            ®Pfad muß vorhanden sein!          Þklappt so nicht

            ÞPfad muß Ebene für Ebene aufgebaut werden

 

 

Kopieren der Datei /etc/passwd in das erstellte Verzeichnis

cp /etc/passwd uebung

            aktuelles Verz.: /root                        ®/root/uebung/passwd

            aktuelles Verz.: /root/uebung          ®/root/uebung/uebung

 

Bei Unsicherheit: Angabe des kompletten Pfades ist immer korrekt!

 

cd /root/uebung

cp /etc/passwd .                   /root/uebung/passwd

cat passwd                           root, hugo,…

 

cp /etc/motd passwd          

ls                                            passwd

cat passwd                           “Have a lot of fun!”

 

Þcp überschreibt existente Dateien, ohne Rückfrage!

 

 

Laden der kopierten Datei in den Editor „vi“

Öffnen:

cd /root/uebung

vi passwd                            (=vi /root/uebung/passwd)

 

Bash durch Test ersetzen:

:1,$s/bash/Test/g

 

1,$                  ®Bereich (Zeilennummer; Anfang, Ende)

$                     ®letzte Zeile

.                       ®aktuelle Zeile

1,5                  ®Zeilen 1 bis 5

2,7                  ®Zeilen 2 bis 7

3,$                  ®Zeilen 3 bis Ende

4,.                   ®Zeile 4 bis aktuelle Zeile

%                    = 1,$

Option g:        global (alle Vorkommen in der Zeile, sonst nur 1. Treffer pro

Zeile)

 

Ersetzen Sie alle Vorkommen von : durch =

:%s/:/=/g

 

Ersetzen Sie alle Vorkommen von / durch Q

:%s///Q/g        geht nicht! (Error)

            / hat Sonderbedeutung im s-Befehl (Substitute)

Þdarf nicht in „Nutzdaten“ vorhanden sein

®kann durch \ aufgehoben werden

:%s/\//Q/g geht!

\\ wiederum hebt die Sonderbedeutung von \ auf

 

 

Suche Zeile, in der „root“ vorkommt und kopiere sie ans Ende

/root                sucht beginnend mit der aktuellen Zeile nach der

Zeichenkombinatin „root“ (nach unten)

?root               wie /root, aber nach oben

 

Y                     kopiert aktuelle Zeile in Puffer (Zwischenablage)

 

-mit Cursortasten ans Ende gehen-

 

p                     fügt Puffer an aktueller Position ein

 

Alternativen:

Y

:$                    letzte Zeile

p

 

Y

G                     letzte Zeile

p

 

/root

:.co$               Kopiert aktuelle Zeile ans Ende

 

:7,11 co 13    Kopiert die Zeilen 7 bis 11 in Zeile 13

:1,. co $          Kopiert die Zeilen 1 bis aktuelle Zeile ans Ende

:1,. co 39        Kopiert die Zeilen 1 bis aktuelle Zeile in Zeile 39

:1,7 co .          Kopiert die Zeilen 1 bis 7 in die aktuelle Zeile

:1m$               Verschiebt Zeile 1 ans Ende

                        m = move

 

 

Speichern des Dokumentes unter dem Namen modified und Verlassen des

Editors

            :%w modified

            :q

 

            :w modified

            :q

 

            :wq modified

 

            :w /root/uebung/modified

            :q

 

            :1,$w modified

 

 

Was befindet sich in text, was in hugo?

vi text

            -Veränderung1 vornehmen-

:w hugo

            -Veränderung2 vornehmen-

:wq

 

®text:             text + Veränderung1 und Veränderung2

®hugo:          text + Veränderung1

 

 


Dateisystem

·        Gesamtheit aller Dateien eines Betriebssystems

·        englisch: file system

·        Inhalte (Dateien, files)

·        Gliederung (Verzeichnis, Ordner (directory))

·        hierarchisch aufgebaut

 

Namen in Dateisystem

·        max. 255 Zeichen

·        Buchstaben a...z, A...Z

·        Zahlen 0...9

·        wenige Sonderzeichen: -, _, .  (ursprünglich)

·        Groß- und Kleinschreibung ist relevant

 

Dateiinformationen

·        Dateigröße

·        Erstellungsdatum

·        Besitzer

·        Zugriffsrechte

·        Lage der Daten auf der Festplatte

·        Art der Datei („normale“ Datei, Verzeichnis, Gerät)

 

ls –aFl

total 24

drwxrwxr –x 7 leser seminar 1024 Dec23 11.13./

drwxrwxr –x 4 autor seminar 1024 Dec23 04:09../

...

-rw-r--r--1 root root 2048 Feb16 09.28 modified

 

1. Spalte

d          directory

-           “normale” Datei

l           symbolischer Link

b          Block-Gerät

c          Zeichen-Gerät

 

2. Spalte

r           read

w         write

x          execute

 

Zahl

Anzahl der Verweise

 

Eigentümer

hier: root

 

Gruppe

hier: root

 

Größe der Datei

hier: 2048Bytes

 

Datum

der Erstellung, bzw. der letzten Änderung

 

Name der Datei

hier: modified

 

ls –a          all (alle Dateien anzeigen); ansonsten werden Dateien, die mit „.“

beginnen, nicht angezeigt

                   ls

                               text1 text2 text3

                   ls –a

                               . .. text1 text2 text3 .exrc

 

ls –f           Angaben zu Dateinamen ergänzen

*          ausführbare Datei

/           Verzeichnis

@        symbolischer Link

...

 

ls –l           lange Version (ausführlich)

 

 

 

Dateitypen

 

plain file        “normale Datei”

                        beliebige Folge von Zeichen, ohne Struktur und Format

                        Symbol: „-

 

directory       Verzeichnis

                        Ordner für Dateien und weitere Verzeichnisse

                        Symbol: „d

 

special file    Gerätedatei

                        für jedes Gerät (Bildschirm, Maus, Drucker, CD-ROM, Festplatte,

Ethernet-Karte,...)

                        Datei, die das entsprechende Gerät symbolisiert

                        i.d.R. /dev

                        Floppy            /dev/fd0

                        Drucker          /dev/lp0

                        Festplatte      /dev/hda

                                               /dev/hda1

                                               /dev/hda2

                                               ...

 


Symbol: b,c

            b          block special device

                        Festplatte, Diskette

           

            c          character special device

                        serielle Schnittstelle

 

Beispiel:

2x anmelden; an                   Terminal1                  Terminal2

            tty                                /dev/tty1                     /dev/tty2

            an Terminal1             cp /etc/passwd /dev/tty2

 

Was passiert?

            Datei wird auf das Gerät /dev/tty2 (=Terminal2) kopiert

            ®auf Terminal2 schalten (Alt + F2)

                        ®die Daten sind sichtbar

 

 

Symbolischer Link

·        Verweis auf eine andere Datei (Win95++: Verknüpfung)

·        Symbol: l

 

-rw-r--r--          leser   seminar          original

lrwxrwxrwx      leser   seminat          symlink ®original

 

·        Erzeugung eines symbolischen Links:

 

ln –s original symlink

 

ln:        Erzeugen eines Links

ln –s    Erzeugen eines symbolischen Links

 

Beispiel:

es existiere eine Datei text1

ln –s text1 hugo

ls                   

ls –l               

vi hugo        

Welche Datei wird bearbeitet? text1

 

 

cd /root

ln –s /usr/share/doc Dokumentation

cd dokumentation

ls –l                 ®symbolischer Link zu doc

 

 


Dateisystemtyp

·        Zugriff auf Datei muß intern in entsprechende Lese- oder Schreibbefehle auf Festplatte umgesetzt werden

·        aufgrund unterschiedlicher Anforderungen (Datensicherheit, Leistungsfähigkeit, Größe,...) wurden unterschiedliche Typen entwickelt

·        bekannt aus PC-Welt: FAT16, FAT32, NTFS, HPFS, ...

·        Linux unter folgende Dateisystemtypen

 

minix             Rudiment aus Linux-Entwicklung

ext2                Linux-Dateisystem

iso9660         Standarddateisystem von CD-ROM

hpfs               Zugriff auf OS/2-Daten; nur lesbar

sysv               UNIX Stystem V

bsd                4.3 BSD-UNIX

msdos           Dateisystem von MS-DOS

                        ÞZugriff auf DOS-Disketten/-Festplatten

ntfs                Dateisystem von Win NT

nfs                  Zugriff auf NFS (Network File System)

                        Sun/BSD-UNIX

smbfs                        Zugriff auf Windows (NT, 98,...) basierte Rechner

...

 

Mounten von Dateisystemen

·        jedes Dateisystem befindet sich auf Festplatte, Diskette, o.ä.

·        root-Filesystem (darauf befindet sich Betriebssystem) wird automatisch beim Starten verwendet

·        weitere Dateisysteme müssen bei Bedarf hinzugefügt werden (in das root-Filesystem integrieren) ®mounten

 

/dev/hda1

                                                                                                /

 

 


                                               bin                  tmp                 etc                  hugo               dev

 

 


Zylinder: txt
bla
src
            /dev/hdb9                                                                              txt        bla       src

 

mounten:        Dateisystem (z.B. NTFS) auf /dev/hdb9 wird dem Verzeichnisbaum hinzugefügt

 

 

Beispiel:

Diskettenlaufwerk einbinden (DOS-Diskette)

 

mount –t msdos /dev/fd0 /root/Diskette

 


             Typ des       Gerät     Position im Verzeichnisbaum

Dateisystems                =Name eines Verzeichnisses

·        Verzeichnis „Diskette“ muß vor dem Mounten vorhanden sein

·        Inhalt des gemounteten Dateisystems wird in das angegebene Verzeichnis „eingeblendet“ und ist demnach verfügbar (genauso wie beim root-Filesystem)

 

mkdir /windows

mount /dev/hda1 /windows

 

·        auf CD-ROM zugreifen

 

mkdir /root/scheibe

mount /dev/hdc /root/scheibe

 

 

            mount

Was passiert? ®aktuelle Belegung wird angezeigt (die gemounteten Dateisysteme)

 

/dev/hda9 on / type ext2 (rw)

/dev/hda1 on /windows type vfat (rw)

/dev/hdc on /root/scheibe type iso9660 (ro)

/proc on /proc type proc (rw)

allgemein:

Gerätename on Verzeichnisname type Dateisystem Zugriffsrechte

 

·        Dateisystem entfernen:

 

umount /dev/hdc               ®Gerät /dev/dhc wird „entfernt“

 

umount /root/scheibe       das an dem Mount-Port (=Verzeichnis, hier: /root/scheibe) gemountete Gerät wird “entfernt”

                                               ÞVerbindung zu dem entsprechenden Filesystem wird getrennt

 

Voraussetzung:

            File System wird nicht benutzt

 

Beispiel:

mkdir /root/cd-rom

mount /dev/dhc /root/cd-rom

cd /root/cd-rom

ls

umount /root/cd-rom

®”Device is busy” (geht nicht)

cd /

umount /root/cd-rom (das klappt)

 

·        mount/umount darf i.d.R. nur der Benutzer root ausführen


·        Nur-Lese-Mounten:

 

mount /dev/hda1 /windows –o ro (option: read only; -r bewirkt dasselbe)

 

 

Mount-Tabelle

·        Verzeichnis aller zu mountenden Geräte; beim Booten von Linux wird diese Tabelle ausgewertet und die entsprechenden Filesysteme gemountet

 

/etc/fstab (File System Table)

 

Beispiel:

cat /etc/fstab           [vi /etc/fstab]

 

Gerät              Mount Point              Typ                 Optionen      

/dev/hda9     /                                  ext2                defaults        1          1

/dev/fd0         /floppy                      auto               noauto,user 0          0

/dev/hdc       /root/scheibe           auto               noauto,user 0          0

/dev/hda1     /windows                 auto               defaults        0          0

 

Die beiden Ziffern am Ende sind Informationen für andere Programme.

 

 

Optionen

 

defaults        ®Voreinstellungen

·        nur root darf mounten/umounten

·        rw

·        beim Starten mounten

·        ...

 

noauto          ®kein automatisches Mounten beim Starten

 

user               ®normaler Benutzer darf Mount/Umount ausführen

 

ro                    ®read only (nur zum Lesen) mounten

exec               ®verbietet das Ausführen von Programmen

 

 

mount /dev/hdc /root/Scheibe

umount /dev/hdc

mount /root/Scheibe (wenn Scheibe in fstab steht)

 

ÞAbkürzung des Mount-Befehles unter Zuhilfenahme der Tabelle (fstab)

 

            mount floppy

            ...

            umount floppy

Leerzeichen

 

Dateiname bla bla bla (Dateiname mit Leerzeichen)

 

#> cat bla bla bla

bla nicht gefunden

bla nicht gefunden

bla nicht gefunden

 

cat „bla bla bla“         ü

cat bla\ bla\ bla         ü

 

 

Eingabehilfen

 

ls

            text hugo erwin erwin2

vi t                  <Tab>            ®vi text

vi e                 <Tab>            ®erwin (Piepston)

                        <Tab>            ®erwin2

 

vi /etc/p         <Tab>            ®Piepston (es gibt mehrere mit „p“)

                        <Tab>            ®Piepston (zeigt nun alle an)

 

 


2001-02-26

 

UNIX

 

Erstellen eines Dateisystems

 

DOS/Windows:         format

 

UNIX:                         mkfs (make file system)

                                   mkfs –t          Dateisystemtyp

                                  

                                   Beispiel:

                                   mkfs –t ext2 /dev/fd0

                                  

                                   nicht probieren:

                                   mkfs –t ext2 /hda1             ®Windows-Partition formatiert!

                                  

                                  

Überprüfen von Dateisystemen

 

fsck (file system check), (DOS: chkdsk, scandisk; Novell: vrepair,…)

 

nicht auf gemounteten Dateisystemen anwenden

 

Problem:        root-Filesystem defekt

                        ÞDateisystem kann nicht gemountet werden

                        Þanderes root-Filesystem (CD) zu Start verwenden(z.B.

Rettungssystem von CD#1 starten, booten der CD, TAB,

manual,...)

 

 

Benutzer

·        UNIX ist ein Multi-User-System; mehrere Benutzer arbeiten gleichzeitig

·        Unterscheidung von Personen (Benutzer)

·        Vergabe von Rechten

 

 

drei Klassen

user               der Benutzer; eine einzelne Person

group                        die Gruppe

other              „der Rest der Welt“

 

 

Einrichten von Benutzern

a)     mit YAST

Administration des Systems ®Benutzerverwaltung

...

 


b)     mit useradd

fügt Benutzer hinzu

 

useradd –u 500 –g users –d /home/tux –s /bin/bash –m tux

           

            -u 500:                       User ID wird vergeben (Benutzerkennung;

muß eindeutig sein. root: 0)

           

            -g users                     Gruppe

           

            -d /home/tux              Heimatverzeichnis

           

            -s /bin/bash               Befehlsinterpreter (bash ist Standard);

(welches Programm wird nach dem

Anmelden gestartet)

 

-m tux                         Benutzername (hier: tux)

 

 

Editieren der Dateien

/etc/passwd               Verzeichnis der Benutzer

/etc/group                  Verzeichnis der Gruppen

/etc/shadow               Verzeichnis der Kennwörter

 

 

Kennwort ändern/vergeben/löschen

Programm passwd  (ändert/löscht Kennwörter)

 

Beispiel:

            passwd tux                (ohne Angabe des Namens: eigenes Kennwort)

            new password

            retype password

 

 

Arbeiten mit verschiedenen Benutzern

Anmelden mit entsprechendem Benutzernamen + Kennwort

            Wer bin ich?              who am i                  ®ca10: frank

            Benutzerliste             who                           

                                               Finger

 

 

Benutzer wechseln

1.      Abmelden vom System (exit, logout, Strg + D)

2.      anderes Terminal verwenden (unter Linux auch virtuelle Terminals (Alt + F1...F6)

3.      temporäres Wechseln:

login: tux

passwd: #####

tux>                            ®angemeldet als Benutzer tux

 

su root                        wechseln zu Benutzer root

(ggf. Kennwort)

...                                alle Befehle werden als Benutzer root ausgeführt

 

                                   ®im Gegensatz zum Abmelden/erneut

anmelden: aktuelle Arbeitseinstellungen bleiben erhalten!

 

Rückkehr:

Exit, Strg + D

 

 

id        gibt Informationen zum aktuellen Benutzer (z.B. uid, gid, groups)

                        uin                  user identification number

                                               numerische Benutzerkennung

                        gid                  group identification number

                                               Gruppenkennung numerisch

                        groups          weitere Gruppenzugehörigkeit

 

Beispiel:

            Anmelden als tux

            who am I                  CA10!tux

            id                                uid=500 (tux) gid=4711 (users) …

            su root                     

            who am I                  CA10!tux

            id                                uid=0 (root) …

            exit                            

            who am I                  CA10!tux

            id                                uid=500 (tux)

 

 

Zugriffsrechte

·        wer darf was?

·        Zugriffsrechte müssen veränderbar sein, eindeutig im System erkennbar

·        jede Datei hat einen Eigentümer (owner), i.d.R. ist der Ersteller der Datei auch der Eigentümer

·        jede Datei gehört einer Gruppe an

 

ls –l /tmp

drwxrwxr-x ...         root    Gruppe                 .

 rw-rw-rw-            meier             Verwaltung              lohn.dat

 rw-r—r--               otto                Verwaltung              geld.bar

 

Zugriffsrechte            Eigentümer    Gruppe                      Name

 

drwx  rwx     rwx

Rechte des Eigentümers (owner)

Rechte der Gruppe (group)

Rechte für den „Rest der Welt“

Bedeutung der Zugriffsrechte

 

Lesen (r, read)

Datei:                         Lesen erlaubt, z.B. Anzeigen auf dem Bildschirm

                                   cat /etc/passwd

                                   cat /tmp/geld.bar

Verzeichnis:  Inhalt des Verzeichnisses kann aufgelistet werden

                                   ls /tmp

 

Schreiben (w, write)

Datei:             Datei verändern, auch löschen

Verzeichnis:  Dateien erstellen

 

Ausführen (x, execute)

Datei:             Datei kann ausgeführt werden (d.h. Programm starten)

Verzeichnis:  Wechsel in Verzeichnis möglich

                                   cd /tmp

 

            Beispiel:

                        ls –ld /root

                        drwx--x--x . ... root

 

 

Wie werden Rechte ausgewertet?

 

rw-rw-rw-        meier  users  datei1.txt

r-------- meier  users datei2.txt

r-----rw-           meier  users  datei3.txt

--------- meier  users  datei4.txt

------rwx          meier  users  datei5.txt

---rw----           meier  users  datei6.txt

 

a)     Benutzer meier, Mitglied von users

1    rw

2    r

3    r

4    -

5    -

6    -

b)     Benutzer hugo, Mitglied von users

1    rw

2    -

3    -

4    -

5    -

6    rw


c)      Benutzer erwin, Mitglied von Verwaltung

1    rw

2    -

3    rw

4    -

5    rwx

6    -

 

Þ

a)     ist Benutzer der Eigentümer der datei; so gelten die Rechte für den Eigentümer

b)     ist Benutzer Gruppenmitglied der Gruppe, die der Datei zugeordnet ist, so gelten die Rechte für die Gruppe

c)      ist Benutzer weder Eigentümer noch Gruppenmitglied, so gelten die Rechte für other

 

 

Gruppe ändern

 

chgrp (change group, verändere Gruppe)

            die Gruppenzugehörigkeit einer Datei (eines Verzeichnisses)

wird geändert

                       

                        chgrp chefs datei

                        Name der Gruppe (chefs) muß existieren

           

                        chgrp chefs text1 text2 text3 /tmp/blubber

                        mehrere Dateien werden chefs zugeordnet

 

Um die Gruppe zu ändern, muß man Mitglied der Zielgruppe sein und Eigentümer der Datei.

 

 

Eigentümer ändern

 

chown (change owner)

           

            chown hugo datei1.txt

            chown hugo datei1.txt datei2.txt

            Hugo ist neuer Eigentümer

 

nur root darf chown ausführen

a)     alter Eigentümer verliert Besitzerstatus

b)     neuer Eigentümer wird zugewiesen, mit allen Rechten und Pflichen

 

 


2001-02-27

 

UNIX

 

Benutzerrechte von Dateien

 

chgrp –r verwaltung /buero

chgrp –r hugo /daten

 

-r            rekursive Anwendung von chgrp bzw. chown

                Þalle Dateien und Unterverzeichnisse (und deren Dateien) werden

verändert

 

 

Zuteilen/Ändern von Zugriffsrechten

 

chmod (change modus)

 

chmod Klasse Operation Zugriffsrecht Objekt

 

                Objekt:   Datei, Liste von Dateien

Verzeichnis, Liste von Verzeichnissen

 

Klasse:   u             user                        Benutzerrechte verändern

                               g             group                     Gruppenrechte verändern

                               o              other                      „Rest“-Rechte verändern

                               a              all                           alle Rechte verändern

 

Operation:             +             Recht hinzufügen

-              Recht entfernen

=             Recht zuweisen (für die angegebene Klasse hinzufügen und für alle anderen entziehen)

 

Zugriffsrecht:       r              read

                                               w             write

                                               x              execute

                                               s              set user id

 

Beispiel:

                ls –l /tmp

                -rw-r--r--                datei1 hugo

                -rw------- datei2 hugo

                ----rwx---                datei3 hugo

 

hugo> chmod og+w datei1                                -rw-rw-rw-             datei1

hugo> chmod u-r datei2                                   --w------- datei2

hugo> chmod a=rw datei3                -rw-rw-rw-             datei3

hugo> chmod o-w datei3                                   -rw-rw-r--               datei3

 

Wer darf verändern? root, Eigentümer.

Beispiel:

----rw-rw- hugo users text1.txt

 

hugo ist angemeldet

 

hugo> cat text1.txt                             L

 

Was passiert? Nix, weil der Eigentümer hier keine Rechte hat.

 

Abhilfe? Hugo ist Eigentümer, also kann er Rechte verändern:

 

               chmod a=rw text1.txt

oder

               chmod u+rw text1.txt

oder

               chmod u=rw text1.txt          (nur user kann zugreifen)

 

hugo> cat text1.txt                             ü

 

 

Standardeinstellung

 

wird Datei erzeugt (z.B. vi neu oder touch neu), so werden folgende Eigenschaften vergeben:

 

Eigentümer:                          aktueller User

 

Gruppe:                 Gruppe des Users

 

Zugriffsrechte:                                    Datei                      Verzeichnis

user:                      rw-                          rwx

 

                                               group:                    r--                           r-x

 

                                               other:                     r--                           r-x

 

 

By the way:

 

                touch neu              ®?

a)       angegebene Datei existiert nicht:

neue Datei mit angegebenen Namen (Länge=0) wird erzeugt

b)       existierende Datei:

Datum der letzten Änderung wird aktualisiert

 

 


Veränderung der Standardeinstellung

 

                umask ¿               022

                Standardmaske für die Erstellung von Dateien:

                               Datei                      re-r--r--

                               Verzeichnis           rwxr-xr-x

 

                Veränderung:

                umask 222 ¿

 

                Vergewissern:

                umask ¿               222

               

                               Datei                      r--r--r--

                               Verzeichnis           r-xr-xr-x

 

                Þintern werden Zugriffsrechte durch Zahlen repräsentiert

 

                               r                              4

                               w                            2                             im Oktalsystem

                               x                              1

                               kein Recht             0

               

                rwx                         r-x                           r-x

                4+2+1                     4+1                         4+1         =             755

 

                111 = --x--x--x

 

neues Verzeichnis:

                intern rwxrwxrwx  777

                -umask                   022

                                                               755          ®rwxr-xr-x

 

neue Datei:

                intern rw-rw-rw-   666

                -umask                   022

644               ®rw-r--r--

 

zulässige Schreibweise:

               

                chmod 755 text1.dat

                               ®rwxr-xr-x text1.dat

 

umask entzieht die angegebenen Rechte bei der Erstellung einer Datei/eines Verzeichnisses (d.h. Rechte werden entfernt, herausgefiltert)

 

                umask 000             ®alle Rechte

                               umask 777             ®keine Rechte


Zugriffsrecht „s“

 

·         s (set user id)

·         jedes Programm, das ausgeführt wird, besitzt automatisch die Rechte des Benutzers

·         Ausnahme: Zugriffsrecht s ist gesetzt

®das Programm wird mit den Rechten des Eigentümers des Programmes (=Datei) gestartet

 

Beispiel:

                ls –l /usr/bin/passwd ¿     ®-rwsr-xr-x root shadow passwd

 

Setzen des s-Rechtes

                chmod +s Programm

 

Beispiel:

                hugo darf text1, text2 nur lesen

                Eigentümer von text1, text2 sei erwin

               

                hugo> vi text1      ü (read only; schreiben verboten)

               

                würde erwin Eigentümer von vi sein, und würde chmod +s vi

gesetzt haben:

 

hugo> vi text1     Þvi läuft mit erwin-Rechten

 

 

Nachinstallation von Software mit YAST

 

YAST starten (als root)

 

Einstellungen zur Installation ®Informationsquelle auswählen ®Installation von CDROM (hier ATAPI EIDE) ®/dev/hde (hier)

 

Installation festlegen/starten

 

Konfiguration ändern/erstellen

[ ]            nicht installiert

[i]            bereits installiert

 

Status des markierten Eintrages mit Leertaste ändern:

[x]           soll installiert werden

[D]          soll deinstalliert werden

[R]          nochmals installieren

 

doc         Dokumentation auswählen

 

[x] lpdmande         ®F10 ®F10 ®Installation starten


1. Legen Sie in geeigneter Weise zwei Benutzer an.

                YAST ®Administration ®Benutzerverwaltung (als root)

               

                oder:

                /etc/passwd           Benutzerliste

                /etc/group             Gruppenliste

 

                Aufbau der Datei:               man 5 passwd

                                                               man 5 group

 

/etc/passwd:

                               ...

...

...

hugo:x:501:100:Hugo Muster:/home/hugo:/bin/bash

 

Benutzername

         Kennwort (wird x entfernt, ist Kennwort nicht mehr notwendig)

                 uid (User ID; Benutzerkennung)

                        gid (Group ID; Gruppenkennung)

                        (Hauptgruppe des Benutzers, i.d.R. users)

                                    informatives Feld (hier Name des Users)

                                                                       Heimatverzeichnis

                                                                       (nach Anmelden aktuelles Verzeichnis)

                                                                                                      Programm, das nach

        Anmelden ausgeführt wird

        (i.d.R.

        Kommandointerpreter)

 

/etc/group

users:x:100:

 

buero:x:600:hugo,erwin,meier

 

Name der Gruppe

                Kennwort (Sperre)

                   gid

                               Liste der Mitglieder

 

Welchen Gruppen gehört hugo an?

                users      weil Eintrag in /etc/passwd

                buero     weil Eintrag in /etc/group

 

hugo> id               uid=501(hugo) gid=100(users) groups=100(users),600(buero)

 

 

hugo> touch test1

hugo> ls –l test1                -rw-r--r-- hugo users test1

hugo> ls –l test2                -rw-rw---- erwin buero test2

®Hugo darf lesen und schreiben (Mitglied der Gruppe buero)

 

hugo> chgrp buero test1                  ü

(hugo ist Eigentümer und gehört der Zielgruppe an)

 

hugo> chown erwin test1                 L

                (verboten, darf nur root)

 

 

2. Installieren Sie die deutschen Manual Pages

mit YAST das Paket LDPManDe installieren (siehe oben)

 

/etc/profile mit vi öffnen

 

Eintrag MANPATH suchen und den Eintrag um „/usr/share/man/de“ am Anfang der Variablen ergänzen

 

®man in deutscher Sprache

 

 

 


2001-02-28

 

UNIX

 

Zu 4. (gestrige Übung):

 

willy> cd /tmp                                   Verzeichnis  /tmp wird aufgesucht

willy> cp /usr/bin/id newid            Programm id wird ins akt. Arbeitsverzeichnis

kopiert und erhält den Namen newid

willy> cp newid rootid                   kopiert Programm newid als rootid

 

willy> su root                                   Wechsel in die Benutzerumgebung root

(Þroot-Rechte)

root> cd /tmp                                   bleibt in /tmp, da durch su keine neue

Arbeitsumgebung geschaffen wurde und

bereits vorher nach /tmp gewechselt wurde

root> chown root newid rootid  Eigentümer von newid und rootid wird root

root> chmod +s rootid                  das Recht s wird der Datei rootid zugewiesen

root> exit                                          Wechsel in vorherige Umgebung (willy)

 

willy> ls –l                                         Anzeige der Dateien in ausführlicher Form

rwsr-sr-x root xyz newid

rwxr-xr-x root xyz rootid

willy> newid                                     das Programm newid wird ausgeführt

                        uid=501(willy) gid=100(users) Gruppen=100 (users)

willy> rootid                                     das Programm rootid wird ausgeführt

                        uid=501(willy) gid=100(users) euid=0(root) Gruppen=100(users)

 

ÞProgramm läuft mit Rechten des Benutzers root (weil: s-Recht gesetzt, Eigentümer ist root)

 

 

 

Shell-Kommandointerpreter

 

Arbeitsweise in UNIX

·        Betriebssystem wartet auf Anweisungen/Eingaben des Benutzers

·        Benutzer legt Anweisungen fest

·        Betriebssystem führt Anweisungen aus

 

Anweisungen werden durch Befehle (Kommandos) erteilt

Þdie Gesamtheit der Kommandos bildet die Kommandosprache

Þder Kommandointerpreter legt sich um den Betriebssystemkern

 

ÞShell (Muschel)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


·        shell ist „normales“ Programm (z.B. /bin/bash)

Þkann durch jedes beliebige Programm ersetzt werden

[in /etc/passwd ist festgelegt, weche Shell (genau genommen welches Programm) gestartet wird]

·        Entwicklung der Shells:

 

Bourne Shell ®C-Shell ®Korn-Shell ®Bash-Shell

 

Bourne-Shell:

§         Erfinder: Steven R. Bourne

§         wurde für erste UNIX-Implementierung erstellt

§         sh (®/binsh)

 

C-Shell

§         für BSD entwickelt

§         ähnelt in vielen Teilen der Programmiersprache c

 

BASH

§         Weiterentwicklung von sh im Rahmen des GNU-Projektes

BASH = Bourne again Shell

 

 

Was bietet eine Shell?

·        Steuerkommandos

·        Schleifen, Wiederholungen, Bedingungen

·        Funktionsaufrufe

·        Verwaltung der letzten Kommandos (History)

·        Aliasnamen für längere Kommandos

·        Variablen

 


Hauptaufgabe: Kommandointerpretation

·        Einlesen der Kommandos

·        Überprüfen und Interpretieren der Kommandos

·        Umsetzen in Systemaufruf

·        Ergebnisse und Rückmeldungen anzeigen

 

Eingabeprompt, Prompt: Kommandos können eingegeben werden

$

#

erde:[/tux]>

 

 

Kommandosyntax

 

<Kommando> <Parameter>  <Parameter>...

 

Beispiel:

            echo Parameter sind nuetzlich¿

                        “Parameter sind nuetzlich“

 

            echo off  sehr flüssig     …überflüssig

                        „sehr flüssig...überflüssig“

 

Parameter werden unterteilt in Optionen und „normale“ Parameter

 

Optionen werden durch „-„ gekennzeichnet

 

Kommando legt fest, was gemacht wird

normale Parameter, womit es gemacht wird

Optionen, wie es gemacht wird

 

Beispiel:

            ls   –l   /tmp

 

            Was? Auflisten

                   Wie? In Listenform.

                         Womit? /tmp

 

 

UNIX-Prinzip

Jedes Kommando löst eine Basisaufgabe, z.B. ls zum Auflisten, cp zum Kopieren,...

Aber diese Aufgabe wird mit einer großen Vielfalt (Optionen!) erfüllt.

 

 

Variablen

·        zur wiederholten Verwendung von Zeichenfolgen

·        Variable = Speicher für beliebige Zeichenfolge

·        jede Variable hat Namen

 

Beispiel:

pwd          enthält Namen des aktuellen Verzeichnisses

 

echo $pwd        (gib den Inhalt von pwd aus)

 

®pwd ist Variable, pwd ist Kommando

 

·        Variablennamen werden i.d.R. mit großen Buchstaben geschrieben

·        Wert einer Variablen zuweisen: <Variablenname> = <Wert>

 

Beispiel:

Name = Linux

echo $Name

Linux

 

·        Wert ist eine beliebige Zeichenfolge

 

Name = Otto Meier

bash: Meier Command not found        L

echo $Name

Linux                                    (Linux war noch im Speicher)

Name = „Otto Meier“                                ü

echo $Name

Otto Meier

 

·        die von “” umgebene Zeichenkette wird als Gesamtheit betrachtet, d.h. interpretiert

 

Beispiel:

es existiere Verzeichnis „sehr wichtig“

cd sehr wichtig                              L

cd „sehr wichtig“                          ü

 

 

einige Standardvariablen

®alle Variablen: siehe man bash

 

pwd               Name des aktuellen Verzeichnisses

uid                  Benutzerkennung

home             Heimatverzeichnis

path               Suchpfad für Kommandos

ps1                 Prompt

 

ps1 = „Gib ein Kommando“

 

 

Kommandoausführung

interne Kommandos:           diese werden furch die Shell selbst zur Verfügung

                                               gestellt, z.B. echo, cd

 

externe Kommandos:          Dateien in UNIX-Dateisystem, z.B. ls, sort, cat,...

 

Zu welchem Typ gehört ein Kommando?

 

            type echo

                        echo is a shell builtin                   Þinternes Kommando

 

            type ls

                        ls is hashed (/bin/ls)                       Þexternes Kommando

 

            type type

                        type is a shell builtin

           

            type dir

                        dir is aliased to “ls –l…”              ÞAlias-Mechanismus

 

 

Suchreihenfolge (path)

·        wird durch path ermittelt

 

echo $path

 

Beispiel:        /bin:/usr/bin:/usr/local/bin:.

®mehrere Einträge durch : getrennt

 

®1. Versuch: /bin

®2. Versuch: /usr/bin

®3. Versuch: /usr/local/bin

 

hugo> unalias ls

            path=/tmp

            echo $path

            /tmp

            ls                                L

            command not found                    Þexternes Kommando; wurde

in dem in path enthaltenen

Verzeichnissen nicht gefunden

 

            /bin/ls                        ü                    ®funktioniert immer, da explizit

der Speicherort abgegeben ist

(absoluter Dateiname)

 

            cd /bin

            ls                                L                   

            command not found                   

 

           


which ls       

®Welches Programm ls wird verwendet?

Beispiel:

                        es existiere:

                        /bin/ls

                        /tmp/ls

                        path=/bin:/usr/bin:/tmp

 

                        > which ls

                        z.B. /bin/ls

 

                        keine Ausgabe:        Kommando existiert nicht im Suchpfad

oder Aliasmechanismus ist aktiv

 

 

Unterstützung der Kommandoeingabe

·        automatische Ergänzung der Kommandoeingabe durch Shell

 

da <Tab> ¿

date

 

ba <Tab> ¿

„Piep“                         ®nicht eindeutig auflösbar

<Tab>                        ®Liste der Möglichkeiten

 

basename, bash, bashbug

®stückweise ergänzen der Eingabe durch Eingabe von Zeichen bzw. Drücken der <Tab>-Taste. Sobald Eindeutigkeit vorliegt, wird die Eingabe komplett ergänzt

 

·        bei Kommandos wird path ausgewertet

·        auch bei Parametern

 

Beispiel: vi /h <Tab> s <Tab> l <Tab> r <Tab>

            ®vi /home/seminar/leser/readme

 

 

 

Wiederholung der Kommandoeingabe

            ­, ¯                 blättern in bereits ausgeführten Befehlen (history)

¬, ®             Veränderungen vornehmen

 

Kommandos zusammenfassen

a)     Kommandogruppe bilden

date; echo „Liste der Dateien“; ls ¿

b)     mehrere Kommandos als ein Kommando ausführen

(date; echo „Liste der Dateien“; ls) ¿

®wird als ein Kommando ausgeführt; notwendig z.B. bei Ausgabeumlenkung

Shell Skripte

·        Folge von Befehlen werden in eine Datei abgelegt

·        DOS: Batch File (Stapeldatei)

 

®wiederkehrende Vorgänge zusammenfassen

 

Beispiel:

>vi testskript

echo “Ich bin ein Shell Skript”

date ls                                                          Inhalt der Datei testskript

echo „So, jetzt bin ich fertig.“

 

>./testskript                                                            L

            permission denied (Zugriff verboten)

>chmod +x skript

>./testskript                                                            ü

            Ich bin ein Shell Skript

            Mit Feb 28 12:35:21 CET 2001

            So, jetzt bin ich fertig

 

 

file      versucht herauszufinden, welcher Art die angegebene Datei ist

 

>file skript

            Ascii-Text

 

>file /etc/passwd

            Ascii-Text

 

>file /bin/ls

            executable ... / 386

 

>file /etc/inetd.conf

            Englisch-Text

           

>file /dev/fd0

            block special

 

Þfile liefert Informationen über den Inhalt der Datei

 

 


Alias-Mechanismus

·        häufig benutzte Kommandos oder Kommandos mit Optionen werden durch andere Zeichenfolgen dargestellt

 

Beispiel

            Wechsel in ein übergeordnetes Verzeichnis

                        cd ..

                        .. als Abkürzung wäre schön

                        alias ..=“cd ..“

                        .. ®führt cd .. aus

 

·        Festlegung eines Alias

 

alias <Name> = <Wert des Alias>

®Zuweisung ähnlich einer Variablen

 

·        bei Aufruf des Alias ersetzt die Shell den Alias durch die vorher angegebene Zeichenfolge

·        Alias anzeigen:

 

alias                           Liste aller Aliase wird angezeigt

 

alias ..                        Alias .. wird angezeigt, hier: cd ..

 

·        Alias entfernen

 

unalias ..                   Alias .. wird entfernt

 

unalias –a                entfert alle Alias

 

 

Metazeichen

·        mehrere ähnliche Dateien ansprechen, z.B.:

alle Dateinamen, die mit

§         „kapitel“ anfangen

§         „.doc“ enden

§         die Zeichenfolge „beispiel“ enthalten

 

Voraussetzung für Beispiele:

            Vorwort, index, kapitel, kapitel25, korrektur5, vorwort, brief,

inhalt, kapitel2, kapitel3, tabelle

 

[erstellen; z.B. mit touch]

 

Wird in einem Kommando ein Muster (regular expression) als Parameter übergeben, so überprüft die Shell jede Datei im aktuellen (bzw. abgegebenen) Verzeichnis, ob der entsprechende Dateiname mit dem Muster übereinstimmt. Alle zutreffenden Dateinamen werden dem Kommando als Parameter übergeben.

®Muster werden durch Metacharacter (Zeichen mit besonderer Bedeutung) gebildet

ÞShell ersetzt Muster durch Dateinamen

 

*          ersetzt beliebige Zeichenfolge

           

            kapitel*

            ®kapitel kapitel2 kapitel25 kapitel3

 

Beispiel besteht aus zwei Teilen:

            Teil, der vorhanden sein muß:        kapitel

            Teile, die unterschiedlich sind:       *

 

*.txt                alle Dateien, die mit .txt enden

*                      sämtliche Dateien

*n*                  alle Dateien, die den Buchstaben n enthalten

*.*                    alle Dateien, die . enthalten

 

cp * /floppy              kopiert alle im aktuellen Verzeichnis vorhandenen

            Dateien in das Verzeichnis /floppy

cp /etc/* /tmp           kopiert alle Dateien in /etc nach /tmp

echo kapitel*           kapitel kapitel2 kapitel25 kapitel3

echo Abbildung*    Abbildung*

 

®Trifft kein Dateiname im aktuellen (bzw. angegebenen) Verzeichnis auf das Muster zu, so wird das Muster selbst als Argument übergeben.

 

DOS:

            copy A:\*.* C:\         kopiert alle Dateien aus dem

Hauptverzeichnis von A: (Floppy) in das

Hauptverzeichnis von C: (Festplatte)

 

UNIX:

            [fd0 sein an /floppy gemountet; C: sei/]

           

            cp /dev/fd0/*            /                      L

            cp /floppy/* /                        ü

 

?         ersetzt genau ein beliebiges Zeichen

           

            ls kapitel?                            kapitel2 kapitel3

 

ls ?orwort                            Vorwort vorwort

 

 


          (einfaches Anführungszeichen)

            ®Maskierung von anderen Metazeichen

 

            echo Linux ist in*              Linux ist in inhalt index

 

ÞMetazeichen werden nicht nur bei Dateinamen, sondern bei jedem Parameter ersetztz

 

echo ’Linux ist in*’                        Linux ist in*

 

echo „Linux“                      Linux

 

echo ’“Linux“’                    „Linux“

 

echo $pwd                          /home/tux (Beispiel)

 

echo ’$pwd’                                    $pwd

 

 

      führt wie ‘ eine Maskierung durch, ist aber nicht so streng

 

echo ’$pwd’                        $pwd

 

echo “$pwd“          /home/tux

 

z.B. werden Variablen ausgewertet

Standardanwendung: um Leerzeichen zwischen Worten zu maskieren

 

            Name=“Mein aktuelles Verzeichnis ist $pwd“

            echo $Name

                        Mein aktuelles Verzeichnis ist /home/tux

 

            Name=’Mein aktuelles Verzeichnis ist $pwd’

            echo $Name

                        Mein aktuelles Verzeichnis ist $pwd

 

 

            maskiert auch die Eingabetaste ¿

 

echo „Dies ist ein ¿

> über zwei Zeilen ¿

> auch über drei“ ¿

 

Dies ist ein

über zwei Zeilen

auch über drei

 

 


\          “ und ’ maskieren ganze Zeichenfolgen

            \ maskiert ein einzelnes Zeichen

 

echo ’Stern* oder nicht * Stern’                       

Stern* oder nicht * Stern

 

echo Stern\* oder nicht * Stern            

Stern* oder nicht kapitel kapitel2 index (...) stern

 

echo \’bla\’

            ’bla’

 

echo \“blubber

            “blubber

 

echo ’\bla’\ ¿

>blubb’¿

            \bla

            blubb

 

echo “bla \”bla\””

            bla “bla”

 

echo ‘bla \”’

            bla \”

 

echo \’

           

 

echo \”

           

 

echo \*

            *

 

echo \\

            \

 

echo \?

            =?

 

echo \¿

            ¿         (wird als Zeilenumbruch interpretiert, nicht als

Kommandozeilenende; ermöglicht Zeilenumbrüche

in Kommandozeilen)

 

 


`       alternativ: $(              )

die meisten Kommandos erzeugen als Ergebnis einen Text (Ausgabe)

Ausgabe soll oft weiterverwendet werden

 

            date +%d.%m.%y   identisch: $(date +%d.%m.%y)

                       20.02.01

 

            Datum=`date +%d.%m.%y`

            echo $Datum

                       28.02.01

            touch $Datum

            ls $Datum

 

            echo `date`              - nimm die eingeschlossene Zeichenfolge

(hier: date) führe diese als Kommando aus,

ersetze die ursprüngliche Zeichenfolge (hier:

date) durch die Ausgabe (Ergebnis) der

Ausführung des Programmes

 

            echo

 

 


2001-03-01

 

UNIX

 

Versteckte Dateien unter UNIX

 

Dateien, die mit . beginnen, werden beim einfachen ls (also ohne Optionen) nicht angezeigt (sind "versteckt"). Die Option -a bei ls zeigt auch Dateien an, die mit einem . beginnen (a=all). Häufig verendet für benutzerspezifische Konfigurationsdateien (.bashrc, .exrc, .xdefaults, ...) im Home Directory eines Benutzers - aus Gründen der Übersichtlichkeit.

 

            > touch .meins

            >cp .meins /tmp/meins                 ü

 

 

Shell (Fortsetzung)

 

[ ]

·        ersetzt einen Bereich

 

> ls kapitel[1-4]                               sucht zwischen kapitel1 und kapitel4

            kapitel2 kapitel3                 (mehr existieren nicht)

 

[q,x,z]                                                           ersetzt q, x oder z

 

>ls kapitel[2,4,A-Z]                         Kombination aus beidem

 

>ls kapitel[0-9][0-9]                                   sucht nach etwas zweistelligem

            kapitel25

 

{ }

Beispiel:

            die Dateien gehtnicht1, gehtnicht2, gehtnicht3 und gehtnicht4 sollen

erzeugt werden

 

> touch gehtnicht[1-4]

> ls g*

            gehtnicht[1-4]                     Þ L

 

> touch gehtdoch{1,2,3,4}

> ls g*

            gehtdoch1 gehtdoch2 ... Þ ü

 

·        es kann kein Bereich angegeben werden

·        jede Möglichkeit muß durch Komma getrennt aufgezählt werden

·        die Ersetzung des Musters erfolgt ohne Beachtung der vorhandenen Dateien

·        ganze Zeichenfolgen sind zulässig

 

>echo A{und,oder,nicht}B

            AundB AoderB AnichtB

 

·        Schachtelung ist zulässig

 

es sollen 100 neue Heimatverzeichnisse angelegt werden:

 

> mkdir /home/ueb{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}

>ls /home

            ueb00 ueb01 ueb02 ueb03 ...

 

 

 

Eingabe, Ausgabe, Umlenkung

 

·        jedes Kommando liest bzw. schreibt auf drei Dateien

 

Standardeingabe                 standard input           stdin               Tastatur

Standardausgabe                standard output         stdout             Terminal

(=Bildschirm)

Standardfehlermeldung       standard error           stderr              Terminal

 

 

 

 

 

 

 

 

 

 

 

 

 

 


            Beispiel: sort (sortieren; sortiert Daten)

                        > sort ¿

                        Eins                                       sort liest von stdin (Tastatur) bis Ende-Kenn-

                        Zwei                                       zeichen (EOF, Strg + D) kommt

                        Drei

                        Vier

                        Sieben

                        <Strg> + D

 

                        „sortiert Eingabe“

                        Drei                                        gibt Ergebnis der Verarbeitung auf stdout

                        Eins                                       aus (Bildschirm)

                        Sieben                                  

                        Vier

                        Zwei

Umlenkung (Redirection)

 

·        jede Ein- und Ausgabemöglichkeit eines Kommandos kann umgelenkt werden

 

Eingabe (stdin)

Ausgabe (stdout)

Fehlermeldung (stderr)

 

 

Eingabeumlenkung

           

            kommando < eingabedatei

 

            z.B.

            sort < /etc/passwd

 

            es existiere Datei zahlen mit folgendem Inhalt:

                        Eins

                        Zwei

                        Drei

 

            > sort < zahlen                   > cat < zahlen

            >          Drei                                        Eins

                        Eins                                       Zwei

                        Zwei                                       Drei

                        (auf Bildschirm)                    (auf Bildschirm)

 

            > grep „ei“ < zahlen          grep sucht nach einer angegebenen

Zeichenfolge

            Zwei

            Drei

 

 

Ausgabeumlenkung

 

kommando > ausgabedatei

 

> ls /bin > inhalt      schreibt Verzeichnisinhalt von /bin in Datei inhalt

> vi inhalt

 

Es wird die angegebene Ausgabedatei erstellt und dann die Ausgabe des entsprechenden Kommandos hineingeschrieben ( und nicht mehr auf stdout).

 


> cp zahlen zahlen.sav

> cat zahlen

            Eins

            Zwei

            Drei

> cat zahlen > zahlen

> cat zahlen                        leer! L

 

§         existiert die Datei bereits, so wird diese vor der Umlenkung gelöscht

 

Ausgabeumlenkung mit Anhängen:

 

>>

die Ausgabe wird bei bestehender Datei an diese angehängt; sonst wie >

 

echo „Jetzt kommt eine Liste“ > langeDatei

cat /etc/group >> langeDatei

vi langeDatei

 

> vi lange Datei

           Jetzt...

           root...

           users...

touch alt

ls alt xyz

           ls: xyz: no such file or directory

           alt

ls alt xyz > ausgabe

           ls: xyz: no such file or directory

cat ausgabe

           alt

 

Umlenkung der Fehlermeldung

 

kommando 2> datei

 

2> lenkt stderr in Datei um

 

> ls alt xyz 2> fehler

            alt                                           die Fehlermeldung (=stderr)

                                                           steht in Datei fehler

> cat fehler

            ls: xyz: no such file or directory

 

> ls alt xyz 2> fehler > ausgabe

>          (nix)                                        wie oben, aber die „richtige“ Ausgabe

(stdout) steht in Datei „ausgabe“

 

2>> Anhängen der Ausgabe auf stderr an angegebene Datei

 

 

Kombination

                        > sort < /etc/passwd > /tmp/kennwort-sortiert

                       

Beispiel

> date; ls > ausgabe

                       Do, 01.März...

> cat ausgabe

                       datei....

 

Þbei Kommandogruppe (;) werden die Kommandos Stück für Stück ausgeführt

                       Þjedes Kommando wird einzeln ausgeführt

 

> (date;ls) > ausgabe

> cat ausgabe

                       Do, 1.März

                       Datei....

 

Þdie in () gruppierten Kommandos werden als ein Kommando betrachtet

 

 

Filter, Pipeline

·        in vielen Fällen erfolgt die Bearbeitung von Daten in mehreren Schritten, wobei jeder Schritt die Ergebnisse des vorangegangenen Schrittes weiterverarbeitet

 

Eingabe ® Kommando1 ®Kommando2 ® Kommando3

 

die Daten „fließen“ von Kommando zu Kommando

®Pipeline „pipe“ (Symbol: |)

 

ls /bin | more

 

Befehl1 | Befehl2

 

Die Ausgabe von Befehl1 (stdout) wird als Eingabe (stdin) von Befehl2 verwendet.

 

     bisher:            ls /bin > datei1

                            more < datei1

 

     > cat /etc/passwd | grep „ei“ | sort | more

    

     > cat < /etc/passwd | grep „ei“ | sort | more > ausgabe

 

     > ls /bin/* | sort > Befehlsliste

 

Sind folgende Kommandos identisch? Was passiert?

 

a)     ls /bin | more          Ausgabe von ls wird als Eingabe des Kommandos

more verwendet

b)     ls /bin > more         Ausgabe von ls wird in Datei „more“ geschrieben

 

 

Anwendungen im Hintergrund

·        wird ein Kommando eingegeben, so kann das nächste Kommando erst nach Abarbeitung des eingegebenen Kommandos eingegeben werden

 

Beispiel:

     > sleep 50 ¿             sleep: Programm wartet angegebene Zeit und

terminiert dann

     50 Sekunden vergehen...

     >

 

> sort < grossedatei > grossedateisortiert &

ÞAusführung des Kommandos im Hintergrund

®Eingabeaufforderung erscheint sofort

 

> sleep 50 &

>                                 (kann sofort weitergehen)

 

> (sleep 50; echo „ausgeschlafen“) &

> date

> ls -l

...

ausgeschlafen

 

beliebig viele Kommandos können im Hintergrund abgearbeitet werden

 

Kommandos bleiben mit stdin/stdout/stderr verbunden

ÞAusgaben erfolgen weiterhin auf Bildschirm

 

> (sleep 20; ls –l /) &

> (sleep 30; ls –l /bin) &

> vi /etc/passwd                             Meldungen stören die vi-Sitzung

 

®Eingaben?

Erwartet Hintergrundanwendung Eingaben, so wird diese gestoppt

 

> sort &

> jobs                                               Anzeigen aller Hintergrundanwendungen

[1]       sort    stopped

> fg %1                                 fg = foreground; holt %1 in den Vordergrund

 

®meistens werden Anwendungen im Hintergrund mit Ein- bzw. Ausgabeumlenkung angewendet.

laufende Anwendung (=Vordergrund) kann gestoppt (nicht gleichbedeutend mit abgebrochen) werden

 

            <Strg> + Z

 

            > vi /etc/passwd

            Strg + Z

            ...

            > jobs

                        [1]       vi         stopped

                        [2]       sort    running

            > fg %1

 

            > bg %1        background (im Hintergrund weiterarbeiten lassen)

 

 


2001-03-02

 

UNIX

 

Fehlermeldungen nerven:

 

            „schwarzes Loch“:

                        /dev/null

 

                        > sort < grossedatei > /dev/null             ÞAusgabe ins Nichts geleitet

 

 

tee

·        liest von stdin

·        schreibt auf stdout und in eine Datei

 

> cat < /etc/passwd | grep „ei“ | tee zwischenergebnis | sort | more

 

 

cmp

·        byteweiser Vergleich von Dateien

·        i.d.R. für Binärdateien

 

für Textdateien: diff

 

 

cut

·        schneidet Teile aus einer Datei bzw. stdout heraus (spaltenweise Þschneidet bestimmte Teile aus allen Zeilen einer Datei Þeine oder mehrere Spalten werden herausgeschnitten)

 

> cut –d: -f1,5 < /etc/passwd | more           schneidet Spalten 1 und 5 aus

/etc/passwd und zeigt sie in more an

 

 

...aus der Praxis

Ein Benutzer behauptet, daß er keine Kommandos mehr ausführen kann. Woran kann dies liegen, d.h. welche Überprüfung nehmen Sie vor? Wie können Sie Abhilfe schaffen?

 

hugo> ls

            bash: ls: command not found

hugo> echo $PATH

            PATH=meins                                  ®aha! J

hugo> PATH= /usr/bin: ....

 

 

Ausführen eine Shell-Skriptes aus dem aktuellen Verzeichnis

. muß im Suchpfad enthalten sein

wenn nicht: PATH=$PATH:.

 

Benutzerumgebung (Environment)

·        Variablen, Alias-Liste, best. Programme sollen laufen...

·        alle Einstellungen werden durch Befehle, die auch in Dateien enthalten sein können (Shell-Skripte) durchgeführt

·        nach dem Anmelden bzw. Starten einer Shell werden bestimmte Shell-Skripte automaitsch gestartet (Login-Skripte, Profile)

 

 

Drei Arten

1.      Systemweite Login-Skripte (für alle User gleich)

2.      individuelle Skripte, die nach dem Anmelden ausgeführt werden

3.      individuelle Skripte, die für jede neue Shell gestartet werden

 

Zu 1.:

/etc/profile

 

Zu 2.:

~/.bash-profile

wenn nicht vorhanden, dann: ~/.bash-login

wenn nicht vorhanden, dann: ~/.profile

 

Beim Login wird 1. ausgeführt und dann 2.

Beim Logout: Ausführen der Datei ~/.bash-logout

 

Zu 3.:

Datei ~/.bashrc

 

> bash ¿

> bash skript ¿

 

 

Kontrollstrukturen

·        Shell besitzt eine eigene Programmiersprache

o       Schleifen (Wiederholung)

o       Bedingungen

o       Funktionsaufrufe

o       Variable

 

Schleifen

·        gleiche Aufgaben mit unterschiedlichen Daten durchführen

·        um eine Aufgabe mehrmals zu wiederholen

·        um Aufgaben zu wiederholen, bis ein bestimmter Fall eingetreten ist

 


for

·        führt für jeden angegebenen Wert die angegebenen Anweisungen durch

 

for <Variablenname> in <Werte>

do

<Kommandos>

done

 

 

Beispiel

 

for TIERE in Hirsch Schwein Rind Affe

do

echo $TIERE

done

 

 

Alle Dateien im aktuellen Verzeichnis auf “xx” untersuchen:

 

(for DATEIEN in *

do

            grep „xx“ < $DATEI

done) | more

 

 

while-Schleife

Bei der while-Schleife werden die angegebenen Anweisungen ausgeführt, bis die Bedingung nicht mehr erfüllt ist

           

            while <Bedingung>

            do

                        <Kommando>

            done

 

 

            Beispiel

                        while test `date +%s` -lt 50

                        do

                                   echo “Just wait and see…`date +%s`”

                        done

 

 

until-Schleife

die Anweisungen der Schleife werden solange ausgeführt, bis die Bedingung erfüllt ist

 

            until <Bedingung>

            do

                        <Kommando>

            done

Beispiel

            until test $(date+%A)==“Monday“                   ==: ein Vergleich

            do

                        echo “Wochenende und Sonnenschein…”

            done

 

 

Bedingungen

 

if ... then ... else