Home · Kontakt · Impressum
previous up next_inactive
Up: www.fibel.org

Linux.Fibel.org
Version 0.6.0

Ole Vanhoefer

 

Linux.Fibel.org

Einführung in Linux / LPI I

von Ole Vanhoefer

 

Copyright © 2001-2004 Ole Vanhoefer
Gesetzt mit LATEX unter Linux

 

Version 0.3 : 18. November 2001
Version 0.4 : 14. April 2002
Version 0.5 : 19. Januar 2003
Version 0.6.0 : 1. September 2004

Das Kleingedruckte

Dieses Skript ist wie alle Werke urheberrechtlich geschützt. Er ist jedoch unter den Bedingungen der Open Publication License, Version 0.4 oder höher verfügbar. Die genaue Lizenz findet sich in Open Publication License (siehe Anhang D, Seite [*]).

Wenn dieses Skript reproduziert oder verwendet wird, bittet der Autor um Meldung eines solchen Angebotes per eMail an linux$@$vanhoefer.de unter Angabe einer Kontaktadresse.

Die in diesem Skript dargestellten Programme und Verfahren werden ohne Berücksichtigung der Patentlage mitgeteilt. Sie sind nur für Amateur- und Lehrzwecke bestimmt.

Alle Informationen in diesem Skript sind frei erfunden. Ähnlichkeiten mit existierenden Betriebssystemen, Soft- und Hardware sind rein zufällig. Daher übernimmt der Autor keine Garantie, juristische Verantwortung oder irgendeine Haftung für Folgen, die auf Inhalte dieses Skriptes zurückgehen.

Ich weise darauf hin, daß die im Skript verwendeten Soft- und Hardwarebezeichnungen und Markennamen der jeweiligen Firmen i. A. warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Die Nutzungsrechte der in diesem Skript wiedergegebene Codezeilen von Programmen, die unter der GNU General Public License verbreitet werden, richtet sich einzig und allein nach den Bedingungen der GNU General Public License.

 


Inhalt

Vorwort

 
In a world without walls and fences,
who needs windows and gates?
 

 
Anonymous
 

Dieses Skript ist als Begleitmaterial zu meinem Unterricht ``Einführung in Linux'' und den Vorbereitungskursen zu den LPI-Prüfungen 101 und 102 entstanden. Schwerpunkt des Unterrichts ist eine Einführung in die Grundbedienung von Linux, wie sie dem Stoffplan der ersten LPI-Prüfung entspricht. Der Stoff der Prüfung 101 wird fast vollständig abgedeckt. Viele Themen der Prüfung 102 sind auch bereits vorhanden

Das Skript ist einmal als Begleitmaterial zum Unterricht entstanden, da es noch kein passendes Buch zur LPI-Prüfung in Deutsch gibt, zum anderen als meine Vorbereitung für die Prüfungen 101 und 102, die ich auch erfolgreich abgelegt habe.

Dieses Skript befindet sich wie immer in der Entwicklung und wird in Zukunft um einige Themen erweitert werden.

Im Vergleich zur Version 0.5 hat sich der Umfang der Fibel von ca. 350 Seiten auf ca. 500 Seiten erhöht. Viele Themen sind dazu gekommen. Einige sind noch recht frisch, so daß sicherlich noch ein paar Fehler drin versteckt sind und ein paar Brüche im Kontext. Trotzdem möchte ich diese Version nun veröffentlichen, da sich vieles getan hat. Für Anregungen und Fehlerkorrekturen bin ich sehr dankbar. Die Aufgaben sollten zum größten Teil mit den Grundvoraussetzungen einer SuSE-Linux-Distribution ab Version 8.0 gelöst werden können.

Besonders möchte ich bei meinen bisherigen Teilnehmern danken, die mich auf Fehler und Unstimmigkeiten aufmerksam gemacht haben und sich als Beta-Tester für die Aufgaben geopfert haben.

Bei Interesse an Linux-Seminare und LPI-Vorbereitungskursen können Sie mich gerne kontaktieren. Nun möchte ich Sie nicht weiter aufhalten und hoffe Sie haben viel Spaß beim Lesen.

Ole Vanhoefer
Kiel, 01.09.2004


1. Einführung


1.1 Was ist eigentlich Linux?

Linux ist ein 32-BitUnix-ähnliches Betriebssystem. Im Gegensatz zu den meisten anderen Unix-Systemen ist Linux inklusive der Programmquellcodes frei kopierbar. Inzwischen existiert eine Vielzahl von Anwendungen für Linux, so daß fast alle Aufgaben, die bisher auf Unix-, Windows- oder Apple-Systemen erledigt wurden, auch unter Linux zu meistern sind.

Ein Betriebssystem ist eine Sammlung von Programmen, mit denen die grundlegendsten Funktionen eines Rechners realisiert werden. Dies reicht von der Schnittstelle Mensch-Maschine über die Verwaltung der Daten bis zur Kontrolle und Steuerung der Systemressourcen. Ohne ein Betriebssystem können Sie mit Ihrem Rechner nicht arbeiten, da so wichtige Dinge wie das Starten von Programmen und die Verwaltung Ihrer Dateien davon abhängen.

Diese Funktionen stellen eigentlich alle Betriebssystem zur Verfügung. Somit werden Sie bei jeder Arbeit mit einem Betriebssystem konfrontiert, wie z. B. CP/M, DOS, Windows 9x, Windows NT, Windows 2000, Windows ME, Windows XP, OS/2, Mac-OS, Unix usw.

Linux basiert auf dem Betriebssystem UNIX, das 1969 von den Bell Laboratories entwickelt wurde. Der finnische Student Linus Benedict Thorvald entwickelte den ersten Linux Betriebssystemkern (Kernel) auf seinem 386er Rechner. Dabei nutzte er nicht den bestehenden Quellcode, sondern programmierte das Betriebssystem vollständig neu. Nach außen präsentiert sich Linux als UNIX-System, während es innen aus einem völlig eigenständigem Code besteht.

Thorvald stellte im September 1991 der Gemeinde der MINIX-Anhänger sein neues Betriebssystem in der Version 0.01 vor. Er entschloß sich dabei das Programm und den Quellcode frei weiterzugeben und anderen Programmierern die Arbeit an seinem System zu gestatten. Viele Programmierer begeisterten sich für Linux und schon im Januar 1992 wurde der erste stabile Kernel 0.12 ins Internet gestellt.

Eigentlich kann man nur den Kernel mit seinen Modulen und direkt dazugehörenden Daten als Linux bezeichnen. Daneben gibt es aber eine Vielzahl von Hilfsprogrammen und Applikationen, die zusammen mit dem Kernel in den sogenannten Distributionen vertrieben werden. Für diese Zusammenstellung hat sich der Name Linux nun eingebürgert.

1.1.1 Leistungsmerkmale des Kernels

Der aktuelle Kernel verfügt über folgenden Leistungsmerkmale:

1.2 Wie alles begann

Leider ist heute nicht mehr der Tag bekannt an dem Linus Benedict Torvalds1.1 mit der Entwicklung des Linux Kernels begann. Ein Posting aus dem Usenet gibt aber einen Hinweis auf den möglichen Zeitpunkt, an dem er sich für das Thema zu interessieren begann.

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) 
Newsgroups: comp.os.minix 
Subject: Gcc-1.40 and a posix-question 
Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI> 
Date: 3 Jul 91 10:00:50 GMT 
Hello netlanders, 
Due to a project I'm working on (in minix), I'm interested in the posix 
standard definition. Could somebody please point me to a (preferably) 
machine-readable format of the latest posix rules? Ftp-sites would be 
nice.

Sicher ist, daß die erste Version des Linux Kernels am 25. August 1991 im Usenet angekündigt wurde. Schon kurze Zeit später fanden sich interessierte Programmierer, die an dem Projekt mitgearbeitet haben.

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki

Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want. Any suggestions
are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.

1991
Als erster genaue Termin steht der 3. Juli 1991 fest. Linux implementiert einige Gerätetreiber sowie den Festplattentreiber und einige User-Level Funktionen.

Linus veröffentlicht am 17. September 1991 die Version 0.01 des Kernels für einige Interessenten aus dem Usenet. Das Archiv mit der historischen Version ist auch heute noch verfügbar:
http://www.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz.

Die erste ``offizielle'' Version des Linux Kernels (0.02) erscheint am 05. Oktober 1991. Mit dieser Version laufen bereits die bash, gcc, gnu-make, gnu-sed und compress.

Am 19. Dezember 1991 läuft die erste Version (0.11), die ohne die Hilfe eines anderen Betriebsystems lauffähig ist. Es gab keinen SCSI Support, so daß eine AT-Bus Festplatte Voraussetzung war. Es gab weder init noch login, nach den Systemstart landete man direkt in einer bash. Es gab Ansätze für die Implementierung von Virtual Memory, es waren aber mindestens 4 MB RAM notwendig um GNU Programme, insbesondere den gcc benutzen zu können. Ein einfacher Systemstart war aber auch schon mit 2 MB möglich.

Deshalb folgte für einige Personen eine Version mit virtueller Speicherverwaltung zu Weihnachten um den Kernel auch mit 2 MB RAM übersetzen lassen zu können.

1992
Bereits am 5. Januar kommt die erste Version (0.12) heraus, die mehr Funktionen hatte als unbedingt benötigt werden. Mit dieser Version wurde der Kernel unter die GPL gestellt. Die ältere Lizenz unter der der Kernel stand war in vielen Punkten deutlich strenger.

Linus verteilte diese per Anonymous-FTP im Internet, was zu einem sprunghaften Anstieg der Testerzahl führte. Da dieser Anstieg so groß wurde, daß die nötige Kommunikation nicht mehr per eMail zu bewältigen war, wurde im Usenet die Gruppe alt.os.linux geschaffen. Das Interesse an Linux wuchs stetig und wurde von Linus koordiniert.

Um die Entwicklung voranzutreiben erhöhte Linus die Entwicklungsnummer im März auf Version 0.95.

Die im April folgende Version 0.96 war die erste Version mit der es möglich war das X-Window System zu betreiben.

Man schätzt die Zahl der Anwender auf circa 1000.

Oktober: Version 0.98.2

1993
Die Zahl aller Programmierer steigt auf circa 100. Fünf von ihnen arbeiten mit Linus zusammen. Die Anwenderzahl beläuft sich auf etwa 20000.

Durch Anpassung des Linuxkernels an die GNU Umgebung der Free Software Foundation (FSF) wuchsen die Möglichkeiten von Linux erneut stark an, da man nun auf eine große Sammlung an vorhandener Software und Tools zurückgreifen konnte.

Dezember: Version 0.99.14

1994
Mit der ersten stabilen Linux Version (1.00) im März wurde der Kernel netzwerkfähig und die User-Zahl steigt auf 100.000 an. Linus stellt nun den Quelltext des Linuxkernels offiziell unter die GPL.

Ein weiterer wichtiger Schritt war die Adaption eines Graphical User Interfaces (GUI), des X-Window-Systems. Dieses wurde von dem Xfree86 Projekt beigesteuert.

April: Version 1.10

1995
Linux läuft nun auch auf DEC- und Sun Sparc-Prozessoren. Schätzungen belaufen sich auf rund eine halbe Millionen Anwender.

März: Version 1.20

Juni: Version 1.30

1996
Mit der neuen Version 2.0 des Linux-Kernels können nun mehrere Prozessoren gleichzeitig angesteuert werden. Linux verliert langsam seinen Bastlerstatus und wird zu einer ernstzunehmenden Alternative für Firmen.

Die Anwenderzahl hat sich auf rund 1,5 Millionen Benutzern erhöht.

Juni: Version 2.00

September: Version 2.10

1997
Neue Linuxversionen erscheinen fast wöchentlich. In verschiedenen Ländern existieren bereits Linuxmagazine. Die Anwenderzahl ist auf 3,5 Millionen Anwender gestiegen.

Verschiedene namhafte Firmen beginnen ihre Software auf Linux zu portieren. Netscape ihren Webbrowser, Applixware ihre Office Anwendung und die Software AG Ihre Datenbank Adabas D. Damit gibt es auch professionelle Software für Linux.

April: Version 2.1.35

1998
Das K Desktop Enviroment (kurz: KDE) wird gestartet.

Man schätzt die Anzahl der Programmierer von Linux auf 10.000, und die Anzahl der Anwender auf 7,5 Millionen.

März: Version 2.1.90

1999
Man tippt auf ungefähr 10 Millionen Anwender. Linus Torvalds kündigt den Angriff auf Windows an.

Januar: Version 2.20

Mai: Version 2.30

2000

2001
Januar: Version 2.4

2002

2003

2004

1.3 Grundlagen für die Installation

Vor der Installation wollen wir uns hier mit ein paar Grundlagen zur Hardware beschäftigen.

1.3.1 Hardwarevoraussetzungen

Für ein System ohne graphische Oberfläche können Sie sich an folgenden Werten orientieren.

Theoretisches Minimum 386 SX 1 MB  RAM 5MB  Festplatte
Brauchbares Minimum 386 DX/40 mit Coprozessor 8 MB  RAM 150 MB  Festplatte
Brauchbares System 486 DX/66 16 MB  RAM 600MB  Festplatte
Gutes System Pentium90 32 MB  RAM 1GB  Festplatte

Graphische Systeme machen erst ab einem 486 Prozessor Spaß und für ein KDE-System sollten es minimal 64 MB Arbeitsspeicher sein.


1.3.2 Die Festplatte

Vor der Installation sollten wir uns den Aufbau einer Festplatte bzw. Harddisk einmal anschauen. Eine Festplatte besteht meistens aus einer, zwei oder mehreren Metallplatten, die beidseitig mit hochfein polierten Metalloxiden beschichtet sind. Ein Kamm von beweglichen Schreib-Lese-Köpfen greift seitlich in den rotierenden Stapel von Platten hinein und kann so die in konzentrischen Kreisen angelegten Datenmuster lesen oder schreiben. Durch die hohen Drehzahlen der Festplatte entstehen gezielt Luftbewegungen. Der Schreib-Lese-Kopf wird in Richtung der Oberfläche gesaugt und in einem vordefinierten Abstand gehalten. Bei einem Strömungsabriss durch Änderung der Drehzahl entfernt sich der Schreib-Lese-Kopf wieder von der Oberfläche.

Diese System ist relativ stabil. Sollte es aber aus irgendwelchen Gründen zum direkten Kontakt des Kopfes mit den schnell drehenden Magnetplatten kommen, so ist das Ergebnis verheerend. Diesen Vorgang bezeichnet man auch als Headcrash. Die magnetisierte Oberfläche, welche die Daten trägt, wird unwiderruflich beschädigt. Das gleiche gilt für den Schreib-Lese-Kopf der Festplatte. Dieser Vorgang wird in Umgangssprache auch als Spanabhebende Datenverarbeitung bezeichnet. Das ist dann für die Daten der GAU, der wahrhaft größte anzunehmendste Unfall. Auch wenn es heute Möglichkeiten gibt, mit welcher man gelöschte Dateien wiederherstellen kann, sind mechanisch zerstörte Daten unwiederuflich verloren.

Die Festplatte beherbergt die magnetisierbaren Metallplatten, den Spindelmotor, den Schreib-Lese-Köpfen sowie den Positionierungsmechanismus der Köpfe in einem versiegelten Gehäuse, das vor äußeren Einflüssen schützt. Dieser Aufbau legt das Koordinatensystem der Festplatte fest, das die Lokalisierung der Daten auf der Platte ermöglicht. Der Kamm aus Schreib-Lese-Köpfen erzeugt konzentrische Kreise auf der Oberfläche der Magnetplatten. Einen solchen Kreis bezeichnet man als Spur. Die Spur 0 ist per Definition der äußerste Kreis einer Platte. Eine solche kreisförmige Spur wird dann in Kreissegmente unterteilt, die als Sektoren bezeichnet werden. Der Sektor ist die kleinste adressierbare Einheit einer Platte. Er ist 512 Bytes groß. Die übereinander liegenden Spuren eines Plattenstapels werden als Zylinder bezeichnet. Eine Festplatte mit drei Scheiben hat Zylinder, die aus sechs Spuren bestehen (Obere und untere Seite pro Scheibe). Eine Platte kann auf alle Spuren eines Zylinders zugreifen, ohne die Schreib-Lese-Köpfe neu zu positionieren.

Durch die Angabe von Zylinder, Kopf und Sektor kann man so genau einen Abschnitt einer Festplatte, den Block, adressieren. Diese Form der Adressierung wird als CHS (Cylinder-Head-Sector) bezeichnet. Der Block stellt die kleinste adressierbare Einheit einer Festplatte dar, d.h. zur Änderung eines einzelnen Bits muss immer ein ganzer Block gelesen und wieder geschrieben werden. CHS unterliegt mehreren Einschränkungen: Die Schnittstelle zwischen IDE und BIOS reserviert nur 16 Bits für die Zylinder (maximal sind 65.536 möglich), 4 Bits für die Köpfe (maximal 16) und 8 Bits für die Sektoren pro Spur (maximal 256). Das BIOS hat 10 Bits für die Zylinder zur Verfügung (1024), 8 Bits für die Köpfe (256) und 6 Bits für die Sektoren (63, da ab 1 gezählt wird). Bei diesen Grenzen ist jeweils der niedrigere Wert entscheidend, so daß alte BIOS-Versionen nur 1024 x 16 x 63 x 512 Bytes = 504 MB adressieren können. Neuere BIOS-Versionen stocken per Mapping die Anzahl der Schreib-/Leseköpfe auf 255 auf und kommen damit auf 7.844 GB.

Ende 1995 löste LBA (Logical Block Addressing) die Adressierung nach CHS ab. Hier werden der Zylinder, Head und Sektor in logischen Blöcken zusammengefaßt. Bei LBA sind alle Sektoren der Festplatte - von null beginnend - durchnumeriert. Das auf 28 Bit basierende LBA verwaltet maximal 128 GB. Aktuell ist die auf 64 Bit basierende Variante, die bis zu 8.589.934.592 Terrabytes adressiert.


1.3.3 Partitionen

Neben der oben beschriebenen physikalischen Aufteilung einer Festplatte gibt es eine logische Aufteilung der Platte, die für die Installation sehr wichtig ist. Partitionen werden dazu benutzt um eine Festplatte in einzelne Teile zu zerlegen. Eine Festplatte besteht aus mindestens einer Partition und kann bis zu vier Partitionen enthalten. Um mit den Partitionen arbeiten zu können, müssen sie mit dem gewünschten Dateisystem formatiert werden. Bei den Partitionen werden zwei Typen unterschieden: Die primäre und die erweiterte Partition.


1.3.3.0.1 Primäre Partition

Eine primäre Partition wird formatiert und ist dann in der Lage Daten zu speichern. Ein Rechner kann nur von einer primären Partition booten.


1.3.3.0.2 Erweiterte Partition

Eine erweiterte Partition kann nicht direkt zum Speichern von Daten verwendet werden. Sie kann nur logische Laufwerke enthalten, die dann aber formatiert werden können. Eine Festplatte kann bis zu vier primäre Partitionen enthalten oder drei primäre und eine erweiterte Partition.

1.3.3.1 Partitionsnamen

Die Partitionen werden direkt nach dem Typ des Festplattencontrollers benannt. Dabei steht für IDE-Platten der Buchstabe h und für SCSII-Platten der Buchstabe s. Dann folgt der Buchstabe d für Disk. Der dritte Buchstabe nummeriert die Festplatte und die vierte Ziffer gibt die Partitionsnummer an. Die erste Partition der ersten Festplatte mit einem IDE-Controller heißt also hda1. Mit einem SCSII-Controller würde sie sda1 heißen.


Tabelle 1.1: Beispiele für Partitionsnamen
Name Controller Disk Partition
hda1 IDE-Controller Erste Festplatte Erste Partition
sda1 SCSII-Controller Erste Festplatte Erste Partition
hdb3 IDE-Controller Zweite Festplatte Dritte Partition
sdc4 SCSII-Controller Dritte Festplatte Vierte Partition


1.3.3.2 Planung der Partitionen

Für ein Linux-System benötigt man mindestens zwei Partitionen, eine für die Wurzel (root) (/) und eine für die Auslagerungspartition (swap). Es ist aber oft ratsam mehrere Partitionen einzurichten. Dabei sollte dem Bootverzeichnis /boot und den Heimatverzeichnissen /home eine eigenen Partition spendiert werden.

Die Vorteile einer Aufteilung auf mehrere Partitionen sind klar.

Der Nachteil allerdings liegt in der uneffektiven Nutzung des vorhandenen Festplattenplatzes, da ohne weiteres auf einer Partition noch Platz sein kann, während die Partition eines anderen Verzeichnisses schon voll ist. Planen Sie daher vorher mit Bleistift und Papier ihre Partitionen, denn eine nachträgliche Größenänderung ist immer mit Problemen und großem Zeitaufwand verbunden.

Im Gegensatz zu DOS/Windows merkt der Benutzer nichts von der Aufteilung, da es bei Linux keine Laufwerksbuchstaben gibt, sondern die Laufwerke bzw. Partitionen in den Dateibaum eingebunden werden.

1.3.3.2.1 Kleine Plattenkapazität

Besitzt das System nur wenig Plattenplatz, so sollten möglichst wenig Partitionen angelegt werden, da jede dieser Partitionen einen ungenutzten Restplatz vorhalten muß.

1.3.3.2.1.1 Beispiel
 
Sie wollen Linux als Router auf einem alten Pentium-Rechner mit einer 1,2 GB großen Festplatte und 48 MB RAM installieren. Da der Festplattenplatz begrenzt ist, sollten sie die Platte wie folgt aufteilen:
/boot
Eine 50 MB große Partition stellt sicher, daß alle Kernels unter der Zylinder-1024-Grenze liegen.

swap
Eine 100 MB große Partition (96 MB) für den Swap-Speicher.

/
Der Rest der Platte (1050 GB) wird für eine einzige große Wurzel-Partition verwendet, die alle anderen Verzeichnisse enthält.

Sollte sich die ganze Platte unter Zylinder 1024 befinden, dann kann für das Verzeichnis /boot auf eine eigene Partition verzichtet werden.

Auf älteren Systemen kann es auch vorkommen, daß mehrere kleinere Platten vorhanden sind. In diesem Fall kann der Verzeichnisbaum auf diese Platten aufgeteilt werden. So kann z. B. für das Verzeichnis /home eine eigene Platte verwendet werden. Die Verwendung der Platten ist genau so wie die Verwendung von mehreren Partitionen auf einer Platte.

1.3.3.2.2 Große Plattenkapazität

Bei Servern, die mehrere Dutzend GB an Daten speichern müssen, ist natürlich genügen Platz für viele Partitionen. Datensicherung und benötigte Dateisysteme geben dabei die Verwendung der Partitionen vor.

1.3.3.2.2.1 Beispiel
 
Wenn wir von einem NFS-Server ausgehen, der mit 512 MB RAM und einem Plattenarray mit einer Gesamtkapazität von 100 GB ausgestattet ist, dann wäre diese Aufteilung empfehlenswert.

/boot
Eine 50 MB große Partition stellt sicher, daß alle Kernels unter der Zylinder-1024-Grenze liegen.

swap
512 MB (bzw. 4 x 128 MB) reichen für die Swap-Partition aus, da der Server extra mit viel Speicher ausgestattet wurde um Plattenzugriffe zu verhindern. Eventuell kann die Größe sogar auf 256 MB reduziert werden.

/
Da möglichst alle wichtigen Verzeichnisse eine eigene Partition bekommen sollen, reichen hier 100 MB aus.

/usr
Hier sind 2 GB vorgesehen. Praktischerweise können die hier vorhandenen Programme mit den Workstations über NFS geteilt werden.

/var
500 MB reichen aus um die Logdateien zu speichern. Auf eine eigene Partition beschränkt, können sie das System bei zu großem und schnellem Wachstum nicht zumüllen.

/tmp
Für temporäre Aufgaben sind 100 MB an Plattenplatz ausreichend. Auch hier verhindert eine seperate Partition das Überwuchern des Systems.

/home
Die restlichen 97 GB stehen dann für die Datenspeicherung übers Netzwerk zur Verfügung.

Verzeichnisse sind nicht auf lokale Partitionen beschränkt. NFS-Netzwerkverzeichnisse können die gleichen Aufgaben übernehmen. Früher, als Plattenplatz noch richtig teuer war, wurde oft das Verzeichnis /usr auf den Server ausgelagert. Heute ist dies nicht mehr so wichtig. Allerdings erleichert ein gemeinsames /usr-Verzeichnis für alle Arbeitsrechner die Wartung (Update) des Systems.

Neben diesen Argumenten kann auch die Datensicherung über die Größe der Partitionen entscheiden. So beschränkt z. B. die Größe der Sicherungsmedien unter Umständen die maximale Größe einer Partition ein.

Mehr Informationen zu Partitionen und ihre manuelle Einrichtung finden Sie im Abschnitt 10.1.


1.3.4 Der Auslagerungsspeicher

Arbeitsspeicher ist auch heute noch teuer. Deshalb benötigen gerade bei Multitasking-Systemen die Programme oft mehr Speicher als vorhanden ist. Um dem gegenzuwirken arbeiten die Betriebssysteme nicht mit dem physikalischen Arbeitsspeicher sondern mit dem virtuellen Arbeitsspeicher. Der virtuelle Arbeitsspeicher setzt sich aus dem RAM und einem Speicherbereich auf der Festplatte zusammen. Bei Linux wird der Arbeitsspeicher auf der Festplatte durch die Swap-Partition realisiert.

Für die Größe der Swap-Partition gibt es eine Faustregel. Der Auslagerungsspeicher sollte immer doppelt so groß sein, wie der eingebaute Arbeitsspeicher. Dabei sollte eine Größe von 16 MB für die Swap-Partitione nicht unterschritten werden um eine gute Funktion des Betriebssystems zu gewährleisten.

Seit Kernel 2.1.117 darf die Swap-Partition bis zu 2 GB groß werden. Die Anzahl der Swap-Partitionen kann bei der Kompilierung des Kernels festgelegt werden. Im Normalfall ist dieser Wert auf 32 eingestellt.


1.3.5 fips

Wenn Sie Linux auf einem Rechner installieren wollen, auf dem schon ein Betriebssystem läuft, stoßen Sie meistens auf das Problem, daß kein Platz mehr auf der Festplatte für eine seperate Partition mehr ist. Für diesen Fall gibt es das Programm fips. Es ermöglicht die Aufteilung einer FAT16-Partition in zwei Teile. Dabei sollte es zu keinem Datenverlust kommen, trotzdem sollte die Daten mit einem Backup gesichert werden. Vor dem Einsatz von fips1.2 sollten Sie außerdem genau die Dokumentation lesen.

Kopieren Sie die Dateien fips.exe und restorbb.exe auf eine Diskette. Eine Kopie Ihres alten MBR (Master Boot Record) wird während der Installation auf die Diskette kopiert. Dieses Backup können Sie dazu nutzen die Veränderung wieder rückgängig zu machen. Daher Diskette beschriften und gut verwahren!!!

Gleichzeitig wird der alte MBR auf dem Linux-System als /boot/boot.0300 für IDE-Platten und als /boot/boot.0800 für SCSI-Platten abgelegt.


1.4 Installation

Damit wir mit Linux arbeiten können ist es notwendig das Betriebssystem zu installieren. Die Installation ist stark abhängig von der verwendeten Distribution. Bei der SuSE-Distribution kann eine Installation von CD, Festplatte oder übers Netzwerk mit NFS, Samba (Windows Freigabe) oder FTP erfolgen. Dabei wird das Installations- und Administrationstool YaST verwendet.

Da sich die Installationsprozeduren von Distribution zu Distribution und sogar von Version zu Version unterscheiden möchte ich an dieser Stelle nicht darauf eingehen. In den bei der SuSE-Distribution mitgelieferten Handbüchern wird die Installation beschrieben. Sollten Sie dieses Skript nicht als Begleitmaterial zum Unterricht benutzen, sondern selber lernen, dann suchen Sie sich für die Installation einen erfahrenen Linux-User. In den meisten Fällen kann SuSE-Linux mit wenigen Mausklicks installiert werden, aber je nach der verwendeten Hardware kann es zu kleineren oder größeren Problemen kommen. Dies gilt übrigens auch für Windows.

Für den Unterricht ist es effektiver die Distribution auf einem Server im Netz zur Verfügung zu stellen. Erstens müssen nicht Unmengen von CDs gebrannt werden und zweitens erleichtert diese Vorgehensweise auch die nachträgliche Installation von Software im weiteren Verlauf des Unterrichts.

Deshalb nun die Beschreibung der Schritte, die vor einer Netzwerkinstallation am Client durchgeführt werden müssen.


1.4.1 Erstellung der Bootdisketten unter DOS

Um mit der Installation beginnen zu können, müssen Sie den Rechner mit einem rudimentären Betriebssystem starten (Booten). Dies erfolgt in der Regel durch eine speziell dafür vorbereitete Diskette oder CD. Sie brauchen die Medien nur ins CD-Laufwerk einzulegen und den Rechner dann zu starten. In der Bootreihenfolge des BIOS muß allerdings das CD-Laufwerk bzw. Diskettenlaufwerk vor der Festplatte kommen.

Die erste CD der SuSE Distribution ist bootfähig und in der Regel kann die Installation dann ohne Probleme durchgeführt werden. Manchmal unterstützen ältere Rechner oder SCSI-Systeme das Booten von CD nicht. Dort und um eine Netzwerkinstallation durchführen zu können, werden Bootdisketten benötigt, die ein Grundbetriebssystem starten. Diese Bootdisketten können von Diskettenimages erstellt werden. Für SuSE 8.1 gibt es eine Bootdiskette (bootdisk) und vier Moduldisketten mit Treibern (modulesX). Die beigefügten Textdateien enthalten die Liste der Treiber.

Unter DOS bzw. Windows können Sie das Programm rawrite benutzen. Sie finden das Programm auf der SuSE-Distribution auf der CD 1 im Verzeichnis /dosutils/rawrite. Die Bootimages befinden sich im Verzeichnis /disks auf der gleichen CD. Sie können also die Bootdisketten durch die Befehle

R:> dosutils\rawrite\rawrite disks\bootdisk
R:> dosutils\rawrite\rawrite disks\modules1
R:> dosutils\rawrite\rawrite disks\modules2
R:> dosutils\rawrite\rawrite disks\modules3
R:> dosutils\rawrite\rawrite disks\modules4
auf fünf 3,5''-Disketten installieren, wenn die CD im Laufwerk R: liegt. Die Disketten müssen vorher formatiert werden1.3.

1.4.2 Installation mit Bootdisketten

  1. Legen Sie die Bootdiskette ein und starten Sie den Rechner.

  2. Beim jetzt erscheinenden Auswahlmenü wählen Sie Installation.

  3. Nun wird der Kernel geladen. Da er sehr groß ist, benötigen Sie auch noch die Moduldiskette 1. Nachdem der Kernel vollständig geladen wurde, wird das System gestartet.

  4. Nun werden Sie aufgefordert eine Moduldiskette einzulegen.

  5. Sollte die Installationsroutine keine Installations-CD finden, weil der passende Treiber fehlt oder eine Netzwerkinstallation geplant ist, dann schalten Sie nun in die ``Manuelle Installation''.

  6. Wählen Sie nun die Sprache für die Installation aus. (Deutsch)

  7. Wählen Sie nun die Tastaturbelegung aus. (Deutsch)

  8. Im nun folgenden Hauptmenü finden Sie die Menüpunkte
    • Einstellung
      Hier können Sie noch mal die Sprachen für Installation und Tastatur ändern.
    • System-Information
      Beim Booten analysiert der Kernel die Hardware des Systems. Über diesen Menüpunkt können diese und Informationen über den Kernel selber aufgerufen werden. Sie erhalten Informationen über die Kernel-Meldungen, Festplatten und CD-Laufwerke, geladene Module, PCI-Bus, Prozessor, Speicher, Ein- und Ausgabeports, Interrupts, Geräte, Netzwerkkarten und DMA-Kanäle.
    • Kernel-Module (Hardware-Treiber)
      Fehlende Treiber für die Installation können hier eingebunden werden.
    • Installation / System starten
      Jetzt kann die Installation gestartet werden oder ein bereits installiertes System gebootet werden.
    • Abbruch / Reboot
      Installation abbrechen und den Rechner neu starten.
    • Power off
      Installation abbrechen und den Rechner ausschalten.1.4

  9. Sollte ein passender Treiber fehlen (z. B SCSI-Treiber), dann wechseln Sie in den Menüpunkt Kernel-Module.
    1. Dort wählen Sie die passende Rubrik aus (z. B. IDE/RAID/SCSI-Treiber laden für SCSI-Geräte).
    2. Legen Sie die angeforderte Moduldiskette ein. Die Daten werden in eine RAM-Disk geschrieben.
    3. Wählen Sie den passenden Treiber aus und geben Sie eventuell benötigte Parameter für das Modul ein.1.5
    4. Das System versucht das Modul nun zu laden. Auf Konsole 4 - zu erreichen über die Tastenkombination <ALT>+<F4> - können die Systemmeldungen angeschaut werden. Zurück geht es mit <ALT>+<F1>. Die Erfolgs- oder Mißerfolgsmeldung wird mit Return bestätigt.
    5. Über den Button Zurück landen Sie wieder im Hauptmenü.

  10. Nachdem nun alle Treiber geladen sind, geht es mit dem Menüpunkt Installation / System starten weiter.

  11. Im Installations-Menü wählen Sie Installation/Update starten.

  12. Nun muß das Quellmedium ausgewählt werden.
    CD-ROM
    Bei Auswahl dieses Menüpunkts versucht die Installationsroutine die Installations-CD bzw. DVD zu mounten. Klappt dies nicht, müssen Sie die Daten des Laufwerks per Hand eingeben.
    Netzwerk
    Festplatte

  13. Nun erscheint das eigentliche Installationsmenü. Da sich der Installationsassistent häufig ändert, möchte ich hier nicht auf die weitere Installation eingehen. Eine gute Beschreibung der Installationsroutinen finden Sie in den mitgelieferten Handbüchern.


1.5 Konfiguration mit YaST2

Im Gegensatz zu Windows, wo die Einstellungen des Systems in der nicht gerade übersichtlichen Registry gespeichert werden, existieren unter Linux viele Textdateien, die die Konfigurationswerte enthalten. So ist es möglich nur mit einem Texteditor das komplette System zu administrieren. Obwohl diese Konfigurationsdateien normalerweise gut dokumentiert sind, gehört doch etwas wissen und selbstvertrauen dazu, die Einstellung per Hand vorzunehmen.

SuSE hat für die Administration das Tool YaST2 für die graphische Oberfläche entwickelt. Es erlaubt eine wesentlich komfortablere aber nicht unbedingt schnellere Administration des Systems. Auch normale Benutzer können die YaST2 Kontrollzentrum oder die einzelnen Module aufrufen. Vor der Ausführung wird aber nach dem Passwort für root gefragt. Es ist also nicht nötig sich extra als root anzumelden um das System administrieren zu können.

Im YaST-Kontrollzentrum finden Sie die Module in verschiedenen Gruppen zusammengefaßt. Ich gehe im folgenden Abschnitt nur vereinzelt auf die einzelnen Module ein, weil die Funktionsweise vieler Module zum jetzigen Zeitpunkt zu viel weiteres Wissen erforden würde und damit den Umfang dieses Kapitels sprengen würde.

Software
Dieser Abschnitt beschäftigt sich mit der Installation, Deinstallation und Update der Software auf dem System.
Installationsquelle wechseln
YaST merkt sich die letzte Installationsquelle. Erfolgt nun die Installation von einem anderen Medium, so kann dies hier eingestellt werden.

Patch CD-Update
Für bestimmte Kunden stellt SuSE in regelmäßigen Abständen CDs mit aktuellen Patches zur Verfügung. Hier können Sie eingespielt werden.

Update des Systems
Über dieses Modul können Sie das bestehende System auf einen neuen Distributionsstand bringen, z. B. von SuSE 8.0 auf SuSE 8.1.

Online-Update
Fehlerbehebung ist ein wichtiger Faktor in der EDV. Mit dem Online-Update können Sie kleine Programme zur Fehlerkorrektor (Patches) Online herunterladen und Ihr System auf den neuesten Stand bringen.

Software installieren/löschen
Dieses Modul ermöglicht es Ihnen Pakete von der SuSE-Distribution einzuspielen, upzudaten oder wieder vom System zu entfernen.

Hardware
Wie der Namen schon erahnen läßt finden Sie hier die Möglichkeit die Hardware zu konfigurieren oder Informationen über Sie einzuholen. Spezielle für Drucker, Grafikkarte und Monitor, Festplatte, Scanner, Maus, Soundkarte und TV-Karte gibt es hier Module.
Automatische Druckererkennung
für die Installation lokaler Drucker.

Drucker bearbeiten
Mit diesem Modul können existierende Drucker bearbeitet werden und neue lokale und Netzwerkdrucker eingerichtet werden.

Grafikkarte und Monitor
Hiermit können Sie die Einstellung für die Grafikkarte ändern und die Ausgabe an den Monitor anpassen.

Hardware-Info
Liefert Ihnen eine Übersicht über die eingebaute Hardware.

IDE DMA-Modus
Hiermit können Sie den DMA-Modus (Direct Memory Access) Ihrer Laufwerke aktivieren. Dies ist z. B. für das Betrachten von DVDs wichtig.

Mausmodell wählen
Was soll ich da noch viel schreiben ...

Partitionieren
Hier gelangen Sie zu dem Tool, bei dem Sie schon bei der Installation die Festplatten Ihres Rechners in einzelne Abschnitte aufteilen können.

Scanner
Auch Scanner wollen konfiguriert werden ...

Sound
Bei der Soundkonfiguration sollten Sie die passende Lautstärke beachten und richtig einstellen. Aus Sicherheitsgründen ist die Grundeinstellung meistens sehr leise. Dies und ein sehr leise gestellter Lautsprecher haben schon oft zur falschen Annahme geführt, daß die Soundkarte unter Linux nicht funktioniert.

TV-Karten
Seit SuSE 8.0 hat sich die Unterstützung von TV-Karten sehr verbessert. Hier werden Sie automatisch erkannt und konfiguriert.

Netzwerk/Basis
Die Konfiguration von Netzwerkkomponenten (Netzwerkkarten, Modems, ISDN-Karten, etc.) oder Diensten (E-Mail, DSL, Serverdienste) wird durch die Module dieser Gruppe erledigt.

E-Mail
Konfiguration der Netzwerkkarte
Konfiguration des Modems
Konfiguration von DSL
Konfiguration von ISDN
Start oder Stopp von Systemdiensten

Netzwerk/Erweitert
Die speziellen Netzwerkfunktionen für DNS, NFS, NIS und Routing werden hier konfiguriert.

HostName und DNS
LDAP-Client
NFS-Client
NFS-Server
NIS+-Client
NIS-Client
NIS-Server
Routing

Sicherheit & Benutzer
Benutzerverwaltung und die Richtlinien zur Sicherheit (Firewall) werden hier abgehandelt.

Benutzer bearbeiten und anlegen
Einstellungen zur Sicherheit
Firewall
Gruppen bearbeiten und anlegen
Neue Gruppe anlegen
Neuen Benutzer anlegen

System
Diese Module kümmern sich um die systemnahen Einstellungen, wie Backup, Bootdisketten, Starteinstellungen, Automatisches Starten von Diensten und Grundkonfigurationen.

Backup des Systems erstellen
Boot-, Rettungs- oder Moduldiskette erzeugen
Konfiguration des Bootloaders
LVM
Runlevel-Editor
Sprache wählen
Sysconfig-Editor
Tastaturlayout auswählen
Zeitzone auswählen

Sonstiges
Hier finden Sie den Rest der YaST-Module, die SuSE nicht in eine der anderen Gruppen einordnen konnte.
Drucker für CUPS
Konfiguriert Drucker für das Drucksystem CUPS

Drucker für LPD
Konfiguriert Drucker für das Drucksystem LPD

Startprotokoll anzeigen
Ermöglicht die Anzeige der einzelnen Systemlogdateien, wobei bei diesem Modul mit /var/log/boot.msg gestartet wird.

Support-Anfrage stellen
Hier können Sie eine Anfragen an den Online-Support stellen.

Systemprotokoll anzeigen
Ermöglicht die Anzeige der einzelnen Systemlogdateien, wobei bei diesem Modul mit /var/log/messages gestartet wird.

Treiber-Cd des Herstellers laden
Ermöglicht die Installation von Treibern, die vom Hersteller der Hardware kommen.

Der folgende Abschnitt zeigt Ihnen die Administration einiger Funktionen. Diese ist im Prinzip über YaST sehr einfach. In den meisten Fällen muß man nur wissen was man will1.6 und man muß lesen können.1.7


1.5.1 Wie installiere ich weitere Softwarepakete?

Das es um Software geht, wählen Sie im YaST-Kontrollzentrum die Gruppe Software. Ein Blick auf die Liste der Module zeigt uns, daß Software installieren/löschen wohl eine gute Wahl ist. Falls Sie die Installationsquelle gewechselt haben, müssen Sie diese vorher mit dem Modul Installationsquelle wechseln neu einstellen.

Nach dem Starten des Moduls sucht YaST nach der Paketliste. Dies kann einen Moment dauern. Findet YaST kein Installationsmedium, so behilft er sich mit der letzten gespeicherten Liste.

Achtung! Installation über NFS: Sollte sich YaST bei dieser Phase aufhängen und nicht weitermachen, dann liegt es in den meisten Fällen daran, daß der NFS-Server nicht erreichbar ist. Da es sich um eine harte Verbindung handelt, dauert es sehr lange bis es zu einem Timeout kommt und YaST den Fehler bemerkt. Um diesen Fehler zu umgehen, wählen Sie vorher ein anderes Installationsmedium aus.

Nach dem Laden der Paketlisten erscheint das Auswahlfenster für die Pakete. Sie sehen dort drei Tabellen. Links oben zeigt Ihnen die Themengruppen oder Paketserien an, in die die Pakete einsortiert worden sind. Unten links sehen Sie, wieviel Platz noch auf der Festplatte vorhanden ist. Die rechte Tabelle zeigt die Pakete in der Gruppe an. Durch Doppelklicken oder Betätigen des Buttons Aus-/Abwählen können Sie den Zustand des Pakets ändern. Dieser Zustand wird durch ein Zeichen vor dem Paketnamen angezeigt. Dabei steht ein X für ein Paket, das zur Installation vorgesehen ist. Das kleine i steht für ein bereits installiertes Paket und das kleine d für ein installiertes Paket, daß deinstalliert werden soll. Auch ein kleines a kann als Markierung vorkommen. Diese Pakete wurden automatisch ausgewählt zur Installation, da diese von anderen Paketen benötigt werden. Keine Markierung bedeutet natürlich, daß dieses Paket nicht installiert und auch nichts für dieses Paket geplant ist.

Zu den meisten Paketen existiert neben der Kurzbeschreibung in der Tabelle noch eine etwas ausführlichere Beschreibung des Pakets. Diese erreichen Sie über den Button Beschreibung, was Sie natürlich nie erraten hätten. ;-)

In vielen Fällen kennt man den Namen des Programms, aber nicht in welchem Paket oder in welcher Themengruppe/Paketserie das Paket liegt. In den meisten Fällen heißt das Programmpaket genau wie das Programm. Über eine Suchfunktion (Button Suchen) können die Paketnamen und sogar die Beschreibungen nach einem Stichwort durchsucht werden.

Unter Extras finden Sie weitere Funktionen um Pakete auszuwählen oder abzuwählen. Besonders interessant ist die Möglichkeit, die aktuelle Paketauswahl abzuspeichern oder eine gespeicherte Paketauswahl einzuladen. Dadurch ist es relativ schnell möglich Rechner mit der gleichen Softwareausstattung zu installieren.

Nach der Paketauswahl, die Sie mit dem Button OK abschließen, werden die Pakete installiert. Bei der CD-Version werden Sie dann und wann aufgefordert die entsprechenden CDs einzulegen. Mit einem Fortschrittsbalken werden Sie darüber informiert, wie weit Ihre Installation ist. Nach Abschluß der Installation startet YaST das Programm SuSEConfig, daß die Konfigurationsdateien des Systems für die neuen Programmen konfiguriert.

Und schon sind die Programme installiert.


1.5.2 Wie mache ich ein Online-Update?

Keine Software ist fehlerfrei! Diesem gerne von einer Firma aus Redmond als Entschuldigung herangezogenen Satz kann ich nur zustimmen. Wer selber mal ein längeres Programm geschrieben hat, weiß, wieviel Fehler sich einschleichen können. Und wir reden hier von Programmen, deren Sourcecode ausgedruckt mehrere Aktenordner füllen würden. Programme sind fehlerhaft. Finden Sie sich damit ab.

Zum Glück gibt es so Leute, die sich nicht damit abfinden und die Fehler in Programmen bereinigen. Bei OpenSource-Software kann dies theoretisch jeder. Wohlgemerkt: theoretisch. Um sich in einem großen Programm zurechtzufinden braucht es schon etwas längere Einarbeitungszeit und gute Kenntnisse in den Programmiersprachen und natürlich der Programmierung selber.

Jedenfalls werden viele Fehler bzw. Sicherheitslücken im Laufe der Zeit in Programmen entdeckt und oft auch behoben. Um nicht das ganze Programm neu einspielen zu müssen, benutzt man sogenannte Patches (Flicken), die den Binärcode des ``alten'' Programms auf den neuesten Stand bringen. Die Fehlerkorrekturen - manche Leute reden auch von Fehlerveränderungen - können Sie manuell einspielen. SuSE bietet Ihnen den Service eines Online-Updates. Das YOU (YaST Online Update) stellt Ihnen die neuesten Patches zu den SuSE-Paketen zur Verfügung. Es stellt fest, was an neuen Patches vorhanden ist. Dann lädt es die Patches für die installierten Programme runter und installiert Sie.

Das YOU finden Sie auch im Kontrollzentrum unter Software. Nach dem Starten des Moduls sucht das System nach verfügbaren Update-Servern. Sie müssen natürlich auch eine Verbindung zum Internet besitzen.

Sie können nun zwischen manuellem und automatischem Update wählen. Entscheiden Sie sich für das manuelle Update, denn dort können Sie besser sehen, was installiert wird. Sie können auch den Server wählen, von dem Sie die Patches beziehen möchten. Dies sollten Sie tun, falls der erste Server überlastet ist.

Nun lädt YOU die Liste der zur Verfügung stehenen neuen Updates herunter. Nachdem die Verbindung beendet wurde, geht es mit Weiter weiter.

Sie sehen nun die Liste der zur Verfügung stehen Patches mit Erläuterungen. Die Patches, die Sie benötigen sind schon mit einem X gekennzeichnet zum Download vorgesehen. Sie können nun einfach mit Weiter zum nächsten Schritt, dem Herunterladen der Pakete, gehen.

Nachdem dieses auch abgeschlossen ist und Sie mit Weiter zum nächsten Bildschirm gewechselt sind, kann es nun endlich mit dem Einspielen der Patches losgehen. Danach wird noch einmal SuSEconfig gestartet um die Konfigurationsdateien anzupassen und schon ist Ihr System auf dem neuesten Stand.

1.6 Benutzer- und Gruppenverwaltung

Linux ist ein Multiuser-Betriebssystem. Dadurch ist es mehreren Personen nacheinander oder sogar gleichzeitig möglich auf einem Rechner arbeiten. Damit es zu keinem Durcheinander der Daten kommt, muss sich jeder Benutzer eindeutig identifizieren, wenn er mit Linux arbeiten möchte. Außerdem gehört jeder Benutzer mindestens einer Gruppe an. Jeder Benutzer bekommt einen eindeutigen Namen und damit er sich auch authentifizieren kann ein Passwort.

Für die Benutzerverwaltung finden wir in der Gruppe Sicherheit & Benutzer die Module Benutzer bearbeiten und anlegen, Neuen Benutzer anlegen, Gruppen bearbeiten und anlegen und Neue Gruppen anlegen.

Diese Module sind Frontends zu der eigentlichen Benutzerverwaltung von Linux. Ein Frontend ist ein Programm, das eigentlich nichts selber macht, sondern sich als Bedienungselement zwischen den Benutzer und dem eigentlichem Programm setzt. Das Ziel eines Frontends ist es, die Bedienung von Programmen und Konfigurationsdateien zu erleichtern und damit komfortabler und fehlerfreier zu machen.

Die Konfigurationsdateien für die Benutzerverwaltung befinden sich wie die meisten Konfigurationsdateien im Verzeichnis /etc. Die Liste der Benutzer ist in der Datei /etc/passwd abgelegt. Die Passwörter befinden sich in der Datei /etc/shadow. Deren Aufbau und Arbeitsweise wird in einem späteren Kapitel behandelt.


1.6.1 Wie erstelle, bearbeite und lösche ich Benutzer?

Die Module Benutzer bearbeiten und anlegen und Neuen Benutzer anlegen sind für die Benutzerverwaltung verantwortlich.


1.6.1.1 Neuen Benutzer anlegen

Um einen neuen Benutzer anzulegen, starte Sie das Modul Neuen Benutzer anlegen. Im nun erscheinenden Fenster können Sie den Benutzernamen und das Passwort des neuen Benutzers eintragen.

Bei der Eingabe eines Passworts müssen Sie zwischen Groß- und Kleinschreibung unterscheiden. Ein Passwort sollte mindestens fünf Zeichen lang sein und darf keine Sonderzeichen (z. B. Akzente) enthalten. Sie können für die Passwörter Buchstaben, Zahlen, Leerzeichen und die Zeichen #*,.;:._-+!$%&/|?{[()]}. verwenden. Es ist ausreichend, ein Passwort mit der Länge von maximal acht alphanumerischen Zeichen zu wählen. Alle darüber hinausgehenden Zeichen werden bei der normalerweise eingestellten Crypt-Verschlüsselungen ignoriert. Das Passwort müssen Sie zweimal eintragen, da es aus Sicherheitsgründen nicht angezeigt wird. So können die meisten Tippfehler verhindert werden.

Für die Benutzernamen und Passwörter gibt es Regeln. So darf der Benutzername nur aus Kleinbuchstaben, Ziffern, ``-'' und ``_'' bestehen und muß mit einem Buchstaben oder ``_'' beginnen. Dies ist aber nur eine Vorgabe von YaST. Linux selber erlaubt auch Großbuchstaben und andere Zeichen für den Benutzernamen.

Die Felder Vorname und Nachname sind eigentlich Spaß. Die entsprechenden Daten werden nur in das Kommentarfeld des Benutzers in der Datei /etc/passwd eingetragen.

Hinter dem Button Details verbergen sich weitere Einstellungsmöglichkeiten wie Home-Verzeichnis oder die Benutzerkennung (UID).

Jedem Benutzer bekommt eine eindeutige Benutzerkennung (UID) zugewiesen. Für normale Benutzer sollte eine UID größer als 499 verwendet werden, da die kürzeren UIDs vom System für spezielle Zwecke und Pseudo-Benutzernamen verwendet werden.

Benutzer können durch eine Mitgliedschaft in einer Gruppe weitere Rechte bekommen. Zu jedem Benutzer gehört eine Standardgruppe in der er Mitglied ist. In dem Feld Standardgruppe können Sie eine Gruppe aus der Liste aller in Ihrem System vorhandenen Gruppen wählen.

Zusätzliche Gruppenzugehörigkeiten können sie über das entsprechende Feld dem Benutzer zuweise. Hier wird angezeigt, zu welchen Gruppen der Benutzer noch gehört.

Der Benutzer kann auch ein Heimatverzeichnis (Home Directory) besitzen um seine Daten zu dort zu speichern. Normalerweise ist dies /home/BENUTZERNAME.

Für den Betrieb auf der Konsole (Textbetrieb) wird eine Login-Shell (der sog. Kommandozeileninterpreter) benötigt. Wählen Sie im entsprechenden Feld eine Shell aus der Liste der auf Ihrem System installierten Shells aus.


1.6.1.2 Benutzer bearbeiten und anlegen

Eine Übersicht der angelegten Benutzer liefert das Modul Benutzer bearbeiten und anlegen. Beim Start werden nur die normalen Benutzer angezeigt. Sie können sich aber auch die für interne Zwecke (z. B. Serverdienste) angelegten Systembenutzer anzeigen lassen. Durch anklicken der Spaltenüberschriften können Sie die Sortierung der Spalten ändern.

In diesem Fenster stehen Ihnen drei Funktionen zur Verfügung:

Wenn Sie den Button Hinzufügen betätigen landen Sie im gleichen Fenster wie in dem Module Neuen Benutzer anlegen.

Auch nachdem Sie den Button Bearbeiten landen Sie im gleichen Fenster wie in dem Module Neuen Benutzer anlegen. Nur daß die Felder nicht leer sondern mit den Daten des zu bearbeitenden Benutzers gefüllt sind.

Wenn Sie den markierten Benutzer löschen wollen, dann betätigen Sie einfach den Button Löschen. Sie werden dann noch gefragt, ob das Heimatverzeichnis des Benutzers auch mit gelöscht werden soll. Wenn Sie sich dann fürs Löschen entscheiden ist es vorbei mit dem Benutzer.

Vorbei? Nicht ganz. Die Änderungen werden erst dann ins System übertragen, wenn Sie mit dem Button Beenden das Modul verlassen. Das Verlassen über den Button Abbrechen läßt das System unberührt.


1.6.2 Wie erstelle, bearbeite und lösche ich Gruppen?

Um bestimmten Mengen von Benutzern mehr Rechte zu geben, wurden die Gruppen entwickelt. Benutzer können Mitglied in einer Gruppe sein und haben dann die Rechte, die der Gruppe zugewiesen wurde, zusätzlich zu Ihren eigenen Rechten.

Die Module Gruppen bearbeiten und anlegen und Neue Gruppen anlegen sind für die Verwaltung der Gruppen zuständig.


1.6.2.1 Neue Gruppen anlegen

Nach dem Start des Moduls Neue Gruppen anlegen erscheint ein Fenster mit Einträgen für den Gruppennamen, die Gruppenkennung, dem Passwort und den Mitgliedern für die Gruppe.

Der Name der Gruppe sollte nicht zu lang sein. Normalerweise werden 1-10 Zeichen verwendet. Ansonsten gelten die gleichen Regeln wie für die Benutzernamen.

Wie auch die Benutzer haben die Gruppe eine interne Kennung. Diese GID liegt irgendwo zwischen 0 und 60000. Einige der IDs werden bereits während der Installation vergeben. YaST2 gibt eine Warnmeldung aus, wenn Sie aus Versehen eine bereits vergebene verwenden.

Auch Gruppen haben ein Passwort. Falls die zugehörigen Benutzer der Gruppe sich beim Wechseln in diese neue Gruppe identifizieren sollen, können Sie dieser Gruppe ein Passwort zuteilen. Aus Sicherheitsgründen wird dieses Passwort hier nicht angezeigt. Dieses Eingabefeld muss nicht ausgefüllt werden. Um Tipfehler zu vermeiden, müssen Sie das Passwort zweimal eingeben.

Das Fenster Mitglieder dieser Gruppe zeigt eine Liste aller angelegten Benutzer an. Hier können Sie einstellen, wer Mitglieder dieser Gruppe sein soll.


1.6.2.2 Gruppen bearbeiten und anlegen

Das Modul Gruppen bearbeiten und anlegen zeigt eine große Ähnlichkeit mit dem Modul Benutzer bearbeiten und anlegen. Kein Wunder, es ist dasselbe Programm. Ein Klick auf Benutzerverwaltung und schon sind Sie in dem bereits bekannten Fenster. Dementsprechend gibt es hier auch drei Funktionen.

Beim Anlegen und Bearbeiten einer Gruppe landen Sie im gleichen Fenster wie im Modul Neue Gruppen anlegen.

Das Löschen von Gruppen gestaltet sich etwas schwieriger, da erst alle Benutzer aus der Gruppe entfernt werden müssen, bevor sich die Gruppe löschen läßt.

Auch hier gilt, alle Änderungen werden erst nach dem Verlassen des Moduls über den Button Beenden in das System übertragen.


Notizen:
Notizen:

Erste Schritte % latex2html id marker 1259
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Die Ausführung der folgenden Aufgaben ist wichtig für alle folgenden Aufgaben. Führen Sie daher bitte alles aus. Eventuell haben Sie die Aufgaben schon begleitend zum Unterricht bzw. zur Lektüre gemacht.

1
Ermitteln Sie die Hardwarekonfiguration des Rechners (Graphikkarte, Festplatte, Netzwerkkarte, Monitor).

2
Ermitteln Sie die IP-Nummer, die Subnetzmaske, den Nameserver, den Namen, und das Standardgateway des Rechners an dem Sie arbeiten.

3
Beginnen Sie mit der Installation durch YaST2. Beschreiben Sie ausführlich alle Schritte der Installation und erstellen Sie damit ein ``Kochrezept'' für die zukünftigen Installationen. Dabei soll folgendes berücksichtigt werden:
  1. Legen Sie folgende Partitionen an:
    /
    mit 5 GB als primäre Partition (ext3)
    /home
    mit 3 GB als logisches Laufwerk (ext3)
    swap
    mit 256 MB als logisches Laufwerk
  2. Für die Paketauswahl wählen Sie KDE mit Office.
  3. Richten Sie das Netzwerk mit den übergebenen Werten ein.

4
Sie besitzen einen Rechner, bei dem das CD-Laufwerk über einen Adaptec SCSI-Controller 2940 läuft. Auf welchem Moduldiskettenimage befindet sich der dafür benötigte Treiber?

5
Welche Installationsmöglichkeiten (Quelle) können verwendet werden?

6
Legen Sie mit YaST2 den Benutzer walter mit der UID 5101.8 und dem Paßwort hallo an.

7
Installieren Sie mit YaST2 aus der Serie ap das Paket pdksh.

8
Installieren Sie mit YaST2 die Pakete stat, rman, locate und koffice nach. In welchen Serien liegen sie und wofür sind sie da?

9
Speichern Sie die aktuelle Paketkonfiguration im Heimatverzeichnis von root (/root) unter dem Namen config_kap1.usr ab.

10
Löschen Sie die Pakete stat, rman, locate und koffice.

11
Laden Sie nun die alte Paketkonfiguration aus Aufgabe 9 ein. Überprüfen Sie, ob die gerade gelöschten Pakete nun wieder zur Installation vorgesehen sind.

12
Installieren Sie wieder die Pakete stat, rman, locate und koffice.

13
Auf dem zur Installation vorgesehenen Rechner mit zwei IDE-Festplatten (Master und Slave auf dem ersten Kontroller) soll Linux installiert werden. Auf der Master-Platte befindet sich eine Windows-Installation mit eine primären Partition, einer erweiterten Partition und einer logischen Partition. Auf der erweiterten Partition ist noch Platz für eine logische Partition. Auf der zweiten Festplatte befindet sich auch eine primäre Partition für Windows, die bestehen bleiben soll. Diese Partition ist die erste auf der Slave-Platte.

Für die Linux-Installation sind zusätzlich zu den Standardpartitionen noch Partitionen für das Verzeichnis /home und /var geplant. Skizzieren Sie den Aufbau des Partitionsschema unter Berücksichtigung einer sinnvollen Aufteilung und unter Verwendung der Linux-Partitionsbezeichnungen.


Notizen:


2. X-Window und KDE


2.1 X-Window-System

Bei der Installation von SuSE-Linux in der oben genannten Konfiguration wird standardmäßig das X-Window-System mit dem KDE installiert. Das X-Window-System kann am besten durch die Tools sax bzw. sax2 konfiguriert werden. Einstellungen über Graphikkarte, Monitor, Auflösung, Tastatur und Maus erfolgen hier.

Für die Bedienung und Arbeit am X-Window-System wird ein Window-Manager benötigt. Er kümmert sich in erster Linie darum, wie die Programmfenster am Bildschirm dargestellt und bedient werden. Er stattet die Fenster mit einer Titelleiste und Schaltflächen (Buttons, Menüs etc) aus und hilft bei deren Verwaltung (Verschieben, Größe ändern, Verkleinern zu Icon, Programmwechsel). Daneben stellen die meisten Windowmanager Menüs für die gängigen Programme bereit.

Diese elementaren Funktionen werden nicht vom X-Window-System zur Verfügung gestellt. Der Vorteil dieser Methode ist die große Flexibilität bei der Gestaltung der Oberfläche und damit der Benutzerschnittstelle. Das hat aber auch den Nachteil, daß jeder Anwender einen anderen Windowmanager benutzt und damit keine einheitliche Oberfläche existiert. Ein Problem, daß vor allem die Anfänger betrifft.

Die aktuelle SuSE-Distribution startet automatisch das X-Window-System für die graphische Anmeldung. Wird das System mit der Textkonsole gestartet, kann von der Textkonsole aus das X-Window-System mit dem Befehl startx gestartet werden.

Sollte das X-Window-System sich aufhängen, kann es mit der Tastenkombination STRG + ALT + BACKSPACE beendet werden.


2.2 KDE

Das KDE (KDE Desktop Enviroment) ist eine Sammlung von X-Programmen mit einem Window-Manager für das X-Window-System. Es stellt wie auch die anderen Windowmanager (z. B. Gnome oder fvwm) die Schnittstelle zwischen Benutzer und dem X-Window-System dar. Das KDE umfaßt dabei nicht nur die Konfigurationstools sondern auch eine Vielzahl von Standardprogrammen.

Noch einige Hinweise zu KDE.


2.2.1 KDE-Kontrollzentrum: KControl

Das KDE-Kontrollzentrum (KControl) ist das zentrale Konfigurationsprogramm fürs KDE. Grundlegende Eigenschaften wie Sprache, Desktopdesign, Sound u. a. können hier eingestellt werden.


2.2.2 KDE-Systemüberwachung: KSysGuard

Die KDE-Systemüberwachung zeigt Ihnen Informationen über das System und die darauf laufenden Prozesse an. Sie können im KDE-Menü über KDE/System/Systemüberwachung das Programm starten. Alternativ geben Sie über KDE/Befehl ausführen den Befehl ksysguard ein.

Das Programm präsentiert sich nach dem Start mit einem fast leeren Feld links und vier Graphen rechts. Warten Sie einen Moment und Sie sehen langsam von rechts die aktuellen Werte des Systems in die Graphen wandern.

2.2.2.1 Bedeutung der Graphen

2.2.2.1.1 CPU Load

Der Graph zeigt die Auslastung der CPU an. Drei Kurven können sie erkennen. Blau ist die Auslastung des Prozessors durch Benutzeraktionen, Rot die Auslastung durch Systemprozesse und Hellbraun die Auslastung durch Programme, die mit einer veränderten Priorität gestartet wurden.

2.2.2.1.2 Load Average 1min

Die auf eine Minute gemittelte Auslastung des Systems wird in diesem Graphen dargestellt. Da die CPU einem Programm immer die volle Leistung zur Verfügung stellt wenn nichts anderes anliegt, kommt es immer wieder zu CPU-Auslastungen von 100%. Dies können aber auch nur einzelne Peaks sein. Die über eine Minute gemittelte Auslastung gibt mehr Aufschlüsse über die Dauerbelastung eines Rechners.

2.2.2.1.3 Physical Memory

Die Auslastung des physikalischen Speichers ist ebenso wie die CPU-Leistung ein Kriterium für die Belastung des Rechners. Auf den ersten Blick scheint es so, als ob der Speicher, selbst wenn kaum Programme auf dem System laufen, völlig belegt ist. Das stimmt auch soweit, da der Kernel den freien Speicher als Cache für Laufwerkszugriffe verwendet. Es werden nämlich auch hier drei Graphen angezeigt. Blau zeigt den Speicherbedarf der Programme an, dunkles Orange den Bedarf des Puffers, und Hellbraun ist die Farbe für den Festplattencache.

2.2.2.1.4 Swap Memory

Neben dem physikalischen Speicher gibt es noch den Swap-Speicher, der als Auslagerungsdatei auf einem Datenträger realisiert ist. Beide zusammen ergeben den virtuellen Speicher, der dem System zur Verfügung steht. Hier heißt es genau zu beobachten. Denn wenn sich auf diesem Graphen viel tut, sollte man überlegen, ob nicht etwas mehr physikalischer Speicher dem Rechner gut tun würde.

2.2.2.2 Sensor-Browser

Im linken Fenster finden Sie für den lokalen Rechner die möglichen Sensoren, deren Werte Sie in den rechten Graphen anzeigen können. Einfach den Sensor anklicken und ihn in den entsprechenden Graphen ziehen. Einen Graphen können Sie übrigens löschen, indem Sie mit der rechten Maustaste darauf klicken und Anzeige entfernen betätigen.

Über die genaue Bedeutung der einzelnen Anzeige möchte ich jetzt nicht eingehen, da dies den Umfang dieses Kapitels sprengen würde.

2.2.2.3 Prozesstabelle

Neben der Systemauslastung können Sie sich auch die laufenden Prozesse (Programm bzw. Programmteile) anzeigen lassen. In einer Tabelle werden für die Prozesse der Name, die Prozessidentifikationsnummer (PID), die Systemauslastung durch Benutzer und das System, die Priorität des Prozesses, der Speicherbedarf, der ausführende Benutzer und der aufrufende Befehl angezeigt. Die Bedeutung der einzelnen Spalten ergibt sich im Laufe dieses Skriptes. Hier an dieser Stelle seien Sie nur erwähnt.

Sie können auch eine Auswahl der anzuzeigenden Prozesse treffen. Sie können sich entweder Alle Prozesse, die laufen, sich anzeigen lassen oder sich auf die Systemprozesse beschränken. Auch können Sie sich nur mit den Benutzer abgeben und sich die Benutzerprozesse anzeigen. Wenn Sie ganz genügsam sind, begnügen Sie sich mit Eigene Prozesse.

Wenn Sie wissen wollen, welcher Prozess durch welchen Prozess gestartet wurde, dann wählen Sie die Baum-Ansicht. Den neuesten Stand der Prozessliste können Sie mit dem Button Neu Aufbauen erzeugen. Der wichtigste Button ist wohl Beenden (kill), der durch seinen zweiten martialischen Namen schon anzeigt was er macht: Er tötet Prozesse. So können Prozesse, die sich sonst nicht mehr beenden lassen, gestoppt werden.

Wenn Sie ganz schnell an die Prozessliste herankommen wollen, dann betätigen Sie einfach die Tasten <STRG>+<ESC>. Es öffnet sich der KSysGuard mit der Ansicht der Prozeßtabelle. Nun können Sie schnell einen Prozess töten oder sich über das Verhalten der Prozesse informieren.

2.3 Wie mache ich was?

2.3.1 Wie lege ich ein Programmicon auf dem Desktop an?

Am einfachsten können Sie ein Icon anlegen, wenn das Programm schon einen Eintrag im KDE-Menü besitzt. Mit der linken Maustaste auf den Punkt klicken und mit gedrückter Maustaste auf den Desktop ziehen. Dort dann im nun erscheinenden Menü auf An diese Stelle kopieren klicken. Fertig.

Wollen Sie ein Programm auf dem Desktop verewigen, was nicht im Menü erscheint, dann müssen Sie wie folgt vorgehen.

  1. Rechte Maustaste auf den Desktop
  2. Menüpunkt Neu erstellen/Verknüpfung mit Programm ... anklicken
  3. Im Reiter Allgemein den Namen der Verknüpfung eingeben
  4. Durck Klicken auf das Zahnrad-Symbol können Sie ein Symbol für das Programm auswählen
  5. Im Register Ausführen geben Sie den Namen der Programmdatei an. Der Button Durchsuchen ermöglicht Ihnen das Dateisystem nach der Datei zu durchsuchen. Die meisten X-Window Programme finden Sie im Verzeichnis /usr/X11R6/bin, /opt und /opt/kde3/bin.
  6. Mit OK bestätigen und fertig ist das Icon.

2.3.2 Wie kann ich ein Programm unter einem anderen Benutzer ausführen?

Manchmal ist es notwendig bestimmte Aufgaben unter einer anderen Benutzerkennung auszuführen, wie z. B. das Editieren von Systemkonfigurationsdateien. Auf diese Dateien können Sie aber als normaler Benutzer nicht zugreifen. Normalerweise müßten Sie sich jetzt als Benutzer ausloggen und wieder als priviligierter Benutzer (z. B. root) sich wieder einloggen. Das es auch anders geht, haben Sie beim Einsatz von YaST gesehen. Nach Eingabe des root-Passworts konnten Sie ohne Ab- und Anmeldung mit YaST arbeiten. Verantwortlich dafür ist das Programm kdesu (2.3.3).

Wenn Sie nun ein Programm als root starten wollen, müssen Sie im X-Terminal oder über Befehl ausführen (<ALT>+<F2>) einfach kdesu PROGRAMM eingeben. Also für den Editor NEdit z. B.
kdesu nedit.

Wer den Befehl häufiger braucht, kann sich einen Menüeintrag oder Icon auf dem Desktop anlegen. In den Eigenschaften des Eintrags/Icons befindet sich der Abschnitt Als anderer Benutzer ausführen. Hier einfach die Checkbox anklicken und den gewünschten Benutzernamen eintragen.


2.3.3 KDE su

KDE su erlaubt es X-Window-Programme unter einer anderen Benutzeridentität auszuführen als die des aktuellen Benutzers. Es ist ein graphisches Frontend für su (8.1.2) unter dem KDE. Dabei werden die für das X-Window benötigten Einstellungen entsprechend gesetzt.
kdesu [OPTIONEN] [QT-OPTIONEN] [KDE-OPTIONEN] KOMMANDO

Optionen
--help Grundoptionen
--help-qt Spezielle Optionen zu Qt anzeigen
--help-kde Spezielle Optionen zu KDE anzeigen
--help-all Alle Optionen anzeigen
-c BEFEHL Auszuführender Befehl
-f DATEI
-u USER Benutzerkennung angeben (Standard: root)
-n Passwort nicht speichern
-s Dämon anhalten (Alle Passwörter gehen verloren)
-t Terminal-Ausgabe ermöglichen (keine Speicherung von Passwörtern)
-p PRIO Priorität setzen: 0 <= prio <= 100, 0 ist die niedrigste. (Standard: 50)
 

2.3.3.0.1 Beispiel

 
Um den Editor NEdit unter dem Benutzer wwwrun auszuführen, müssen Sie folgenden Befehl anwenden.
kdesu -u wwwrun -c nedit

2.4 KDE-Programme

Inzwischen gibt es eine Reihe von Programmen, die speziell für das KDE geschrieben worden sind. Sie basieren auf den KDE-Bibliotheken und benötigen diese zwingend.


2.4.1 Konquerer

Der Konquerer ist nicht nur der mit dem KDE mitgelieferte Browser sondern auch gleichzeitig der Dateimanager. Da er relativ neu ist, hat er noch längst nicht alle Internet-Standards (besonders JavaScript) völlig implantiert.


2.4.2 KEdit und KWrite

Auch an Editoren wurde beim KDE gedacht. KEdit und KWrite sind hierfür entwickelt worden. KEdit ist die einfache Version des Editors, während KWrite neben Syntaxhighlighting auch Suchen und Ersetzen mit regulären Ausdrücken beherrscht.


2.4.3 KMail

Das Programm KMail ist, wie der Name es schon sagt, der Mail-Client vom KDE.


2.4.4 KSnapshot

Für Dokumentationen ist es oft sinnvoll einen Bildschirmschnappschuß machen zu können. Diese Funktion wird durch das Programm KSnapshot zur Verfügung gestellt.


2.4.5 KOffice

KOffice ist das fürs KDE entwickelte Office-Paket. Es enthält schon viele Programme, die aber entwicklungsbedingt noch nicht so viele Funktionen besitzen und teilweise auch etwas instabil sind.


2.4.5.1 KWord

KWord ist die Textverarbeitung.


2.4.5.2 KSpread

Die Tabellenkalkulation des KDE-Office ist KSpread. Allerdings beherrscht es wenige Datenformate, so daß hier das StarCalc vorzuziehen ist, daß auch Excel-Formate lesen und speichern kann.

2.4.6 Weitere KDE-Programme


2.4.6.1 KNode

Newsgroups können mit dem Programm KNode bearbeitet werden. Das Lesen und Senden von Artikeln werden von diesem Client-Programm erledigt. In Abschnitt 6.2.2 wird genauer auf das Programm eingegangen.


2.4.6.2 KAB

Das KDE-Adressbuch ist eine kleine Datenbank zur Verwaltung von Adressdaten wie Telefonnummer, eMail, Adresse u.s.w. Dabei können auch mehrere Adressen für eine Person eingegeben werden. Das KAB kann auch als Adressbuch für KMail benutzt werden.


2.4.6.3 KOrganizer

Einen Zeitplaner enthält KDE ebenfalls. Mit dem KOrganizer können Sie Ihre Termine planen und sich z. B. rechtzeitig an den Hochzeitstag erinnern lassen.


2.4.6.4 KCalc

Auch das KDE bringt einen Taschenrechner mit, der sogar die Punkt-vor-Strich-Regel beherrscht.


2.4.6.5 KJots

KJots ist ein kleines Programm um einfache Notizbücher zu verwalten. Sie können mehrere Notizbücher verwalten, die wiederum benannte Seiten enthalten in denen dann einfache Texte eingegeben werden können.


2.4.6.6 KNotes

Sie kennen doch sicherlich die gelben PostIt-Notizzettel. Das Programm KNotes ermöglicht Ihnen virtuelle Klebezettel auf den Bildschirm zu kleben und dort Ihre Erinnerungshilfen zu plazieren.


2.4.6.7 KBear

Auch einen komfortablen FTP-Client gibt es unterm KDE. Zwar kann man auch mit Hilfe des Konquerers Daten per FTP hin- und herschieben. Das Programm KBear ist durch die Arbeitsweise mit zwei Fenstern und dem Site-Manager wesentlich komfortabler.


2.5 Weitere X-Window-Programme

Neben den KDE-Programmen gibt es auch weitere nützliche Applikationen, die teils auch die KDE-Bibliotheken benutzen.

Eine hilfreiche Unterstützung bei der Erstellung von HTML-Seiten bieten die Programme Bluefish und Quanta Plus. Windows Nutzern wird die Ähnlichkeit der beiden Programme zum HTML-Editor Phase V auffallen.

Ein weiterer schöner Editor ist NEdit. Er benötigt kein KDE und stellt doch wichtige Funktionen wie Syntax-Highlighting und `Suchen und Ersetzen' mit regulären Ausdrücken zur Verfügung.

Erste Schritte % latex2html id marker 1768
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Die Ausführung der folgenden Aufgaben ist wichtig für alle folgenden Aufgaben. Führen Sie daher bitte alles aus. Eventuell haben Sie die Aufgaben schon begleitend zum Unterricht bzw. zur Lektüre gemacht.

14
Legen Sie mit YaST2 den Benutzer willi (Willi Winzig) mit der UID 511 und dem Passwort winzig an. Geben Sie ihm zusätzlich noch die Mitgliedschaft in der Gruppe disk.

15
Loggen Sie sich aus und als willi wieder ein.

16
Konfigurieren Sie für willi das KDE so, daß der KDE-Menübutton angezeigt wird und das Eclipse-Design vom KDE verwendet wird.

17
Loggen Sie sich aus und als walter wieder ein.

18
Vor der ersten Verwendung einer Diskette muß diese formatiert werden. Dazu kann das Programm KFloppy verwendet werden. Unter welchem KDE-Menüpunkt ist es zu finden?

19
Formatieren Sie nun als walter die Diskette mit dem Dateisystem ext2 vollständig und geben Sie ihr den Namen ``Disk''.

20
Installieren Sie mit YaST2 aus der Gruppe Produktivität/Editoren/Andere das Paket pdksh. Wieviel Platz benötigt es und wofür ist es da?

21
In welchem Verzeichnis ist die Datei nedit installiert worden.

22
Legen Sie für das Programm nedit ein Menüeintrag unter KDE/Editoren. Das Programm soll durch die Tastenkombinations <Windows>+<n> gestartet werden. Testen Sie die Funktion.

23
Legen Sie für das Programm nedit ein Icon auf dem Desktop an. Testen Sie die Funktion.

24
Öffnen Sie mit NEdit die Datei /etc/motd. Tragen Sie statt des vorhandenen Spruchs ein: ``It's a good day to die ...'' und speichern Sie die Datei wieder ab. Was passiert und warum.

25
Um sich nicht ständig als root anmelden zu müssen um Systemdateien zu ändern, soll NEdit auch als root Benutzer arbeiten können. Wie gehen Sie vor?

26
Führen Sie die Aufgabe 11 mit dem neuen Icon durch.

27
Testen Sie den Erfolg, indem Sie sich auf Konsole 2 als walter einloggen. Hat es geklappt?

28
Kehren Sie zum KDE-Desktop zurück.

29
Beenden Sie alle geöffneten Programme.

30
Legen Sie folgende Tastaturkürzel für Programme an.

Persönliches Verzeichnis <Windows>+<E>
Konquerer (Webbrowser) <Windows>+<K>
KMail <Windows>+<M>
Yast2 <Windows>+<Y>
KCalc <Windows>+<T>

Testen Sie den Erfolg.

31
Starten Sie den Konquerer als Webbrowser. Gehen Sie zur Seite von GMX (http://www.gmx.de) und erstellen dort ein neues eMail-Konto.

32
Tragen Sie in das KDE-Adressbuch Ihren Nachbarn mit seinem GMX-Konto ein.

% latex2html id marker 1888
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

33
Welche Angaben benötigen Sie um mit KMail eMails von ihrem GMX-Konto lesen und versenden zu können?

34
Suchen Sie die Angaben auf der Webseite von GMX und notieren Sie sich die Daten auf einem KNotes-``Zettel''. Konfigurieren Sie KMail entsprechend den Angaben für das GMX-Konto.

35
Schicken Sie Ihrem Nachbarn als Test eine eMail unter Verwendung des KDE-Adressbuchs.

36
Rufen Sie mit KMail die von ihren Nachbarn zugesandten eMails ab.

37
Führen Sie mit YaST2 erneut ein Online-Update durch. Sind neue Programme installiert worden?


Notizen:


3. Arbeiten auf der Shell

 
Wie kastriert man einen Windows-Benutzer?
Man schneidet einfach das Mauskabel durch...
 

 
Anonymous
 

Das KDE und damit auch das X-Window-System sind nur auf Linux aufgesetzt und dienen als Benutzeroberfläche. Es gibt aber auch eine wesentlich rudimentärere Möglichkeit für den Benutzer mit Linux zu arbeiten: die Shell (engl. Muschel). Andere Begriffe für die Shell sind Kommandozeile, Textmodus oder Prompt.


3.1 Starten der Shell

Die Shell steht auf jedem Linux-System zur Verfügung. Es gibt zwei Möglichkeiten mit der Shell zu arbeiten. Unter dem X-Window-System gibt es sogenannte X-Terminals, die eine solche Shell emulieren. Daneben steht die sogenannte Linux-Konsole zur Verfügung, die im Textmodus der Graphikkarte arbeitet und auch ohne X-Window-System funktioniert.


3.1.1 Linux-Konsole

Die Linux-Konsole erreichen Sie aus dem X-Window-System, indem Sie die Tasten <STRG>+<ALT>+<F1> gleichzeitig drücken. Unter SuSE ist diese Konsole sehr bunt und mit einem Hintergrund versehen. Dies ist der Bildschirm, den Sie auch beim Booten des Systems gesehen haben. Die letzten Meldungen des Bootvorgangs stehen noch dort.

Welcome to SuSE Linux 9.0 (i586) - Kernel 2.4.21-199-athlon (tty1)
Mit dieser Meldung, die Ihnen die Distribution und das eingesetzte Betriebssystem mit Versionsnummer und Kernelversion anzeigt, begrüßt Sie das System. Danach steht der Login-Prompt mit Rechnername und wartet darauf, daß Sie sich an dieser Konsole anmelden.
defiant login:

Geben Sie nun Ihren Benutzernamen ein und schließen Sie die Eingabe mit der <Return>-Taste oder <Enter> ab. Sie werden nun nach Ihrem Passwort gefragt. Dies geben Sie ein und schließen die Eingabe wieder mit <Return> oder <Enter> ab. Wundern Sie sich nicht, denn Linux zeigt bei der Eingabe eines Passworts generell nichts an, noch nicht einmal die bei Windows üblichen Sternchen.

defiant login: walter
Password:

Have a lot of fun ...
walter@defiant:~>

Ein netter Spruch wird ausgegeben und der Prompt erscheint. Der Prompt zeigt an, daß die Shell bereit ist von Ihnen ein Kommando zu bekommen.

Wenn Sie SuSE benutzen, stehen Ihnen sechs von diesen Konsolen zur Verfügung. Mit den Tasten <ALT>+<F1> bis <ALT>+<F6> können Sie zwischen den Konsolen wechseln. Sie sehen, daß die Konsolen 2 bis 6 einen schwarzen Hintergrund besitzen und die gleiche Begrüßungsmeldung enthalten. Dabei weißt das tty in der Klammer immer auf die jeweilige Konsole hin.

Wechseln Sie wieder zur ersten Konsole (<ALT>+<F1>). Geben Sie dort am Prompt tty ein und schließen Sie die Eingabe mit <Return> oder <Enter> ab. Der Befehl zeigt Ihnen nun an, auf welcher Konsole sie sich befinden.

walter@defiant:~> tty
/dev/tty1

Um die Shell zu beenden, geben Sie das Kommando logout ein. Denken Sie daran, daß jedes Kommando erst dann ausgeführt wird, wenn Sie es mit <Return> oder <Enter> abschließen.

walter@defiant:~> logout


Welcome to SuSE Linux 8.0 (i386) - Kernel 2.4.18-4GB (tty1)


defiant login:

Nun ist die Konsole wieder zur Anmeldung bereit. Jetzt müssen Sie nur noch zum X-Window-System zurückkehren. Das X-Window-System ist praktisch die siebente Konsole. Sie können also mit <ALT>+<F7> dorthin gelangen.

Wenn Sie schon auf der Konsole sind, können Sie alle Konsolen bzw. Terminals durch die Kombination von <ALT> und den Funktionstasten <F1> bis <F6> erreichen. Da die <ALT>-Taste unter KDE bzw. X-Window eine andere Bedeutung hat, können Sie hier die Konsolen über eine Kombination von <STRG>+<ALT> und den Funktionstasten <F1> bis <F6> erreichen.


3.1.2 X-Terminal

Für den Benutzer eines X-Window-Systems gibt es auch eine andere Methode um auf der Shell arbeiten zu können. Sogenannte X-Terminals emulieren die Linux-Konsole und bringen ein Textfenster auf den Bildschirm. Zum Starten des beim KDE mitgelieferten X-Terminals konsole brauchen Sie in der Menüleiste nur auf den Monitor mit der Muschel klicken.

An diesem Terminal brauchen Sie sich nicht anzumelden, da Sie sich durch die graphische Oberfläche schon in einer angemeldeten Sitzung befinden. Es erscheint also sofort der Prompt. Testen Sie doch mal, was der Befehl tty hier für ein Ergebnis zeigt.

ole@defiant:~> tty
/dev/pts/1

Es gibt eine ganze Reihe von X-Terminals mit z. T. sehr unterschiedlichen Fähigkeiten.

3.1.2.1 xterm

xterm ist der Klassiker unter den X-Terminals. Er ist sehr einfach. Sie können ihn starten, in dem Sie den Menüpunkt Befehl ausführen ... aus dem KDE-Menü wählen oder mit den Tasten <ALT>+<F2> das Ausführungsfenster aufrufen. Dort können Sie durch Eingabe von xterm das Fenster starten.

Mit dem Befehl exit können Sie das xterm dann wieder verlassen oder Sie drücken auf den X-Button oben rechts in der Titelleiste.

3.1.2.2 konsole

Dieses Terminal ist Bestandteil des KDE-Desktops. Genau wie das xterm kann es durch den Menüpunkt Befehl ausführen ... durch Eingabe von konsole gestartet werden.

Im Gegensatz zu xterm kann konsole einiges mehr. So können z. B. mehrere unterschiedliche Konsolen in einem Fenster geöffnet werden. Es stehen dann auch spezielle Versionen zur Verfügung, die gleich dem Midnight-Commander, einen textbasierenden Dateimanager, starten oder als Benutzer root vorgeben.

Eine weitere Konsole öffenen Sie über den Button unten links mit der Beschriftung Neu. Sie können natürlich auch über die Menüleiste über das Menü Sitzung gehen.

Unter dem Menü Bearbeiten können Sie u. a. den Verlauf bearbeiten. Der Verlauf ist die Sammlung der Zeilen, die auf der Konsole gestanden haben. Natürlich werden nicht alle Zeilen gespeichert. Die Anzahl der zu speichernden Zeilen finden Sie unter Einstellungen/Verlaufspeicher. Voreingestellt sind 1000 Zeilen, was auch erst einmal reichen sollte. Sehr nützlich ist es, daß Sie den Verlauf auch nach einem Stichwort durchsuchen können.

Im Menü Ansicht können Sie die laufende Konsole (Sitzung) umbenennen und auf Aktivität oder Nichtaktivität überwachen lassen. Sie können Ihre Eingaben auch zu mehreren Sitzungen gleichzeitig senden und die Reihenfolge der Sitzungen in der Sitzungsleiste ändern.

Das Menü Einstellungen erlaubt individuelle Einstellungen für die konsole. Schriftgröße, Signale, Tastatur, Farben und Größe können hier eingestellt werden.

Unter Hilfe finden Sie, wie bei eigentlich jedem KDE-Programm Anleitungen und Informationen über das Programm.

3.2 Erste Befehle

Um die ersten Befehle auszuprobieren, starten Sie jetzt einfach mal die konsole. Der Prompt erscheint und die Shell ist bereit Ihre ersten Kommandos entgegenzunehmen. Es gibt übrigens nicht die Shell. Es gibt eine Reihe von Shells für Unix und Linux-Systeme. Die im Linux-Bereich am meisten verwendet Shell ist die Bash. Auch bei SuSE ist sie für den Benutzer voreingestellt. Ich werde mich in diesem Text auch hauptsächlich mit Ihr beschäftigen.

Der Prompt zeigt uns schon ein paar wichtige Informationen3.1. Welcher Benutzer ist auf welchem Rechner eingeloggt und in welchem Verzeichnis befindet er sich gerade. Das Verzeichnis ~ ist natürlich kein Verzeichnis. Es ist ein Alias oder Synonym für das Heimatverzeichnis des jeweiligen Benutzers. Das können wir auch schnell mal vergleichen. Geben Sie doch einfach mal hinter dem Prompt den Befehl pwd ein.

ole@defiant:~> pwd
/home/ole
ole@defiant:~>

Bei dem Benutzer ole steht das ~ für sein Heimatverzeichnis /home/ole. Die Heimatverzeichnisse der Benutzer heißen normalerweise wie ihre Besitzer und liegen im Verzeichnis /home. Es ist aber auch möglich die Heimatverzeichnisse anders zu benennen.

3.2.1 Anzeigen des Verzeichnisinhalts

Was ist denn in diesem Heimatverzeichnis an Dateien vorhanden? Auch hierfür müssen Sie einen Befehl eingeben. Das Kommando ls zeigt Ihnen den Inhalt des Verzeichnis an.

ole@defiant:~> ls
Documents  public_html

Zwei Dateien liegen bei einem frisch eingerichteten Benutzer bei SuSE 8.0 im Heimatverzeichnis. Haben Sie auf der graphischen Oberfläche schon gearbeitet, so können hier noch mehr Dateien liegen.

3.2.1.1 Ausführliche Informationen

Die Informationen, die der Befehl ls gibt, sind sehr spärlich. Wir können aber dem Kommando ls sagen, daß es mehr Informationen ausgeben soll. Dies erfolgt über eine Option. Andere Namen dafür sind Schalter oder Attribut. Die Option für eine ausführliche Ansicht heißt -l. Das Minus vor dem Buchstaben l (wie ``long'') zeigt an, daß es sich um eine Option handelt.

ole@defiant:~> ls -l
insgesamt 8
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 Documents
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 public_html

Wenn Sie sich nun die Ausgabe anschauen, dann wird Ihnen sicherlich nicht die Bedeutung jeder dieser Spalten klar sein. Schauen wir uns dazu die Ausgabe noch einmal genauer an.

Typ und Rechte Links Besitzer Gruppe Größe Änderungsdatum Name
drwxr-xr-x 2 ole users 4096 Sep 25 12:25 Documents
drwxr-xr-x 2 ole users 4096 Sep 25 12:25 public_html

3.2.1.1.1 Typ und Rechte

Die in dieser Spalte stehende Kombination aus Buchstaben und Minus-Zeichen gibt Auskunft über den Dateityp und die Rechte, die für diese Datei gelten. Das erste Zeichen steht für den Dateityp. Das d in dem Beispiel steht für ein Verzeichnis. Würde ein Minuszeichen dort stehen, dann handelt es sich um eine normale Datei. Die Tabelle unten zeigt ihnen die anderen möglichen Typen. Auf die Bedeutung der einzelnen Typen möchte ich hier nicht eingehen.

Zeichen Bedeutung
- gewöhnliche Datei
d Verzeichnis (directory)
c zeichenorientierte Gerätedatei (character device)
b blockorientierte Gerätedatei (block device)
p FIFO-Pipeline(named pipe)
l symbolischer Link (symbolic link)
s Netzwerksocket (socket)

Die restlichen neun Zeichen geben in Gruppen zu jeweils drei Zeichen die Rechte auf die Datei an. Dabei steht das r für ``Lesen'' (read), das w für ``Schreiben'' (write) und das x für ``Ausführen'' (execute). Die ersten drei Zeichen geben die Rechte für den Besitzer der Datei an. Die zweiten drei Zeichen geben Auskunft über die Rechte der Gruppe, die dieser Datei zugeordnet wurde und die letzten drei Zeichen geben dann an, was der Rest der Welt mit dieser Datei darf.

3.2.1.1.2 Links

Im Gegensatz zu Windows kann eine Datei bei Linux mehrere Namen besitzen. Bei Verzeichnissen sind das mindestens zwei. Einmal der Name selbst und dann im Verzeichnis die Datei mit dem Namen ``.''. Eine Datei wird erst dann gelöscht, wenn auch der letzte Name, bzw. Hardlink, wie die Dateinamen auch genannt werden, entfernt wurde.

3.2.1.1.3 Besitzer

Hier wird der Besitzer der Datei angegeben. Wenn ein Benutzer eine neue Datei anlegt, wird er automatisch der Besitzer der Datei.

3.2.1.1.4 Gruppe

Jeder Datei wird eine Gruppe von Benutzern zugeteilt, die extra Rechte bekommen können. Ist ein Benutzer in dieser Gruppe, so gelten die Rechte der Gruppe für ihn, wenn er nicht gerade der Besitzer der Datei ist.

3.2.1.1.5 Größe

Die Größe der Datei wird in dieser Spalte in Byte angegeben.

3.2.1.1.6 Änderungsdatum

Normalerweise zeigt der Befehl ls an dieser Stelle das Datum der letzten Änderung der Datei an. Durch bestimmte Attribute kann der Befehl auch dazu bewegt werden das Datum der Erstellung oder das Datum des letzten Zugriffs anzuzeigen.

3.2.1.1.7 Name

Hier steht der Name der Datei. Die Sortierung der aufgelisteten Dateien erfolgt lexikalisch. Beachten Sie dabei, daß die Shell zwischen Groß- und Kleinschreibung unterscheidet und die Großbuchstaben vor den Kleinbuchstaben einsortiert werden.

3.2.1.2 Versteckte Dateien

Wie Sie oben gesehen haben, enthält das Heimatverzeichnis scheinbar nur zwei Dateien bzw. Verzeichnisse. Das dem nicht so ist, zeigt der Einsatz der Option -a.

ole@defiant:~> ls
Documents  public_html
ole@defiant:~> ls -a
.           .Xresources    .emacs   .profile   .xim               .xtalkrc
..          .bash_history  .exrc    .urlview   .xinitrc           Documents
.Xdefaults  .bashrc        .kermrc  .xcoralrc  .xserverrc.secure  public_html
.Xmodmap    .dvipsrc       .muttrc  .xemacs    .xsession

Anstatt zwei werden nun 23 Dateien angezeigt. Diese neu angezeigten Dateien bezeichnet man als Versteckte Dateien. Sie werden bei normalen Dateioperationen nicht berücksichtigt. Diese versteckten Dateien finden Sie auch in anderen Betriebssystemen. Dort wird durch ein Attribut der Datei angezeigt, ob eine Datei versteckt ist oder nicht. Wenn Sie sich die Liste der Dateien im obigen Beispiel noch einmal genau anschauen, finden Sie recht schnell die Gemeinsamkeit der versteckten Dateien heraus.

Dateien, deren Name mit einem Punkt beginnt, bezeichnet man als Versteckte Dateien. Sie werden bei normalen Dateioperationen nicht berücksichtigt.

Eine besondere Bedeutung haben die Dateien `.' und `..'. Sie sind Bestandteil des Verzeichnisses. Der Name `.' ist ein weiterer Link für das Verzeichnis in dem sich diese Datei befindet. Dagegen verweist der Name .. auf das Elternverzeichnis des aktuellen Verzeichnis. Wenn Sie das obige Beispiel als Grundlage nehmen, so ist . gleichzusetzen mit /home/ole und .. mit /home.

Zwei Optionen können auch miteinander kombiniert werden. Eine ausführliche Liste aller Dateien bekommen Sie durch die Kombination der Optionen -l und -a.

ole@defiant:~> ls -a -l
insgesamt 92
drwxr-xr-x    5 ole    users        4096 Sep 25 12:25 .
drwxr-xr-x    9 root   root         4096 Sep 25 12:25 ..
-rw-r--r--    1 ole    users        5742 Sep 25 12:25 .Xdefaults
-rw-r--r--    1 ole    users        1305 Sep 25 12:25 .Xmodmap
lrwxrwxrwx    1 root   root           10 Sep 25 12:25 .Xresources -> .Xdefaults
-rw-------    1 ole    users           0 Sep 25 12:25 .bash_history
-rw-r--r--    1 ole    users        1691 Sep 25 12:25 .bashrc
-rw-r--r--    1 ole    users         208 Sep 25 12:25 .dvipsrc
-rw-r--r--    1 ole    users        1637 Sep 25 12:25 .emacs
-rw-r--r--    1 ole    users        1124 Sep 25 12:25 .exrc
-rw-r--r--    1 ole    users         164 Sep 25 12:25 .kermrc
-rw-r--r--    1 ole    users        2286 Sep 25 12:25 .muttrc
-rw-r--r--    1 ole    users         952 Sep 25 12:25 .profile
-rw-r--r--    1 ole    users         311 Sep 25 12:25 .urlview
-rw-r--r--    1 ole    users        7913 Sep 25 12:25 .xcoralrc
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 .xemacs
-rw-r--r--    1 ole    users        3407 Sep 25 12:25 .xim
-rwxr-xr-x    1 ole    users        2324 Sep 25 12:25 .xinitrc
-rw-r--r--    1 ole    users        1101 Sep 25 12:25 .xserverrc.secure
-rwxr-xr-x    1 ole    users        2804 Sep 25 12:25 .xsession
-rw-r--r--    1 ole    users         119 Sep 25 12:25 .xtalkrc
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 Documents
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 public_html

Wer es kürzer mag, kann die Buchstaben auch zusammenziehen. Dabei ist es völlig egal, ob Sie -al oder -la schreiben.

ole@defiant:~> ls -al
insgesamt 92
drwxr-xr-x    5 ole    users        4096 Sep 25 12:25 .
drwxr-xr-x    9 root   root         4096 Sep 25 12:25 ..
-rw-r--r--    1 ole    users        5742 Sep 25 12:25 .Xdefaults
-rw-r--r--    1 ole    users        1305 Sep 25 12:25 .Xmodmap
...

3.2.1.3 Parameter und Jokerzeichen

Der ls Befehl kann nicht nur den Inhalt des aktuellen Verzeichnis anzeigen. Wenn Sie z. B. den Inhalt des Verzeichnis Documents sehen wollen, geben Sie folgendes an.

ole@defiant:~> ls -al Documents
insgesamt 12
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 .
drwxr-xr-x    5 ole    users        4096 Sep 25 12:25 ..
-rw-r--r--    1 ole    users        1106 Sep 25 12:25 .directory

Der Name des Verzeichnis Documents bezeichnet man als Parameter des Befehls ls. Die Angabe des Verzeichnisnamens erfolgte hier relativ zum Arbeitsverzeichnis. Um das Elternverzeichnis des Arbeitsverzeichnis anzuzeigen können wir den Dateinamen .. verwenden.

ole@defiant:~> ls ..
conny  lost+found  ole  perl  vnc  walter  willi

Um zur Wurzel zu gelangen müssen Sie sogar noch ein Verzeichnis weiter im Verzeichnisbaum hochgehen.

ole@defiant:~> ls ../..
bin   cdrom  dvd  floppy  lib         media  opt     proc  sbin  usr  windows
boot  dev    etc  home    lost+found  mnt    pcmcia  root  tmp   var

Sie können die Verzeichnisse auch direkt adressieren, wenn Sie den Verzeichnisnamen mit einem Slash / beginnen lassen. Jetzt wird nämlich nicht vom aktuellen Arbeitsverzeichnis aus gesehen, sondern von der Dateiwurzel.

ole@defiant:~> ls /
bin   cdrom  dvd  floppy  lib         media  opt     proc  sbin  usr  windows
boot  dev    etc  home    lost+found  mnt    pcmcia  root  tmp   var
ole@defiant:~> ls /home
conny  lost+found  ole  perl  vnc  walter  willi
ole@defiant:~> ls /home/ole
Documents  public_html

Neben den Verzeichnissen können Sie auch eine Auswahl unter den Dateien treffen, die Sie sich anzeigen lassen wollen. Hilfreich sind dabei die sogenannten Jokerzeichen oder Wildcards.

Dazu schauen Sie sich doch mal das Verzeichnis /etc an, in dem sich die Konfigurationsdateien des Linux-Systems befinden.

ole@defiant:~> ls /etc
DIR_COLORS            inittab               php.ini
HOSTNAME              inputrc               pnm2ppa.conf
Muttrc                insserv.conf          powerd.conf
SuSE-release          ioctl.save            ppp
...

Es werden sehr viele Dateien angezeigt. Sie können die Anzahl der angezeigten Dateien verringern, wenn Sie andere Kriterien für die Auswahl stellen. So könnten Sie sich nur die Dateien anzeigen lassen, die mit dem Buchstaben ``a'' beginnen.

ole@defiant:~> ls /etc/a*
/etc/a2ps-site.cfg  /etc/aliases       /etc/at.deny
/etc/a2ps.cfg       /etc/aliases.db    /etc/auto.master
/etc/adjtime        /etc/asound.state  /etc/auto.misc

/etc/alsa.d:
emu10k1  sbawe

Der Asterisk ``*'' steht für eine beliebige Anzahl beliebiger Zeichen und das Fragezeichen ``?'' steht für ein beliebiges Zeichen. Auffällig an dem Beispiel oben ist, daß nicht nur der Name des Verzeichnis angegeben wird, sondern auch der Inhalt. Dies ist eine der Eigenschaften von ls. Ist ein Verzeichnis ein Ziel, dann wird der Inhalt des Verzeichnis angezeigt. Mit der Option -d kann dies unterbunden werden.

ole@defiant:~> ls -d /etc/a*
/etc/a2ps-site.cfg  /etc/aliases     /etc/asound.state  /etc/auto.misc
/etc/a2ps.cfg       /etc/aliases.db  /etc/at.deny
/etc/adjtime        /etc/alsa.d      /etc/auto.master
ole@defiant:~> ls -ld
drwxr-xr-x    5 ole    users        4096 Sep 25 12:25 .

Dies wirkt, wie Sie oben sehen, auch beim aktuellen Arbeitsverzeichnis. Es wird nur die Information über das aktuelle Verzeichnis angezeigt und nicht über die enthaltenen Dateien.


3.2.1.4 Inodes

Wie schon oben erwähnt, kann eine Datei mehrere Namen (Links) besitzen. Dies wird dadurch ermöglicht, daß die Benennung der Daten im System über eine sogenannte Inode-Nummer erfolgt. Als Inode bezeichnet man den Platz, an dem die Informationen über die Datei gespeichert werden. Das Betriebssystem merkt sich also nicht den Namen der Datei sondern die Inode-Nummer. Die Namen sind nur für uns ``dumme'' Benutzer, die sich mehr unter dem Namen ``amaretti.rezept.txt'' vorstellen können, als unter einer Inode-Nummer ``45312''. Die Verzeichnisse sind im Prinzip nichts anderes als Tabellen, die den Zusammenhang zwischen Dateinamen und der Inode-Nummer herstellen.

Die Inode-Nummer können sie sich mit ls unter Verwendung der Option -i anzeigen lassen.

ole@defiant:~> ls -i
   1095 Documents     1097 public_html
ole@defiant:~> ls -i /home
   1074 conny         31873 ole    112382 vnc      286867 willi
     11 lost+found   223209 perl   207194 walter


3.2.1.5 Hilfe

Es gibt noch viel mehr Optionen für ls, als die ich Ihnen gerade vorgestellt habe. Um eine kurze Übersicht über die Funktion und vorhandenen Optionen eines Befehls zu erhalten, können Sie den Shellbefehl mit der Option --help aufrufen. Mit dem doppelten Minuszeichen wird bei der letzten Option dem Befehl signalisiert, daß es sich nicht um die einzelnen Optionen -h, -e, -l und -p handelt, sondern um eine Option mit dem langen Namen help.

ole@defiant:~> ls --help
Benutzung: ls [OPTION]... [DATEI]...
Auflistung von Informationen der DATEIen (Standardvorgabe ist das momentane
Verzeichnis). Alphabetisches Sortieren der Einträge, falls weder -cftuSUX
noch --sort angegeben.

  -a, --all                  Einträge, die mit . beginnen, nicht verstecken.
  -A, --almost-all           Keine Anzeige implizierter . und ..
  -b, --escape               Ausgabe octaler Repräsentation für nicht-druck-
...

Natürlich ist der Hilfetext etwas länger als die Konsolenhöhe. Auf der Konsole können Sie ohne Probleme scrollen (wenn es nicht mehr als 1000 Zeilen sind). Damit die Anzeige nicht durchscrollt, sondern seitenweise anzeigt, können Sie einen sogenannten Pager benutzen. Ein solcher Pager ist der Befehl more. Sie leiten einfach die Ausgabe des Befehls mit dem Zeichen | an den Pager weiter.

ole@defiant:~> ls --help | more
ole@defiant:~> ls /etc | more
ole@defiant:~> ls -l / | more
ole@defiant:~> ls /dev | more

Mit der Leertaste blättern Sie die Seiten des Pagers more durch. Erreicht der Pager das Ende des Textes bzw. der Ausgabe, so beendet er sich automatisch.

3.2.1.6 Zusammenfassung

Der Befehl ls zeigt die in den Verzeichnissen enthaltenen Dateien an. Mit Optionen kann man die Art und Weise beeinflussen, wie Befehle funktionieren. Die Parameter geben an, womit gearbeitet werden soll.

Die Optionen -aldi sollten sie sich für den Befehl ls merken.

-a Zeigt auch die versteckten Dateien an (-all)
-l Zeigt ausführliche Liste zu den Dateien an (long)
-d Zeigt Verzeichnis anstatt Inhalt an (-directory )
-i Zeigt Inodes an (-inode)
--help Zeigt die Hilfe für den Befehl an

3.2.2 Erstellen und Löschen von Verzeichnissen und Dateien

Ein Verzeichnissystem macht nur Sinn, wenn es Dateien und Verzeichnisse enthält. Fürs Erstellen und Löschen von Dateien und Verzeichnissen stehen auf der Shell viele Programme zur Verfügung.

3.2.2.1 Erstellen

Eine einfache Art und Weise eine leere Datei zu erstellen ist der Befehl touch.

ole@defiant:~> touch testdatei
ole@defiant:~> ls -l
insgesamt 8
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 Documents
drwxr-xr-x    2 ole    users        4096 Sep 25 12:25 public_html
-rw-r--r--    1 ole    users           0 Sep 26 14:37 testdatei

Eigentlich soll der Befehl touch die Zeit der letzten Änderung und des letzten Zugriffs auf die aktuelle Zeit stellen. Existiert die angegebene Datei nicht, dann wird einfach eine neue Datei erstellt.

Ein neues Verzeichnis zu erstellen ist ebenso einfach. Der Befehl heißt hier mkdir.

ole@defiant:~> mkdir test
ole@defiant:~> ls
Documents  public_html  test  testdatei
ole@defiant:~> mkdir beruf hobby
ole@defiant:~> ls
Documents  beruf  hobby  public_html  test  testdatei

Sie müssen sich beim Befehl mkdir, wie auch bei touch, nicht auf einen Parameter beschränken. Sie können ruhig mehrere Dateien bzw. Verzeichnisse angegeben, die erstellt werden sollen.

Auch eine Angabe des Verzeichnis mit seinen Elternverzeichnissen ist möglich. Allerdings müssen diese vorher existieren.

ole@defiant:~> cd /
ole@defiant:/> mkdir /home/ole/test/neuerOrdner
ole@defiant:/> ls /home/ole/test
neuerOrdner

3.2.2.2 Löschen

Was man erstellt, muß man auch löschen können. Dies gilt für Verzeichnisse wie auch für Dateien. Der Befehl rmdir (remove directory) sorgt für das Löschen von Verzeichnissen.

ole@defiant:~> rmdir beruf
ole@defiant:~> rmdir test
rmdir: »test«: Das Verzeichnis ist nicht leer

Allerdings löscht rmdir nur leere Verzeichnisse. Sobald sich nur eine Datei oder ein Verzeichnis darin befindet, wird das Löschen des Verzeichnis verweigert.

Dateien entledigt man sich dagegen durch den Befehl rm (remove).

ole@defiant:~> rm testdatei
ole@defiant:~> rm test
rm: »test« ist ein Verzeichnis

Mit Verzeichnissen tut sich rm dagegen schwer und verweigert das Löschen mit einem entsprechenden Hinweis.

Dies ist auch die normale Arbeitsweise der Shellkommandos. Klappt ein Befehl, so erscheint in der Regel kein Kommentar, sondern der Prompt fordert den Benutzer auf wieder tätig zu werden. Nur wenn Fehler aufgetreten sind, melden sich die Kommandos noch einmal beim Benutzer.

Sie können aber rm überreden auch Verzeichnisse zu löschen. Mit der Option -r (recursive) löscht rm Verzeichnisse mit ihrem Inhalt.

ole@defiant:~> rm -r test

Manchmal fragt rm auch nach, ob eine Datei gelöscht werden soll. Ist einem das zu lästig, gerade wenn ganze Verzeichnisstrukturen gelöscht werden sollen, dann sorgt der Schalter -f für Ruhe. Er sorgt dafür, daß die Dateien ohne Nachfrage gelöscht werden.

Sie sollten aber mit dem Befehl vorsichtig sein. Stellen Sie sich doch einfach mal vor was passiert, wenn der Administrator folgendes eingibt:

defiant:~$ rm -rf /

3.2.2.3 Der Editor vi

Der Editor, den Sie auf jedem Linux/Unix-System vorfinden ist der vi oder einer seiner Klone. Seine Benutzerführung ist etwas eigenwillig und gewöhnungsbedürftig. Da er aber auf jedem System vorhanden ist, sollten Sie sich doch mit ihm etwas auskennen.

Eine Datei zum Bearbeiten rufen Sie ganz einfach auf, indem Sie den Namen hinter dem Befehl vi schreiben.

ole@defiant:~> vi meinedatei

Existiert die Datei nicht, so geht der vi von einer leeren neuen Datei aus, wie sie auch in der Statuszeile ganz unten sehen können.

"meinedatei" [Neue Datei]                                     0,0-1       Alles

Der vi besitzt verschieden Modi für die Bearbeitung von Dokumenten. Beim Start landen Sie im Bearbeitungsmodus, der spezielle Funktionen zur Bearbeitung der Dokumente zur Verfügung stellt. Diese Funktionen werden nicht wie von den meisten Editoren gewohnt über ein Menü zur Verfügung gestellt, sondern durch Tastaturkürzel.

Sie müssen, wenn Sie Text schreiben wollen, in den Eingabemodus wechseln. Dazu drücken Sie im Bearbeitungsmodus die Taste <I>. Die Statuszeile zeigt nun EINFÜGEN bzw. INSERT an.

-- EINFÜGEN --                                                0,1         Alles

Hier können Sie nun Text eingeben, mit den Richtungstasten sich durch den Text bewegen und mit der Taste <ENTF> bzw. <DEL> Zeichen rechts vom Cursor löschen.

Um wieder in den Bearbeitungsmodus zu wechseln, drücken Sie einfach die Taste <ESC>. Um sicher zu gehen, können Sie die Taste auch mehrfach drücken. vi quittiert das dann mit einem Piepton.

Im Bearbeitungsmodus können Sie das Zeichen unter dem Cursor entweder wie im Eingabemodus mit der Taste <DEL> löschen oder indem Sie die Taste <X> betätigen. Es gibt aber auch weiter reichende Löschkommandos im Zusammenhang mit der Taste <D>. So löscht <D> <W> die Zeichen bis zum Wortende inklusive des folgenden Leerzeichens. Mit <D> <E> löscht er ebenfalls den Rest vom Wort, ohne aber das Leerzeichen mitzunehmen. Mit der Kombination d$ (<D> <SHIFT>+<4>) löscht er den Text vom Cursor bis zum Zeilenende. Und um die ganze Zeile, in der sich der Cursor befindet, zu löschen, betätigen Sie einfach zweimal die Taste <D> (<D> <D>). Sie können auch durch das Voranstellen einer Zahl vor das Kommando angeben, wie oft das Kommando ausgeführt werden soll. So können Sie mit <4> <D> <D> vier Zeilen löschen oder mit <3> <D> <W> die drei Worte rechts vom Cursor.

Die Mehrfachausführung klappt auch mit dem Eingabemodus. Einfach vorm Einschalten des Eingabemodus eine Zahl eintippen. Nach Beendigung des Eingabemodus wird das frisch Eingegebene mehrfach ausgegeben. So können Sie z. B. mit der Tastenkombination <7> <5> <I> <-> <ESC> 75 Minus-Zeichen in den Text einfügen.

Vom Bearbeitungsmodus können Sie auch einen Kommandomodus aufrufen. Dies erfolgt durch den Doppelpunkt (<SHIFT>+<:>). Der Doppelpunkt erscheint in der unteren Statuszeile und Sie können dann weitere Befehle eintippen, die Sie mit der <RETURN>-Taste abschließen.

:q Beendet den vi
:q! Beendet den vi ohne Nachzufragen
:wq Beendet den vi und speichert das Dokument vorher

Bei Linux wird der vi-Klon vim mitgeliefert und durch den Befehl vi ausgeführt. Mit dem Befehl vimtutor erhalten Sie ein kleines Tutorial mit Übungen zur Bedienung des vim.

3.2.3 Kopieren, Verschieben und Umbenennen von Dateien

Für das Kopieren, Verschieben und Umbenennen von Dateien brauchen wir hauptsächlich zwei Befehle: cp (copy) und mv (move).

3.2.3.1 Kopieren

Um eine Kopie einer Datei zu erstellen benutzen Sie den Befehl cp. Der Befehl braucht eine Datei, die es zu kopieren gilt, (Quelldatei) und den neuen Namen der Datei (Zieldatei).

ole@defiant:~/test> vi themenvorschlag.txt
ole@defiant:~/test> ls -l
insgesamt 4
-rw-r--r--    1 ole      users        2123 Okt  9 10:25 themenvorschlag.txt
ole@defiant:~/test> cp themenvorschlag.txt themenvorschlag.txt.alt
ole@defiant:~/test> ls -l
insgesamt 8
-rw-r--r--    1 ole      users        2123 Okt  9 10:25 themenvorschlag.txt
-rw-r--r--    1 ole      users        2123 Okt  9 10:26 themenvorschlag.txt.alt
ole@defiant:~/test>

So kann einfach eine Sicherungskopie einer Datei erstellt werden. In den meisten Fällen werden aber eine oder mehrere Dateien in ein anderes Verzeichnis kopiert, wie z. B. in /floppy für die Diskette. In diesem Fall wird anstatt der Zieldatei ein Zielverzeichnis angegeben. Erkennt der Befehl cp, daß das Ziel ein existierendes Verzeichnis ist, dann kopiert er die Datei ohne den Namen zu ändern in das Verzeichnis. Existiert kein Verzeichnis, so wird die Angabe als Dateiname verstanden und die Datei dementsprechend kopiert. Übrigens: cp überschreibt in der normalen Einstellung existierende Dateien gnadenlos.

ole@defiant:~/test> mkdir backup
ole@defiant:~/test> ls -l backup/
insgesamt 0
ole@defiant:~/test> cp themenvorschlag.txt backup
ole@defiant:~/test> ls -l backup/
insgesamt 4
-rw-r--r--    1 ole      users        2123 Okt  9 10:40 themenvorschlag.txt

Sie können auch mehrere Dateien zum Kopieren angegeben, wenn Ihr Ziel ein Verzeichnis ist.

ole@defiant:~/test> cp /etc/enscript.cfg /etc/esd.conf backup
ole@defiant:~/test> ls -l backup
insgesamt 16
-rw-r--r--    1 ole      users        5983 Okt  9 10:43 enscript.cfg
-rw-r--r--    1 ole      users          77 Okt  9 10:43 esd.conf
-rw-r--r--    1 ole      users        2123 Okt  9 10:40 themenvorschlag.txt

Wenn Sie das aktuelle Verzeichnis als Ziel angeben wollen, machen Sie das einfach durch den Punkt `.'. Genauso können Sie das Elternverzeichnis mit `..' als Ziel angeben. Um zu sehen, welche Dateien kopiert worden sind, benutzen Sie den Befehl cp einfach mit dem Schalter -v (verbose). Diese auch als ``Blubberschalter'' bekannte Option veranlaßt den Befehl dazu ausführlich über seine Tätigkeit zu berichten. Sie werden bei vielen Shell-Befehlen die Option -v wiederfinden. Sie können natürlich auch für die Liste der zu kopierenden Dateien die Jokerzeichen wie den Asterisk ``*'' verwenden.

ole@defiant:~/test> cp -v /etc/f* .
»/etc/fam.conf« -> »./fam.conf«
»/etc/fb.modes« -> »./fb.modes«
»/etc/fdprm« -> »./fdprm«
»/etc/filesystems« -> »./filesystems«
»/etc/fstab« -> »./fstab«
»/etc/ftpusers« -> »./ftpusers«

3.2.3.2 Verschieben und Umbenennen

Der Befehl mv arbeitet im Prinzip genau wie der Befehl cp. Allerdings existiert die Quelldatei bzw. Quelldateien danach nicht mehr. Im Prinzip ist ein Verschieben und Umbenennen nichts anderes als eine Änderung des Verzeichniseintrags. Nur wenn zwischen zwei Partitionen verschoben werden soll, muß die Datei erst kopiert und dann die alte Datei gelöscht werden. Dadurch ist Verschieben im Normalfall schneller als Kopieren.

Um also eine Datei umzubennen benutze ich den Befehl mv unter Angabe von altem und neuem Namen.

ole@defiant:~/test> ls -l
insgesamt 12
drwxr-xr-x    2 ole      users        4096 Okt  9 10:43 backup
-rw-r--r--    1 ole      users        2123 Okt  9 10:25 themenvorschlag.txt
-rw-r--r--    1 ole      users        2123 Okt  9 10:26 themenvorschlag.txt.alt
ole@defiant:~/test> mv themenvorschlag.txt.alt themenvorschlag.old
ole@defiant:~/test> ls -l
insgesamt 12
drwxr-xr-x    2 ole      users        4096 Okt  9 10:43 backup
-rw-r--r--    1 ole      users        2123 Okt  9 10:26 themenvorschlag.old
-rw-r--r--    1 ole      users        2123 Okt  9 10:25 themenvorschlag.txt

Um die Syntax eines Shell-Kommandos kurz und knapp darzustellen, werden Syntaxregeln mit einer bestimmten Symbolik verwendet.

Der mv Befehl kann als Syntaxregel so ausgedrückt werden:

mv ALTERNAME NEUERNAME

Die groß geschriebenen Worte stehen für den Wert, der dort eingetragen werden muß.

Ähnlich wie bei cp führt die Angabe eines existierenden Verzeichnis als Ziel dazu, daß die Datei nicht umbenannt, sondern in das Verzeichnis unter Beibehaltung des Namens verschoben wird.

ole@defiant:~/test> mv themenvorschlag.old backup
ole@defiant:~/test> ls -l
insgesamt 8
drwxr-xr-x    2 ole      users        4096 Okt  9 11:09 backup
-rw-r--r--    1 ole      users        2123 Okt  9 10:25 themenvorschlag.txt
oole@defiant:~/test> ls -l backup
insgesamt 8
-rw-r--r--    1 ole      users        2123 Okt  9 10:26 themenvorschlag.old
-rw-r--r--    1 ole      users        2123 Okt  9 10:40 themenvorschlag.txt

Wenn Sie ein Verzeichnis als Ziel angeben, können Sie nicht nur eine Datei verschieben, sondern eine ganze Liste von Dateien.

ole@defiant:~/test> touch datei1.txt datei2.txt datei3.txt
ole@defiant:~/test> ls -l
insgesamt 8
drwxr-xr-x    2 ole      users        4096 Okt  9 11:10 backup
-rw-r--r--    1 ole      users           0 Okt  9 11:12 datei1.txt
-rw-r--r--    1 ole      users           0 Okt  9 11:12 datei2.txt
-rw-r--r--    1 ole      users           0 Okt  9 11:12 datei3.txt
-rw-r--r--    1 ole      users        2123 Okt  9 10:25 themenvorschlag.txt
ole@defiant:~/test> mv d*.txt backup
ole@defiant:~/test> ls -l backup
insgesamt 8
-rw-r--r--    1 ole      users           0 Okt  9 11:12 datei1.txt
-rw-r--r--    1 ole      users           0 Okt  9 11:12 datei2.txt
-rw-r--r--    1 ole      users           0 Okt  9 11:12 datei3.txt
-rw-r--r--    1 ole      users        2123 Okt  9 10:26 themenvorschlag.old
-rw-r--r--    1 ole      users        2123 Okt  9 10:40 themenvorschlag.txt

Die Kommandosyntax kann durch folgende Regeln ausgedrückt werden:

mv DATEILISTE ZIELVERZEICHNIS

oder auch als

mv DATEI1 [DATEI2 [DATEI3 [...]]] ZIELVERZEICHNIS

Die eckigen Klammern zeigen an, daß der entsprechende Teil optional ist und nicht unbedingt notwendig.

Auch bei mv gibt es den ``Blubberschalter'' -v und noch weitere Optionen. Die Syntaxregel unter Berücksichtigung der Optionen lautet dann:

mv [-v] DATEILISTE ZIELVERZEICHNIS

oder auch

mv [OPTIONEN] DATEILISTE ZIELVERZEICHNIS

3.3 Informationen und Hilfe

Im Gegensatz zu der graphischen Oberfläche kann auf der Shell nicht einfach durch durchgucken der Menüpunkte der richtige Befehl gefunden werden. Linux stellt Informationen und Hilfen zur Verfügung.


3.3.1 Hilfe im Befehl

Fast jeder Befehl und somit auch die Shell, die ja auch nichts anderes als ein Programm ist, stellt eine eigene Kurzhilfe zur Verfügung.

In der Bash gibt es eingebaute Befehle, die nicht als eigenständige Programme vorliegen. Eine Übersicht der Befehle gibt der Befehl help . Genauere Informationen zu einem Befehl bekommen Sie dann durch Eingabe des Befehls hinter help.

ole@defiant:~/test> help pwd
pwd: pwd [-PL]
    Print the current working directory.  With the -P option, pwd prints
    the physical directory, without any symbolic links; the -L option
    makes pwd follow symbolic links.

Bei den meisten anderen Befehlen kommen Sie mit dem Schalter --help oder -h weiter. Diese Option veranlaßt den Befehl dazu, eine kurze Erklärung seiner Funktion und eine Übersicht über seine Optionen zu geben.

ole@defiant:~/test> touch --help
Benutzung: touch [OPTION]... DATEI...
   oder:   touch [-acm] MMDDhhmm[YY] DATEI... (veraltet)
Aktualisieren der Zugriffs- und Modifikationszeiten jeder DATEI auf die
momentane Zeit.

  -a                        Nur die Zugriffszeit ändern.
  -c, --no-create           Keine Dateien erzeugen.
  -d, --date=ZEICHENKETTE   Lesen der ZEICHENKETTE und statt der momentanen
                              Zeit verwenden.
  -f                        (ignoriert)
  -m                        Nur Modifikationszeit ändern.
  -r, --reference=FILE      Die Zeiten dieser Datei anstatt der momentanen Zeit
                              verwenden.
  -t MARKE                  verwenden von [[HH]JJ]MMTTSSmm[.ss] statt der
                              momentanen Zeit.
      --time=WORT           Setzen der Zeit die von WORT angegeben wird:
                              access, atime, (wie -a), mtime, modify (wie -m).
      --help                Anzeigen dieser Hilfe und beenden.
      --version             Ausgabe der Versionsinformation und beenden.

Beachten Sie das die drei Zeitformate die von den Optionen -d, -t und dem
veraltete Argument erkannt werden alle verschieden sind.

Berichten Sie Fehler an <bug-fileutils@gnu.org>.

Andere Befehle, wie z. B. der Packer zip liefern diese Erklärungen schon, wenn Sie ohne Parameter aufgerufen werden.

ole@defiant:~/test> zip
Copyright (C) 1990-1999 Info-ZIP
Type 'zip "-L"' for software license.
Zip 2.3 (November 29th 1999). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
  The default action is to add or replace zipfile entries from list, which
  can include the special name - to compress standard input.
  If zipfile and list are omitted, zip compresses stdin to stdout.
  -f   freshen: only changed files  -u   update: only changed or new files
  -d   delete entries in zipfile    -m   move into zipfile (delete files)
  -r   recurse into directories     -j   junk (don't record) directory names
  -0   store only                   -l   convert LF to CR LF (-ll CR LF to LF)
  -1   compress faster              -9   compress better
  -q   quiet operation              -v   verbose operation/print version info
  -c   add one-line comments        -z   add zipfile comment
  -@   read names from stdin        -o   make zipfile as old as latest entry
  -x   exclude the following names  -i   include only the following names
  -F   fix zipfile (-FF try harder) -D   do not add directory entries
  -A   adjust self-extracting exe   -J   junk zipfile prefix (unzipsfx)
  -T   test zipfile integrity       -X   eXclude eXtra file attributes
  -y   store symbolic links as the link instead of the referenced file
  -R   PKZIP recursion (see manual)
  -e   encrypt                      -n   don't compress these suffixes


3.3.2 Manual-Pages

Für weitergehende Erläuterungen wurden die Manual Pages, oder auch nach Ihrem Verwaltungsprogramm Man-Pages genannt, entwickelt. Die Man-Pages sind praktisch die Bedienungsanleitungen für die Shell-Befehle.

Nach einem man cp wird das Dokument entpackt und dann mit dem passenden Pager angezeigt.

Abbildung 3.1: Ausgabe des Befehls man cp
Image man_cp

Mit den Richtungstasten können Sie nun hin- und herscrollen. Die Betätigung der Taste <Q> beendet dann das Man-Programm.

Die Programme whatis und apropos basieren auf man. whatis liefert eine Kurzbeschreibung für einen Befehl, während apropos diese Kurzbeschreibungen nach einem Begriff durchsucht.

ole@defiant:~/test> apropos login
logname (1)          - print user's login name
/etc/login.defs (5) [login.defs] - Login configuration
login_tty (3)        - tty utility functions
getlogin (3)         - get user name
sulogin (8)          - Single-user login
slogin (1)           - OpenSSH SSH client (remote login program)
nologin (8)          - politely refuse a login
faillog (8)          - examine faillog and set login failure limits
nologin (5)          - prevent non-root users from logging into the system
ssh (1)              - OpenSSH SSH client (remote login program)
utmp (5)             - login records
wtmp (5)             - login records
      ....

ole@defiant:~/test> whatis ssh
ssh (1)              - OpenSSH SSH client (remote login program)

Die Manual-Pages enthalten nicht nur Informationen zu Befehlen, sondern auch zu Konfigurationsdateien, Kernelfunktionen u.a.


Notizen:
Notizen:

Einführung in die Shell % latex2html id marker 2826
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Sollte eine Aufgabe zu einer Fehlermeldung führen, kann das von mir gewollt sein! Prüfen Sie aber dennoch, ob Sie keinen Tippfehler gemacht haben, und ob die Voraussetzungen wie in der Aufgabenstellung gegeben sind. Auch sollten keine Verzeichniswechsel ausgeführt werden, wenn dies nicht ausdrücklich in der Aufgabe verlangt wird! Notieren Sie die Ergebnisse auf einem seperaten Zettel.

38
Wechseln Sie vom X-Window-System auf die Konsole 2.

39
Loggen Sie sich dort als walter ein.

40
In welchem Verzeichnis befinden Sie sich?

41
Auf welchem Terminal arbeiten Sie gerade?

42
Führen Sie den Befehl rm -rf * aus. Was bewirkt der Befehl?

43
Legen Sie eine leere gewöhnliche Datei mit dem Namen meiohmei an.

44
Legen Sie drei leere gewöhnlichen Dateien mit den Namen achdugrueneneune, achduliebermeinvater und achdukannstmichmal mit einem Befehl an.

45
Lassen Sie sich nun den Verzeichnisinhalt anzeigen.

46
Lassen sich sich ausführlichere Informationen über den Verzeichnisinhalt anzeigen.

47
Lassen Sie sich nun für die vier Dateien die Inode-Nummern anzeigen.

48
Legen Sie mit dem vi die Datei wasichschonimmersagenwollte mit dem folgenden Inhalt an.

Linux Unser, Der Du bist im Kernel,
Geöffnet sei Dein Swap-File,
Dein KDE komme,
Dein Bash-Command geschehe,
Wie in Red Hat so auch in Suse.
Unser täglich Login gib uns heute,
Und vergib uns unsere zu kleine Festplatte,
Wie auch wir vergeben Dir Deiner Installation.
Und führe uns nicht in die Kernel-Panik,
Sondern erlöse uns von Microsoft.
Denn Dein ist das Netz Und die Festplatte Und die Stabilität
In Ewigkeit
Enter!

Anonymous

49
Legen Sie von der Datei wasichschonimmersagenwollte eine Kopie namens ichhabsgesagt an.

50
Lassen Sie sich die Inode Nummern der Dateien anzeigen.

51
Benennen Sie nun ichhabsgesagt nach ichsagte um.

52
Lassen Sie sich die Inode Nummern der Dateien wiederum anzeigen und vergleichen Sie das Ergebnis mit Aufgabe 13. Was sehen sie?

53
Legen Sie das Verzeichnis abfall an.

54
Lassen Sie sich den Inhalt des aktuellen Verzeichnis ausführlich anzeigen. Wie unterscheidet sich das Verzeichnis von den gewöhnlichen Dateien?

55
Lassen Sie sich ausführlich den Inhalt des Verzeichnis abfall anzeigen.

% latex2html id marker 2886
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

56
Kopieren Sie die Datei ichsagte in das Verzeichnis abfall.

57
Kopieren Sie die Dateien, die mit achdu beginnen in das Verzeichnis abfall. Lassen Sie sich dabei die Aktionen des Programms anzeigen.

58
Lassen Sie sich wieder ausführlich den Inhalt des Verzeichnis abfall anzeigen.

59
Kopieren Sie alle Dateien aus dem Verzeichnis etc, die mit c beginnen, in das Verzeichnis abfall. Welche Fehler treten dabei auf?

60
Versuchen Sie über die Hilfe herauszubekommen, ob mit dem cp es prinzipiell möglich ist Verzeichnisse zu kopieren.

61
Wechseln Sie in das Verzeichnis abfall und lassen Sie sich das aktuelle Verzeichnis anzeigen.

62
Wechseln Sie zur Verzeichniswurzel und lassen Sie sich den Inhalt des Verzeichnis ausführlich anzeigen. Um was für Dateien handelt es sich hier?

63
Wechseln Sie in das Verzeichnis root. Was passiert?

64
In welchem Verzeichnis sind Sie nun?

65
Wechseln Sie in das Verzeichnis etc.

66
Wann wurde das Verzeichnis cron.daily erstellt?

67
Was bewirkt der Schalter -G beim Befehl ls

68
Testen Sie den Schalter -G bei der ausführlichen Anzeige des Inhalts des Verzeichnis cron.daily.

69
Öffen Sie die Datei do_mandb aus cron.daily im vi. Welchen Hinweis bekommen Sie.

70
Beenden Sie den vi ohne zu speichern.

71
Wechseln Sie wieder in das Heimatverzeichnis von walter.

72
Öffnen Sie die Datei wasichschonimmersagenwollte mit dem vi.

73
Löschen Sie das Wort KDE.

74
Schreiben Sie an der Stelle jetzt Gnome hinein.

75
Gehen Sie an den Anfang des Dokuments und fügen Sie dort eine Leerzeile ein.

76
Fügen Sie nun in dieser Zeile 75 mal den Asterisk ein.

77
Löschen Sie die Zeile ``Dein Bash-Command geschehe,''

78
Verlassen Sie den vi ohne das Dokument zu speichern.

79
Wenn Sie noch Zeit haben, dann starten Sie das Lernprogramm für den vi und arbeiten es durch, soweit Sie kommen.


4. Die Shell I

4.1 Was ist eine Shell?

Die Shell ist nur ein Linux-Programm. Sie dient als Verbindungsstelle zwischen dem Benutzer und dem Betriebssystem. Ihre Aufgabe ist es, die eingegebene Kommandozeile so umzuformen, daß das Betriebssystem sie interpretieren kann. Daher gibt es auch nicht nur eine Shell, sondern eine Anzahl von Programmen, die diese Vermittlungsaufgabe übernehmen können.

Die älteste, heute noch in der Praxis benutzte Shell ist die von Stephen L. Bourne Mitte der 70er Jahre für ``Unix Version 7'' entwickelte Bourne-Shell. Heute ist sie nur noch selten in ihrer ursprünglichen Form zu finden.

Die C-Shell wurde an der University of California in Berkeley entwickelt. Sie wurde an die Programmiersprache C angelehnt. Allerdings sind die Möglichkeiten der C-Shell kaum vergleichbar mit denen von C.

Eine zur Bourne-Shell weitgehend kompatible Shell ist die von David Korn entwickelte Korn-Shell. Sie wurde aber mit einem größeren Funktionsumfang ausgestattet.

Die Linux-Standard-Shell ist die im Rahmen des GNU-Projekts entwickelte Bash, die Fähigkeiten der Korn- und C-Shell miteinander verbindet. Auf diese Shell werde ich noch genauer eingehen, da Sie auch Prüfungsstoff der ersten LPI-Prüfung ist.

Eine Übersicht über die verschiedenen Shells liefert Tabelle 4.1.


Tabelle 4.1: Übersicht über die häufigsten Shells
Aufruf Shell Kommentar
sh Bourne Shell Oft ein Verweis auf die Bash
bash Bourne Again Shell  
ksh Public Domain Korn Shell Freie Version der Korn-Shell
csh C Shell Oft ein Verweis auf die Tenex C Shell
tcsh Tenex C Shell Verbesserte Version der C Shell


Im Normalfall, wenn man sich auf einem Linux-Rechner einloggt, benutzt man /bin/bash. Die Standard-Shell eines Benutzers wird durch einen Eintrag in der /etc/passwd festgelegt. Der Name der Login-Shell wird in der Umgebungsvariablen SHELL gespeichert. Die Variable enthält nicht zwingend, was viele glauben, den Namen der aktuellen Shell. Den Namen der aktuellen Shell können Sie über die Variable 0 ermitteln. Den Inhalt der Umgebungsvariablen können sie mit dem Befehl echo ausgeben lassen.

ole@enterprise:~> echo $SHELL
/bin/bash
ole@enterprise:~> echo $0
/bin/bash

Weitere Erläuterungen zu den Umgebungsvariablen finden Sie im Verlauf dieses Skripts im Abschnitt 5.2.

Um eine andere Shell zu starten, geben sie einfach das Shellkommando mit seinem Pfad ein. Dies startet eine Kindprozess in dem die neue Shell läuft. Um die Shell zu beenden, geben Sie exit ein.

Im folgenden Beispiel wird durch die Eingabe ksh zur Public Domain Korn Shell 4.1 gewechselt. Dies können Sie an der veränderten Prompt-Einstellung sehen, da die Korn-Shell die Abkürzung ~ fürs Heimatverzeichnis nicht kennt. Trotzdem zeigt die Variable SHELL immer noch die Bash als Shell an. Die Variable 0 hingegen zeigt die aktuelle Shell an.

ole@enterprise:~> echo $SHELL $0
/bin/bash /bin/bash
ole@enterprise:~> ksh
ole@enterprise:/home/ole> echo $SHELL $0
/bin/bash ksh
ole@enterprise:/home/ole> exit
ole@enterprise:~> echo $SHELL $0
/bin/bash /bin/bash

Es gibt drei verschiedene Situationen, in denen eine Shell arbeiten kann. Als interaktive Login-Shell, als interaktive Shell und als nichtinteraktive Shell.

Eine interaktive Login-Shell, meistens nur Login-Shell genannt, wird direkt nach dem Einloggen gestartet und Sie können direkt mit ihr Arbeiten.

Eine interaktive Shell ermöglicht ebenfalls das direkte Arbeiten. Allerdings wurde sie nicht durch einen Login-Vorgang gestartet. Dies kann z. B. durch die Eingabe des Shellprogramms in einer anderen Shell geschehen, wie Sie im obigen Beispiel sehen konnten, oder z. B. durch das Starten einer Terminalemulation auf der graphischen Oberfläche.

Mit einer nichtinteraktiven Shell können Sie nicht am Prompt arbeiten. Sie wird nur zum Ausführen eines Shell-Skripts gestartet und beendet sich nach dem Ende des Skripts automatisch. Damit dient diese Shell nur als eigenständige Umgebung für die Ausführung von vordefinierten Shell-Befehlen ohne Möglichkeiten für den Benutzer direkt einzugreifen.


4.1.1 chsh

Das Kommando chsh ändert dauerhaft die Login-Shell.
chsh [-s LOGINSHELL] [USER]

Der Benutzer kann nur die Shell für sich selbst ändern, während root das für jeden Benutzer machen kann. Dabei ist aber der Benutzer auf die Shells eingeschränkt, die in der Datei /etc/shells aufgelistet werden. Wird die Option -s nicht angegeben, so erfolgt die Änderung der Daten im interaktiven Modus. Vor jeder Änderung wird das Kennwort des Benutzers zur Sicherheit abgefragt.

Optionen
-s LOGINSHELL Die neue Login-Shell
 

4.1.1.0.1 Beispiel

 
Der Benutzer will in Zukunft die Korn-Shell verwenden. Er ändert dies mit
chsh -s /usr/bin/ksh


4.2 Die Bash

Die erste programmierbare Shell wurde von Steve L. Bourne Mitte der 70er Jahre entwickelt und war eine der ersten UNIX-Shells. Als aufwärtskompatibler Nachfolger wurde später die Bourne-Again-Shell oder kurz Bash entwickelt. Sie wurde von Brian Fox und Chet Ramey als Bestandteil des GNU-Betriebssystems entworfen, für das allerdings bisher nur der Compiler, Tools wie z.B. Editoren und die Shell existieren. Der wichtigste Teil des Betriebssystems, der Betriebssystemkern, fehlt allerdings noch. Da alle Teile freie Software sind, sind sie Bestandteile der freien UNIX-Varianten Linux und Free-BSD, die im Prinzip hauptsächlich aus dem Betriebssystemkern mit Treibern bestehen und die anderen Teile, die für ein funktionierendes System notwendig sind, wie eben Compiler, Shell, Editoren, Tools zum Dateihandling oder ähnliches, aus anderen Quellen beziehen. So ist die Bash die Standard-Shell von Linux, wobei auch hier dem Benutzer die Wahlfreiheit gelassen wird, und man jede andere UNIX-Shell verwenden kann.

Im Prinzip ist die Bash nichts weiter als ein normales Programm, was die Kommandos des Benutzers an das Betriebssystem und andere Programme weiterleitet und deren Ausgaben wieder dem Benutzer zur Verfügung stellt.

Als allererstes sollten Sie bei der Bash beachten, daß zwischen Groß- und Kleinschreibung peinlich genau unterschieden wird. So sind mit den Namen ahrschlecker.txt, AHRSCHLECKER.TXT und AhrSchlecker.txt im Gegensatz zu DOS/Windows drei verschiedene Dateien gemeint. Da die meisten Befehle auch nur ausführbare Dateien sind, gilt es natürlich auch für diese. In meinen Schulungen habe ich am Anfang oft Teilnehmer über dieses Verhalten schimpfen hören. Aber dieses Verhalten hat schon seinen Sinn. Schauen Sie sich doch mal folgendes Motto einer Tierschützerin an:

Ich bin gut zu Vögeln.

Meinen Sie jetzt noch immer, daß die Verwendung von Groß- und Kleinschreibung überflüssig ist?

Der Prompt zeigt nicht nur die Bereitschaft der Shell an ein neues Kommando zu empfangen. Er kann auch mit Informationen ausgestattet werden. Bei SuSE wird voreingestellt der eingeloggte Benutzer, der Rechner und das Verzeichnis angezeigt. Verantwortlich für das Aussehen des Prompts sind die Variablen PS1 und PS2.
tapico@defiant:/etc/news >

Unvollständige Befehlszeilen quittiert die Shell (Bourne und Bash) durch Ausgabe des Hilfsprompts, der durch die Variable PS2 festgelegt wird. In der Regel handelt es sich um ein Größer-Zeichen gefolgt von einem Leerzeichen. Häufigste Ursache dafür ist ein fehlendes zweites Anführungszeichen. Durch Eingabe dieses Zeichens wird die Befehlszeile vervollständigt und der Befehl kann ausgeführt werden.

ole@enterprise:~> echo "Hallo Welt
> "
Hallo Welt

Häufig ist es nötig einen Befehl zu wiederholen oder einen Befehl leicht abzuwandeln. Unter Linux steht eine Eingabewiederholung ähnlich dem DOSKEY unter Windows zur Verfügung: die History. Diese wird im wesentlichen über die Cursortasten Auf und Ab gesteuert.

Sollten Sie mal mit dem Platz in einer Zeile nicht auskommen, so kann eine Eingabezeile problemlos verlängert werden, indem man anstatt <RETURN> zu drücken unmittelbar vor <RETURN> einen Backslash \ eingibt.

Gerade am Anfang können Sie ungewollt in Programme raten, mit denen Sie sich nicht auskennen. Hier ein paar Tips, wie Sie solche Programme beenden können.

4.2.1 Kommandosyntax

Ein Kommando ist eine Folge von Zeichenketten, die durch ein oder mehrere Leerzeichen oder Tabulatoren getrennt werden. Die ersten Zeichenkette legt den Namen des Kommandos fest. Die weiteren Zeichenketten werden als Parameter bezeichnet.
KOMMANDO [PARAMETER1] [PARAMETER2] ... [PARAMETERn]
Dabei gehören die Leerzeichen und Tabulatoren nicht zu den Parametern, sondern werden nur als Trennzeichen gewertet. Soll der Parameter hingegen Leerzeichen oder Tabulatoren enthalten, so muß der Ausdruck in einfache (') oder doppelte ('') Anführungszeichen gesetzt werden.

4.2.1.1 Beispiel

 
echo Ich          bin           da!
echo "Ich          bin           da!"

Bei den Parametern wird zwischen Argumenten und Optionen unterscheiden. Optionen werden durch ein - in der Kurzform4.2 oder -- in der langen Form eingeleitet.

Das Kommando legt fest was gemacht werden soll. Die Argumente bestimmen womit und die Optionen wie.

4.3 Arbeiten mit Verzeichnissen

Nach dem Einloggen befinden Sie sich immer in Ihrem Heimatverzeichnis4.3. Dies wird generell abgekürzt durch das Tilde-Zeichen ~. Die folgenden Arbeitsweisen des Tilde-Zeichens werden als Tilde-Ausdehnung (engl. tilde expansion) bezeichnet.

~ Heimatverzeichnis des aktuellen Benutzers
~walter Heimatverzeichnis von dem Benutzer walter
~+ Das aktuelle Arbeitsverzeichnis
~- Das alte Arbeitsverzeichnis

Ihre Funktionsweise können Sie im folgenden Beispiel verfolgen.

ole@enterprise:~/test> echo ~
/home/ole
ole@enterprise:~/test> echo ~walter
/home/walter
ole@enterprise:~/test> echo ~+
/home/ole/test
ole@enterprise:~/test> cd ../Documents/
ole@enterprise:~/Documents> echo ~-
/home/ole/test


4.3.1 pwd

Der Befehl pwd (Print Working Directory), der Bestandteil der Bash ist, zeigt das Verzeichnis an, in dem Sie gerade arbeiten.
pwd


4.3.2 cd

Um in ein anderes Verzeichnis zu wechseln benutzt man das Kommando cd (Change Directory). Dabei ist cd kein eigenständiges Programm sondern wie pwd ebenfalls Bestandteil der Bash.
cd [DIRECTORY]

Das Zielverzeichnis kann dabei auf absolute oder relative Weise angegeben werden. Bei der absoluten Darstellung geht man immer von der Wurzel (root) aus. Diese Pfadangaben beginnen immer mit einem Slash /. Bei der relativen Pfadangabe wird dagegen von dem aktuellen Verzeichnis als Startpunkt ausgegangen. Jedes Verzeichnis enthält zwei besondere Verzeichnisse. Das Verzeichnis . steht für das Verzeichnis selber, während .. für das übergeordnete Verzeichnis (Elternverzeichnis) steht.

Um wieder zurück ins Heimatverzeichnis zu kommen gibt es mehrere Wege. Sie können zum einen den absoluten oder relativen Pfad zum Verzeichnis angeben. Kürzer geht es aber mit den Befehlen cd ~ oder ganz kurz nur mit cd.


4.3.3 ls

Eine Reihe von Befehlen ermöglicht es, sich den Inhalt eines Verzeichnisses anzusehen. Der am häufigsten benutzte Befehl ist ls (LiSt).
ls [OPTIONEN] [DATEINAME]

Für DATEINAME können Namen von Dateien oder Verzeichnissen4.4 verwendet werden. Dabei kann, um eine Menge von Dateinamen zu bilden, Metazeichen (Joker) verwendet werden. Die bekanntesten Joker sind dabei das Fragezeichen ?, das für ein einzelnes beliebiges Zeichen steht, und der Asterisk *, der für eine beliebige Anzahl beliebiger Zeichen steht.

Optionen
-a Anzeige aller Dateien, auch derjenigen, die mit . beginnen.
-A Anzeige aller Dateien außer . und ..
-c Sortiert zusammen mit -t Dateien nach dem Datum der letzten Änderung der Inode (Verwaltungsinformationen). Standardsortierfolge ist nach ASCII-Zeichen. Die Anzeige des entsprechenden Datums erfolgt zusammen mit -l. (ls -ctl)
-d Verzeichnisse in der Liste der Argumente werden wie andere Dateien behandelt. Unterdrückung der Durchsuchung des Inhalts von Verzeichnissen.
-l Anzeige ausführlicher Dateiinformationen. Viele Schalter haben nur im Zusammenhang mit -l eine Bedeutung, da sie nicht automatisch die Information anzeigen sondern nur vorbereiten (z. B. -e oder -k).
-r Ausgabe in umgekehrter Sortierreihenfolge
-t Sortiert Dateien nach dem Datum der letzten Änderung. Standardsortierfolge ist nach ASCII-Zeichen. Die Anzeige des Datums erfolgt zusammen mit -l.
-x Spaltenweise Ausgabe der Dateinamen, im Gegensatz zu -C jedoch waagerecht geordnet.
-m Ausgabe der Dateinamen als durch Komma getrennte Liste.
-F Kennzeichnung diverser Dateitypen durch Anhängen von Sonderzeichen: / für Verzeichnisse, * für ausführbare Dateien, @ für Links, | für FIFOs und = für Sockets.
-R Rekursive Anzeige, d. h. es werden nicht nur Verzeichnisse nach ihrem Inhalt durchsucht, sondern auch darin enthaltene (Unter-) Verzeichnisse. Nicht zusammen mit -d anwendbar.
 


Tabelle 4.2: Weitere Optionen des Befehls ls
\begin{table}\begin{small}
\begin{center}
\begin{tabular*}{16cm}{p{2cm}p{14cm}}
...
...IX-Systemen voreingestellt).\\
\end{tabular*}\end{center}\end{small}\end{table}


Eine Auflistung von weiteren Schaltern finden Sie in Tabelle 4.2. Es gibt eine Reihe von alternativen Optionen. Z. B. ist --tabsize=zahl eine Alternative zu -T zahl. Diese Optionen sind selbsterklärend (wenn man Englisch kann und Phantasie hat) und werden stets mit doppeltem Minuszeichen eingeleitet, da sie sonst wegen ihrer Länge mit Zusammenfassungen der herkömmliche Schalter verwechselt werden können. Man kann sie sich mit ls --help anzeigen lassen.

Über die Ausgabe des ls-Befehls sollten sie noch wissen:

4.3.3.0.1 Beispiel

 
Ausgabe des Befehls mit der Option -Fl
tapico@defiant:~/test > ls -Fl
total 4
lrwxrwxrwx   1 ole      users           9 May  9 22:00 hallo -> hallowelt*
-rwxr-xr-x   1 ole      users          36 May  9 21:56 hallowelt*
-rw-r--r--   2 ole      users         401 May  9 22:04 liste
-rw-r--r--   2 ole      users         401 May  9 22:04 myliste
drwxr-xr-x   2 ole      users        1024 May  9 21:55 mytest/
prw-r--r--   1 ole      users           0 May  9 21:54 testpipe|

Dabei enthalten die Spalten von links nach rechts gelesen: Dateityp und Rechte, Anzahl der Hardlinks, Besitzer, Gruppe, Größe in Byte, Monat, Tag, Uhrzeit, Dateiname und Dateityp (durch -F). Den Dateityp aus der ersten Spalte können Sie aus der Tabelle 4.3 entnehmen.


Tabelle 4.3: Die Kennzeichnung der Dateiarten durch ls -l
Kennzeichen Bedeutung
- gewöhnliche Datei
d Verzeichnis (directory)
c zeichenorientierte Gerätedatei (character device)
b blockorientierte Gerätedatei (block device)
p FIFO-Pipeline(named pipe)
l symbolischer Link (symbolic link)
s Netzwerksocket (socket)



4.3.4 dir

Der Befehl dir wird in den einzelnen Distributionen unterschiedlich behandelt. Ursprünglich ein eigenständiges Programm ist er heute entweder ein Alias für ls oder für ls -l.

ole@enterprise:~> type dir
dir is aliased to `ls -l'


4.3.5 vdir

Das Kommando vdir ist fast identisch mit dem Kommando ls. Ohne Schalter eingegeben wirkt es wie ls -l. Die meisten Schalter sind mit denen von ls identisch. Mehr Informationen entnehmen Sie bitte der Manual-Page oder der Texinfo zu vdir.


4.3.6 mkdir

Der Befehl mkdir wird dazu benutzt neue Verzeichnisse zu erstellen.
mkdir [OPTIONEN] [VERZEICHNISPFADLISTE]

Wird die Option -p nicht mit angegeben, so müssen die Elternverzeichnisse für das neue Verzeichnis existieren.

Optionen
-p Erzeugt auch die nötigen Elternverzeichnisse, wenn diese nicht existieren.
-m RECHTE Erlaubt gleich das Setzen der Rechte für das neue Verzeichnis wie durch chmod
 

4.3.6.0.1 Beispiele

 
Dieses Kommando legt das Verzeichnis tex/linux an. Dabei muß das Verzeichnis tex existieren.
mkdir tex/linux

Dieser Befehl legt einen kompletten Verzeichnispfad an. Dabei werden alle Verzeichnisse erzeugt, wenn sie noch nicht existieren.
mkdir -p tex/linux/kurs/material

Auf die neuen Verzeichnisse bekommt nur der Besitzer Rechte.
mkdir -m 700 tagebuch adressen


4.3.7 rmdir

Um leere Verzeichnisse wieder zu löschen, wird der Befehl rmdir verwendet.
rmdir [OPTIONEN] [VERZEICHNISPFADLISTE]

Dabei wird immer das letzte Verzeichnis in der angegebenen Verzeichnishierachie gelöscht. Der Schalter -p ermöglicht das Löschen ganzer Hierachien.

Optionen
-p Löschen aller leeren Verzeichnisse in der Verzeichnishierachie.
 

4.3.7.0.1 Beispiele

 
Dieses Kommando löscht alle Verzeichnisse des Elternverzeichnisses linux.
rmdir tex/linux/*

Soll die ganze Hierachie gelöscht werden, also auch die Verzeichnisse tex/linux und tex gelöscht werden, so lautet der Befehl:
rmdir -p tex/linux/*
Dabei dürfen die Verzeichnisse aber keine weiteren Verzeichnisse oder Dateien enthalten.


4.4 Der Linux-Verzeichnisbaum

Den Linux-Verzeichnisbaum gibt es eigentlich nicht. Jede Distribution hat eine individuellen Verzeichnishierachie für sich entwickelt. Allerdings gibt es einige Verzeichnisse, die eigentlich überall vorhanden sein sollten. Als Leitlinie für den Baum gilt der sogenannte Dateisystemstandard FSSTND (Abkürzung für File System STaNdarD). Dieser wird auch als Filesystem Hierarchy Standard (kurz FHS) bezeichnet. Eine Übersicht über die wichtigsten Verzeichnisse liefert Abbildung 4.1.

Abbildung 4.1: Der Linux-Dateibaum
\includegraphics{lk-dateibaum.eps}

/
Dies ist Basis des Verzeichnisbaums und wird als Wurzel oder auch als root bezeichnet. Das Verzeichnis ist das Elternverzeichnis für alle anderen Verzeichnisse. Die folgenden Verzeichnisse müssen nach dem FSSTND als Hard- oder Softlink vorhanden sein: /bin, /boot, /dev, /etc, /lib, /mnt, /opt, /sbin, /tmp, /usr und /var. Die Verzeichnisse /home und /root sind optional, sollten aber vorhanden sein, wenn das passende Untersystem installiert ist.

/bin
Dieses Verzeichnis enthält diverse wichtige Kommandos, die für den Systemadministrator und für normale Benutzer wichtig sind. Dieses Verzeichnis darf nach FSSTND keine Unterverzeichnisse enthalten und folgenden Programme sollten enthalten sein. cat (4.5.2), chgrp (9.2.2), chmod (9.2.3), chown (9.2.1), cp (4.5.3), date (4.6.3), dd (4.5.4), df (10.8.2), dmesg (12.1.3), echo (4.6.5), false (8.2.3), hostname (18.2.4), kill (12.9.7), ln (10.7.3), login (), ls (4.3.3), mkdir (4.3.6), mknod (), more (4.5.9), mount (10.3.1), mv (4.5.6), ps (12.8.1), pwd (4.3.1), rm (4.5.7), rmdir (4.3.7), sed (7.7.6), sh (8.6.3), stty (5.1.3), su (8.1.2), sync (10.3.4), true (8.2.3), umount (10.3.3) und uname (14.4.1).

/boot
Enthält den Kernel und für das Booten wichtige Dateien.

/dev
Das Verzeichnis für die Gerätedateien.

/etc
Konfigurations- und Informationsdateien, darunter magic, DIR_COLORS, input_rc u. v. m.

/etc/rc.d
Enthält die für den Bootvorgang wichtigen Skripte und die rc-Verzeichnisse.

/etc/skel
Aus diesem Verzeichnis werden die Konfigurationsdateien (skeleton user files) für einen neuen Benutzer in dessen Heimatverzeichnis kopiert.

/etc/X11
Die Konfigurationsdateien des X-Window-Systems liegen hier.

/home
beherbergt die Heimatverzeichnisse, in denen normalerweise keine Rechte die Arbeit des Benutzers einschränken. Es ist somit für den normalen Benutzer von existentieller Bedeutung. In größeren LINUX-Systemen sollte für dieses Verzeichnis entsprechender Platzbedarf einkalkuliert werden, da hier die Benutzerdaten abgelegt werden. Häufig wird es dann auf einen Extra-Datenträger ausgelagert, der beim Systemstart separat gemountet wird.

/lib
Hier findet man die Bibliothek des C-Compilers, sowie sogenannte Shared Libraries, Programmbibliotheken (vereinfacht gesagt Programmteile), die von verschiedenen Anwendungen benutzt werden können. Diese Programmteile werden erst zur Laufzeit in den Arbeitsspeicher geladen, wenn das betreffende Programm sie benötigt. Dadurch und durch die Tatsache, daß verschiedene Programm darauf zugreifen können (shared) wird der Arbeitsspeicher wesentlich entlastet. Sind Sie Windows-Benutzer kennen Sie sicherlich .DLL-Dateien. Diese werden unter Windows entsprechend genutzt.

/Lost+found
Dieses Verzeichnis wird für wiederhergestellte Dateien verwendet.

/mnt
Hilfsverzeichnis zur Aufnahme von Dateisystemen, die in den LINUX-Verzeichnisbaum gemountet werden sollen.

/proc
ist ein virtuelles Dateisystem für Informationen über die laufenden Prozesse. Der Befehl ps (process status) liefert seine Angaben auf der Basis des Inhalts dieses Verzeichnisses. Jeder Prozeß erhält ein eigenes Unterverzeichnis in dem die Informationen über Ihn gespeichert werden.

/root
ist das Heimatverzeichnis der Superusers (root).

/sbin
Hier liegen die Befehle zur Systemverwaltung wie adduser, mit dessen Hilfe neue Benutzer definiert werden, fsck zur Überprüfung von Dateisystemen oder shutdown, mit dem das System heruntergefahren werden kann. Programme für Systemstart wie init, mit dem diverse Systemdienste (z. B. Drucker- und Zeitdienste) initiiert werden, darunter auch getty (ebenfalls in /sbin zu finden). Über getty erfolgt das Anmelden an der Konsole oder an Terminals, die via serieller Leitung mit dem LINUX-Rechner verbunden sind.

/tmp
Verzeichnis zum Zwischenlagern von Dateien. Hier darf jeder schreiben und lesen.

/usr
Enthält alle wichtigen Programme und Daten wie etwas das Online-Manual, die nicht zum Booten des Systems benötigt werden. Es kann ein Verzeichnis sein, das sich physikalisch auf einem anderen Datenträger befindet als das Bootmedium, auf einer CD-ROM etwa oder an einem entfernten NFS-Server. In dieser Situation müßte dieser Teil des Dateisystems nach dem Booten erst verfügbar gemacht werden. Für den Fall, daß es dabei zu Problemen kommen sollte, stehen die allernötigsten Befehle in verschiedenen anderen Verzeichnissen, z. B. /bin, zur Verfügung.

/usr/bin
enthält die Befehle, die allen Teilnehmern zur Verfügung stehen sollten. Ein Teil dieser Benutzer-Befehle befindet sich aus den oben genannten Gründen (vgl. Eintrag bei /usr) in /bin.

/usr/local
wird für Programme verwendet, die nicht Bestandteil des Betriebssystems sind, wie z. B. das Dokumentenverzeichnis für den Webserver.

/usr/local/bin
Hier werden die Binärdateien von diesen Programmen gespeichert. Dieses Verzeichnis sollte im Suchpfad des Benutzers enthalten sein.

/usr/local/sbin
ist für lokal installierte Administrationstools zuständig.

/usr/include
enthält die Standard-C/C++-Header-Dateien.

/usr/lib
Die statischen Programmbibliotheken sowie die Unterverzeichnisse für Bibliotheken verschiedener Programmiersprachen sind hier zu finden. Enthält auch Links zu X-Window-Dateien.

/usr/man
ist eins der Verzeichnisse für das Online-Manual. Eine unerschöpfliche Informationsquelle für den Benutzer.

/usr/sbin
Analog zu /usr/bin gibt es dieses Verzeichnis für den Superuser (root).

/usr/src
enthält die Quellcodes für die Systemprogramme.

/usr/src/linux
In diesem Unterverzeichnis ist der Quellcode des Systemkerns zu finden.

/usr/X11R6
Enthält Dateien für das X-Window-System. Oft auch nur ein Link auf ein anderes Verzeichnis.

/var
Informationsdateien für das System sind hier abgelegt. Dies sind Tabellen, die von LINUX laufend verändert werden, z. B. die Dateien utmp und wtmp, die Informationen über die eingeloggten Benutzer enthalten. (Standard-UNIX: Die Tabellen befinden sich zum größten Teil in /etc.)

/var/tmp
ist das Ziel der temporären Dateien, die von Anwendungen aus verschiedenen Gründen während eines Programmlaufs angelegt und verändert, zum Programmende aber wieder gelöscht werden. Editoren oder Textverarbeitungen speichern unter Umständen den vom Anwender geschriebenen Text zur Sicherheit in einer temporären Datei. Temporäre Dateien sind kurzlebig und ständiger Änderung unterworfen. Sie sind ein sprechendes Beispiel für die allgemeine Bedeutung des Verzeichnisses /var.

/var/spool
ist der Ort der Warteschlangen (Queues) diverser Spoolprogramme. Dies sind Programme, die im Hintergrund arbeitend Aufträge der verschiedenen Benutzer entgegennehmen und in einer vernünftigen Reihenfolge abwickeln. Da mehrere Benutzer (beinahe) gleichzeitig z. B. einen Druckauftrag an den Druckspooler geben können, sprich drucken wollen, muß dieser dafür sorgen, daß die einzelnen Aufträge sich nicht vermischen und etwa am Drucker zwei Texte zu einem - bunt gemischten - werden. als Hilfsmittel dienen ihnen Warteschlangen, in die die einzelnen Aufträge nacheinander eingereiht und (nach dem Wirkungsprinzip einer FIFO) nach und nach abgearbeitet werden.

/var/spool/lpd
Warteschlangen des Druckerspoolers

/var/spool/mail
Warteschlange für die elektronische Post

/var/spool/uucp
Warteschlange für den Kommunikationsdienst uucp (unix-to-unix-copy)

/var/spool/cron
ist für die Abwicklung von Zeitdiensten über den cron-Dämonenprozeß wichtig, der in regelmäßigen Abständen Tabellen in /var/spool/crontabs daraufhin überprüft, ob sie Anweisungen enthalten, die zum gegenwärtigen Zeitpunkt auszuführen sind.

4.5 Arbeiten mit Dateien


4.5.1 touch

Das Kommando touch ändert die Zeit des letzten Zugriffs und der letzten Änderung auf die aktuelle Zeit. Existiert die Datei nicht, so wird eine neue Dateien erstellt.
touch [OPTIONEN] [DATEILISTE]


4.5.2 cat

Das Kommando cat (concatenate file) kann dazu benutzt werden neue Dateien zu erstellen. Es wird aber hauptsächlich dazu verwendet Dateien zusammenzufügen und sie auf dem Bildschirm oder einem anderen Gerät auszugeben.
cat [OPTIONEN] [DATEILISTE]

cat wird vor allem als Tool zum Anzeigen und Zusammenfügen von Dateien verwendet und als schneller Mini-Editor.

Optionen
-b Nummeriert alle nichtleeren Zeilen durch
-e Gleich mit -vE
-n Nummeriert alle Zeilen durch (-b hat Vorrang)
-E Fügt am Ende jeder Zeile ein $ ein
-s Faßt aufeinanderfolgende Leerzeilen zu einer Leerzeile zusammen
-v Zeigt alle nichtdruckbaren Zeichen durch Metazeichen an
-T Zeigt Tabulatoren als Î an
-A Zeigt alle nichtdruckbaren Zeichen, Tabulatoren als Î und das Zeilenende als $ an (vgl. -vET)
 

4.5.2.0.1 Beispiel

 
Fügt die Dateien t1 und t2 zusammen und schreibt sie in die Datei t3.
cat t1 t2 > t3

Ein einfacher Editor kann mit cat realisiert werden.
cat > text.txt
Dieser Befehl liest die Daten nicht aus einer Datei sondern von der Standardeingabe und schreibt sie dann in die Datei text.txt. Die Eingabe wird mit <CTRL>+<D> (EOF-Zeichen) beendet.


4.5.3 cp

Um Kopien von einer Datei oder einem Verzeichnis zu erstellen wird das Kommando cp verwendet.
cp [OPTIONEN] QUELLDATEI ZIELDATEI
cp [OPTIONEN] QUELLDATEILISTE ZIELVERZEICHNIS
Wird ein Dateiname für die Quelle angegeben, so kopiert cp die Datei in eine zweite Datei (ZIELDATEI). Ist der letzte Parameter ein Verzeichnis, dann wird die Datei in das Verzeichnis kopiert. Listen von Quelldateien können nur in ein Verzeichnis kopiert werden. Allerdings kann cp in der Normaleinstellung keine Verzeichnisse kopieren.

Optionen
-a Kopiert die Dateien unter Beibehaltung von Struktur und Attributen
-b Erzeugt von jeder überschriebenen Datei eine Sicherheitskopie
-f Überschreiben von vorhandenen Zieldateien
-i Nachfragen vorm Überschreiben von vorhandenen Zieldateien
-l Legt Hardlinks anstatt Kopien der Dateien an
-s Legt Softlinks anstatt Kopien der Dateien an
-p Überträgt Besitzer, Gruppe, Rechte und Zeitmarken an die neue Datei
-P Kopieren der Dateien inklusiver ihrer Verzeichnisstruktur
-r Kopiert rekursiv Dateien aus Verzeichnissen
-R Wie -r, aber anstatt die Inhalte der Dateien zu kopieren, werden die Datei wie sie sind kopiert
-u Kopiert nur Dateien, die jünger sind als die Zieldateien
-v Zeigt die Namen der kopierten Dateien an
 

4.5.3.0.1 Beispiel

 
Die folgende Kommandosequenz kopiert alle Dateien des aktuellen Verzeichnis unter Beibehaltung ihrer Strukturen.
cp -dpRP * \backup


4.5.4 dd

Das Programm dd (Device to Device copy) ist ein spezielles Kopierprogramm. Es wird in aller erster Linie dazu genutzt um Dateien von einem Gerät zu einem anderen zu kopieren.
dd [OPTIONEN]

Optionen
if=DATEI Die Eingabedatei
of=DATEI Die Ausgabedatei
bs=BLOCKGRÖSSE Anzahl der Bytes, die auf einmal gelesen bzw. geschrieben werden.
 

4.5.4.0.1 Beispiel

 
Dieser Befehl legt eine Kopie einer Diskette in der Datei BackupDisk an.
dd if=/dev/fd0 bs=512 of=BackupDisk


4.5.5 Erstellung der Bootdisketten mit dd

Unter Linux können sie ebenfalls, wie unter DOS (Abschnitt 1.4.1) die Bootdisketten erstellen. Hierzu werden die gleichen Images im Verzeichnis /disks der CD 1 verwendet. Die Disketten müssen low-level-formatiert sein. Dazu kann der Befehl fdformat (Abschnitt 10.4.2) verwendet werden.

Nachdem die CD auf das Verzeichnis /cdrom gemountet worden ist, können mit den Befehlen

dd if=/cdrom/disks/bootdisk of=/dev/fd0 bs=8k
dd if=/cdrom/disks/modules1 of=/dev/fd0 bs=8k
dd if=/cdrom/disks/modules2 of=/dev/fd0 bs=8k
dd if=/cdrom/disks/modules3 of=/dev/fd0 bs=8k
die Bootdisketten erzeugt werden.


4.5.6 mv

Um Dateien zu verschieben oder umzubenennen wird das Kommando mv verwendet.
mv [OPTIONEN] ALTERDATEINAME NEUERDATEINAME
mv [OPTIONEN] QUELLDATEILISTE ZIELVERZEICHNIS
Werden zwei Dateinamen als Parameter vergeben, dann wird die Datei umbenannt. Ist der letzte Parameter ein Verzeichnis, dann werden die angegebenen Dateien in dieses Verzeichnis verschoben.

Optionen
-b Erzeugt von jeder überschriebene Datei eine Sicherheitskopie
-f Überschreiben von vorhandenen Zieldateien
-i Nachfragen vorm Überschreiben von vorhandenen Zieldateien
-u Verschiebt nur Dateien, die jünger sind als die Zieldateien
 

4.5.6.0.1 Beispiel

 
Die folgende Kommandosequenz benennt die Datei megabox.txt in die Datei MEGABOX.txt um.
mv megabox.txt MEGABOX.txt

Mit dem folgenden Kommando werden alle Dateien aus dem aktuellen Verzeichnis in das Verzeichnis /home/harald verschoben und eventuell vorhandene Zieldateien überschrieben.
mv -f * /home/harald


4.5.7 rm

Der Befehl rm löscht die angegebenen Dateien. In seiner Standardeinstellung löscht er keine Verzeichnisse.
rm [OPTIONEN] DATEILISTE
Um eine Datei zu löschen, benötigt man das Schreibrecht (w) auf das Verzeichnis, aber nicht auf die Datei. Sollte ein Datei nicht das Schreibrecht besitzen, so erbittet rm nur eine Bestätigung des Löschbefehls, wenn kein -f oder wenn ein -i gesetzt ist.

Optionen
-d Löscht ein Verzeichnis durch Entfernen des Hardlinks. Volle Verzeichnisse werden auch gelöscht. Da die enthaltenen Dateien nicht mehr referenziert werden, ist es ratsam ein fsck danach auszuführen. (Nur Superuser)
-f Löscht alle Dateien ohne explizites Nachfragen. Überlagert die Option -i
-i Fragt vor jedem Löschen einer Datei um Bestätigung
-r Löscht Verzeichnisse und deren Inhalt rekursiv
 

4.5.7.0.1 Beispiel

 
Der folgende Befehl löscht alle Dateien, die mit .temp enden.
rm *.temp

Vorsicht! Dieser Befehl versucht die gesamte Dateistruktur ohne Nachfragen zu löschen. Als root ausgeführt ist das Ergebnis fatal.
rm -rf /


4.5.8 Dateibezeichnung mit Jokerzeichen

Bei der Arbeit mit der Shell kommen Sie oft in Situationen, in denen Sie nicht nur einzelne Dateien oder alle Dateien in einem Verzeichnis ansprechen wollen, sondern nur eine Gruppe von Dateien (z. B. alle HTML-Dateien) bearbeiten möchten. Für diesen Zweck besitzt die Shell die sogenannten Jokerzeichen (Wildcards).

Wenn diese Jokerzeichen eingesetzt werden, gibt die Shell nicht einen einzelnen Dateinamen zurück, sondern eine Liste von Dateinamen, auf die das Muster zutrifft. So erhalten Sie mit dem Muster *.jpg eine Liste aller Dateinamen, die mit .jpg enden.

tapico@defiant:~> echo *.jpg
helm35.jpg helm37.jpg helm38a.jpg helm59.jpg
tapico@defiant:~> cp *.jpg ~/bilder

Denken Sie daran. Die Shell und nicht der Befehl interpretiert das Kommando. Deshalb müssen die Jokerzeichen in manchen Fällen maskiert werden, damit sie unbeschadet an den Befehl übergeben werden können. Probieren Sie den unteren Befehl mal ohne Backslash aus.

tapico@defiant:~> echo \* Hallo \*
* Hallo *

Eine Reihe von Jokerzeichen steht Ihnen zur Verfügung.


4.5.8.1 Asterisk *

Der Asterisk bedeutet im Prinzip alles oder nichts. Er steht für eine beliebige Anzahl beliebiger Zeichen. Wobei beliebige Anzahl auch kein Zeichen bedeuten kann. Z. B. stimmt das Muster lk* mit folgenden Dateinamen überein.

tapico@defiant:~> ls lk*
lk-aufbau-ext2.eps         lk-shell.aux        lk.log
lk-dateibaum.eps           lk-shell.tex        lk.pdf.gz
lk-dateisystem.aux         lk-shell.tex.bck    lk.ps
lk-dateisystem.tex         lk-vorwort.aux      lk.tex
lk-dateisystem.tex.bck     lk-vorwort.tex      lk.tex.bck
lk-installation.aux        lk-vorwort.tex.bck  lk.toc
lk-installation.tex        lk.aux              lktex
lk-installation.tex.bck    lk.dvi

4.5.8.2 Fragezeichen ?

Das Fragezeichen steht für genau ein beliebiges Zeichen.
tapico@defiant:~> ls lk.*
lk.aux  lk.idx  lk.ind  lk.pdf.gz  lk.tex      lk.toc
lk.dvi  lk.ilg  lk.log  lk.ps      lk.tex.bck
tapico@defiant:~> ls lk.???
lk.aux  lk.dvi  lk.idx  lk.ilg  lk.ind  lk.log  lk.tex  lk.toc
tapico@defiant:~> ls lk.??
lk.ps

4.5.8.3 Menge [ZEICHEN]

Mit den eckigen Klammern ist es möglich eine Menge von Zeichen vorzugeben, die an dieser Stelle stehen können. So steht [Aa] für ein Zeichen, daß entweder ein großes oder ein kleines A sein kann. Ein Ausrufezeichen in der eckigen Klammer negiert die Bedeutung der Menge. So steht [!aeiou] für ein Zeichen, daß kein Vokal ist.

Innerhalb der Klammern können nicht nur einzelne Zeichen angegeben werden, sondern auch Bereiche. So steht z. B. [a-z] für alle Kleinbuchstaben und [0-9] für alle Zahlen.

tapico@defiant:~> ls lk.???
lk.aux  lk.dvi  lk.idx  lk.ilg  lk.ind  lk.log  lk.tex  lk.toc
tapico@defiant:~> ls lk.[it]??
lk.idx  lk.ilg  lk.ind  lk.tex  lk.toc
tapico@defiant:~> ls lk.[!it]??
lk.aux  lk.dvi  lk.log
tapico@defiant:~> ls [Hh]*
Home.txt  Hurra.jpg  hans.txt  himmel.jpg
tapico@defiant:~> ls [A-Z]*
Amerika.jpg  Home.txt  Hurra.jpg  Qualle.jpg
tapico@defiant:~> ls *[0-9][0-9].jpg
helm35.jpg  helm37.jpg  helm38.jpg  helm59.jpg


4.5.8.4 Klammerexpansion {WORT1,WORT2,WORT3,...}

Die Klammerexpansion (brace expansion) ist im eigentlichen Sinne kein Jokerzeichen. Sie funktioniert nämlich auch ohne existierende Dateien. Die Funktion ist einfach. Der Ausdruck wird jeweils mit dem in den geschweiften Klammern angegebenen und durch Kommata getrennten Zeichenketten ausgegeben.
tapico@defiant:~> echo "Ich bin "{gut,besser,super}"."
Ich bin gut. Ich bin besser. Ich bin super.
tapico@defiant:~> echo {1,2,3}{1,2,3}
11 12 13 21 22 23 31 32 33

Trotzdem können Sie die Klammerexpansion natürlich auch auf Dateioperationen anwenden.

tapico@defiant:~> ls lk-{kernel,shell}.*
lk-kernel.aux  lk-kernel.tex.bck  lk-shell.tex
lk-kernel.tex  lk-shell.aux       lk-shell.tex.bck
tapico@defiant:~> ls lk-*.{tex,eps}
lk-administration.tex  lk-dateibaum.eps    lk-installation.tex  lk-shell.tex
lk-aufbau-ext2.eps     lk-dateisystem.tex  lk-kernel.tex        lk-vorwort.tex


4.5.9 more

Der Befehl more gehört zur Gruppe der Befehle, mit denen man sich den Inhalt von Dateien anschauen kann (pager). Im Gegensatz zu cat (4.5.2) zeigt er die Daten aber seitenweise an.
more [OPTIONEN] DATEILISTE

Befehle
<LEERTASTE> Eine Seite nach unten scrollen
<f> Eine Seite nach unten scrollen
<b> Eine Seite nach oben scrollen
<RETURN> Eine Zeile nach unten scrollen
<s> Eine Zeile nach unten scrollen
</>MUSTER Durchsuchen des Textes nach dem regulären Ausdruck MUSTER
<n> Weitersuchen nach unten
<q> Beenden
 


4.5.10 Der Pager less

Der Befehl less ist die Weiterentwicklung von more4.5.
less [OPTIONEN] DATEILISTE
Neben den Möglichkeiten von more bietet less die Möglichkeit mit den Richtungstasten zu scrollen und mit Lesezeichen, Zeilennummern und prozentualen Textpositionen zu arbeiten. Auch wird less nicht am Ende der Datei beendet.

Zusätzliche Befehle
<j> Eine Zeile nach unten scrollen
<k> Eine Zeile nach oben scrollen
<d> Einen halben Bildschirm nach unten scrollen
<u> Einen halben Bildschirm nach oben scrollen
<f> Einen Bildschirm nach unten scrollen
<b> Einen Bildschirm nach oben scrollen
<g> An den Anfang der Datei scrollen
<G> Ans Ende der Datei scrollen
</> MUSTER Durchsuchen des Textes nach dem regulären Ausdruck <MUSTER> nach unten
<?> MUSTER Durchsuchen des Textes nach dem regulären Ausdruck <MUSTER> nach oben
<n> Weitersuchen nach unten
<N> Weitersuchen nach oben
<q> Programm beenden
<:><n> Nächste Datei in der Liste anzeigen
<:><p> Vorherige Datei in der Liste anzeigen
 

Wichtig ist beim Befehl less die Suche innerhalb eines Textes. Dazu stehen die Kommandos </> und <?> zur Verfügung. Nach Betätigen der jeweiligen Tasten erscheint in der untersten Zeile eine Eingabeaufforderung, wo Sie Ihr Suchmuster eingeben können. Den Zugriff auf alte Suchmuster erhalten Sie durch das Betätigen der Cursortaste für ``hoch'' und ``runter''.

Das Programm less besitzt viele Schalter und Kommandos. Eine Übersicht über die Möglichkeiten von less erhalten Sie durch die Manualpage less(1).


4.5.10.1 Das Konfigurationsprogramm lesskey

Das Programm lesskey erlaubt eine individuelle Konfiguration der Steuerbefehle von less.


4.5.11 file

Der Befehl file analysiert Dateien und gibt ihren Typ aus.
file DATEILISTE

file prüft zunächst anhand der Inode-Informationen, um welchen Datentyp es sich handelt, prüft aber zusätzlich den Anfang der Datei anhand der Informationen, die in der Datei /etc/magic enthalten sind.

Optionen
-b Ausgabe ohne Angabe der Dateinamen
-f DATEINAME Die Dateiliste wird aus der Datei DATEINAME entnommen (Ein Dateiname pro Zeile).
-z Bearbeitet auch den Inhalt von gepackten Dateien
 

4.5.11.0.1 Beispiel

ole@defiant:~ > ls -Fl
total 5
-rw-r--r--   1 ole      users         468 May  9 22:28 194.195.155.105
lrwxrwxrwx   1 ole      users           9 May  9 22:00 hallo -> hallowelt*
-rwxr-xr-x   1 ole      users          36 May  9 21:56 hallowelt*
-rw-r--r--   2 ole      users         401 May  9 22:04 liste
-rw-r--r--   2 ole      users         401 May  9 22:04 myliste
drwxr-xr-x   2 ole      users        1024 May  9 21:55 mytest/
prw-r--r--   1 ole      users           0 May  9 21:54 testpipe|
ole@defiant:~ > file *
194.195.155.105: ASCII text
hallo:           symbolic link to hallowelt
hallowelt:       perl commands text
liste:           ASCII text
myliste:         ASCII text
mytest:          directory
testpipe:        fifo (named pipe)


4.5.12 /etc/magic

Die Datei /etc/magic ist eine Liste von sogenannten ``Magic Numbers''. Dies Magic Numbers sind die Erkennungsmelodien verschiedener Dateiformate, die meistens am Anfang einer Datei stehen.

Die Datei wird von verschiedenen Programmen gebraucht, wie z. B. file (4.5.11).

Der Eintrag z. B. für eine Bilddatei im PNG-Format ist:

# PNG [Portable Network Graphics, or "PNG's Not GIF"] images
# (Greg Roelofs, newt@uchicago.edu)
# (Albert Cahalan, acahalan@cs.uml.edu)
#
# 137 P N G \r \n ^Z \n [4-byte length] H E A D [HEAD data] [HEAD crc] ...
#
0       string          \x89PNG         PNG image data,
>4      belong          !0x0d0a1a0a     CORRUPTED,
>4      belong          0x0d0a1a0a
>>16    belong          x               %ld x
>>20    belong          x               %ld,
>>24    byte            x               %d-bit
>>25    byte            0               grayscale,
>>25    byte            2               \b/color RGB,
>>25    byte            3               colormap,
>>25    byte            4               gray+alpha,
>>25    byte            6               \b/color RGBA,
#>>26   byte            0               deflate/32K,
>>28    byte            0               non-interlaced
>>28    byte            1               interlaced
1       string          PNG             PNG image data, CORRUPTED

Die Datei kann sich auch im Verzeichnis /usr/share/misc/magic befinden. Dann ist /etc/magic nur ein Link auf diese Datei. Weitere Informationen können Sie den Manualpages (man 4 magic) entnehmen.

4.6 Weitere Befehle


4.6.1 clear

Dieser Befehl löscht den Bildschirm.
clear


4.6.2 cal

Das Kommando cal zeigt einen Kalender an.
cal [[MONAT] JAHR]
Für JAHR sind Werte zwischen 1 und 9999 erlaubt und für MONAT zwischen 1 und 12.

Optionen
-m Zeigt Montag als ersten Tag der Woche an
-j Benutzt das Julianische Datum
-y Zeigt einen Kalender für das aktuelle Jahr
 


4.6.3 date

Diese Befehl zeigt und setzt das aktuelle Datum und die Uhrzeit. Allerdings kann nur root die Zeit setzen.

4.6.3.1 Zeit anzeigen

Die Anzeige der aktuellen Zeit erfolgt über
date [+FORMATSTRING]

FORMATSTRING ist ein beliebiger Text, der, falls er Sonderzeichen enthält, in Anführungszeichen zu setzen ist. Sinn macht dieser Text allerdings erst, wenn er Platzhalter enthält, die Datum oder Zeit anzeigen. Eine Liste der Platzhalter finden Sie in Tabelle 4.4


Tabelle 4.4: Platzhalter beim Befehl date
%a Abgekürzter Wochentagname nach lokaler Spracheinstellung
%A Voller Wochentagname nach lokaler Spracheeinstellung
%b Abgekürzter Monatsname nach lokaler Spracheinstellung
%B Voller Monatsname nach lokaler Spracheinstellung
%c Datum und Zeit nach lokaler Spracheinstellung
%C Das Jahrhundert (00..99)
%d Tag im Monat (01..31)
%D Datum im Format mm/dd/yy
%e Tag des Monats mit führendem Leerzeichen ( 1..31)
%F Datum im Format %Y-%m-%d
%g Zweistellige Jahresangabe im Zusammenhang mit der Angabe %V
%G Vierstellige Jahresangabe im Zusammenhang mit der Angabe %V
%H Stunde (00..23)
%I Stunde (01..12)
%j Tag des Jahres
%m Monat (01..12)
%M Minuten (00..59)
%n Zeilenumbruch
%N Nanosekunden (000000000..999999999)
%p AM/PM nach lokaler Spracheinstellung
%P am/pm nach lokaler Spracheinstellung
%r Uhrzeit im 12-Stunden-Format (hh:mm:ss am/pm)
%R Uhrzeit im 24-Stunden-Format (hh:mm)
%s Sekunden seit 01.01.1970 00:00:00 Uhr UTC
%S Sekunden (00..60); Die 60 ist für Schaltsekunden notwendig
%t Tabulator
%T Zeit (hh:mm:ss)
%u Tag der Woche (1..7) 1=Montag
%U Kalenderwoche für Wochenanfang Sonntag (00..53)
%V Kalenderwoche für Wochenanfang Montag (01..53)
%w Tag der Woche (0..6) 0=Sonntag
%W Kalenderwoche für Wochenanfang Montag (01..53)
%x Datum nach lokaler Spracheinstellung
%X Zeit nach lokaler Spracheinstellung
%y Jahr (zweistellig)
%Y Jahr (vierstellig)
%z Zeitzone nach RFC-822 in nummerischer Darstellung
%Z Zeitzone


Durch den Formatstring kann das Ausgabeformat bestimmt werden.

tapico@defiant:~> date +"Es ist der %d.%m.%y"
Es ist der 19.01.03
tapico@defiant:~> date +"Es ist %T Uhr"
Es ist 13:47:35 Uhr

Einige der Platzhalter orientieren sich bei der Ausgabe an den lokalen Spracheinstellungen des Systems. Diese ist für eine laufende Sitzung in der Umgebungsvariablen LANG gespeichert. Eine Veränderung dieser Variablen führt daher auch zu einer veränderten Ausgaben des Befehls date. Meist ist beim Benutzer root die Variable nicht gesetzt. Default ist dann Englisch.

ole@enterprise:~> echo $LANG
de_DE@euro
ole@enterprise:~> date +"%x"
14.05.2004
ole@enterprise:~> date +"%c"
Fr 14 Mai 2004 10:53:42 CEST
ole@enterprise:~> date +"Ein %A im %B."
Ein Freitag im Mai.
ole@enterprise:~> LANG=en; export LANG
ole@enterprise:~> date +"%x"
05/14/04
ole@enterprise:~> date +"%c"
Fri May 14 10:54:42 2004
ole@enterprise:~> date +"Ein %A im %B."
Ein Friday im May.

4.6.3.2 Zeit stellen

Der Systemverwalter kann auch Zeit und Datum über diesen Befehl ändern.
date MMTTSSmm[[HH]JJ][.ss]

Wobei MM für Monat, TT für Tag des Monats, SS für Stunde, mm für Minute, HH fürs Jahrhundert, JJ fürs Jahr und ss für die Sekunden stehen.

Die Änderung der Systemzeit hat keine Auswirkungen auf die Hardware-Uhr. Nach dem Neustart des Systems sind die Einstellungen wieder verloren.

Um die Zeit zu setzen brauchen Sie die Berechtigung des Systemadministrators. Wenn Sie als normaler Benutzer eingeloggt sind, wechseln Sie zuerst mit dem Befehl su (8.1.2) ihre Identität zu root. Danach können Sie das Datum einstellen.

tapico@defiant:~> su
Password:
root@defiant:/home/tapico # date 10221735
Mon Okt 22 17:35:00 CEST 2001

Für weitere Informationen zu Schaltern und Platzhaltern geben Sie man date ein.


4.6.4 hwclock

Der Befehl date beschäftigt sich nur mit der Systemzeit. Zum Auslesen und Setzen der Hardware-Uhr können Sie den Befehl hwclock verwenden. Dieser Befehl steht nur dem Systemadministrator zur Verfügung.

hwclock [OPTIONEN]

Für die Anwendung und Möglichkeiten dieses Befehls konsultieren Sie bitte die Manualpage (man 8 hwclock).

Um neben der Systemzeit auch die Hardware-Uhr zu setzen, gehen Sie bitte wie folgt vor.

  1. Wechseln Sie ihre Identität zu root.
  2. Setzen Sie mit dem Befehl date (4.6.3) die Systemzeit.
  3. Setzen Sie nun mit den Befehl hwclock die Systemzeit und Hardware-Uhr gleich.

Das kann dann so aussehen:

ole@defiant:~> su
Password:
defiant:/home/ole # date 01191418
Son Jan 19 14:18:00 CET 2003
defiant:/home/ole # hwclock --systohc


4.6.5 echo

Der Befehl echo wirkt wie ein Echo, indem er einfach den angegebenen Text wieder auf den Bildschirm ausgibt. Seine Haupteinsatz findet er daher in den Shellskripten, der Ausgabe von Texten in Dateien und dem Anzeigen der Inhalte von Variablen.
echo [OPTIONEN] [TEXT]

Optionen
-e erlaubt die Benutzung von Sonderzeichen im Text, z. B:
\n Zeilenumbruch
\a Piepton (ASCII-Zeichen 7)
\b Backspace
\f Seitenvorschub
\ooo beliebiges ASCII-Zeichen in oktaler Notation
-n unterdrückt Zeilenumbruch nach Ausgabe des Textes
 

Texte mit Sonderzeichen (z. B. Leerzeichen) sollten in Anführungszeichen stehen. echo ohne Angabe eines Textes bewirkt die Ausgabe einer Leerzeile.


4.6.6 Farbcode fürs Terminal

Um Terminals zu konfigurieren werden Codesequenzen benutzt. Sie werden als Escape-Sequenzen bezeichnet, da sie mit dem Escape-Zeichen (0x1B)4.6 beginnen. So kann die Farbe der Ausgabe festgelegt werden. Mit der Sequenz <ESC>[{attr};{fg};{bg}m kann nun die Farbe vorgegeben werden.

So bewirkt der Befehl
echo "^[[0;31;40mIch sehe rot"
daß der Text `Ich sehe rot' in roter Farbe ausgegeben wird. Das erste Zeichen ist das Escape-Zeichen. Es wird als ^[ dargestellt. Um es zu schreiben drücken Sie <STRG>+<V> und dann <ESC. Um wieder den Normalzustand herzustellen, müssen Sie für die Konsole den Befehl
echo "^[[0;37;40m"
eingeben.

Eine Liste der möglichen Farben und Attribute liefert Tabelle 4.5. Diese Werte werden auch in den Dateien /etc/DIR_COLORS und .dir_colors für die Farbcodierung verwendet. Eine vollständige Liste der Konsolen-Codes liefert die Manpage console_codes (4).

ole@enterprise:~> man 4 console_codes


Tabelle 4.5: Farbcodes fürs Terminal
{attr} {fg} {bg}
0 Normaler Modus 30 Schwarz 40 Schwarz
1 Hell oder Fett 31 Rot 41 Rot
2 Dunkel 32 Grün 42 Grün
3 Unterstrichen 33 Gelb 43 Gelb
5 Blinkend 34 Blau 44 Blau
7 Invertiert 35 Margenta 45 Margenta
8 Versteckt 36 Türkis 46 Türkis
    37 Weiß 47 Grau
        48 Weiß
Die Möglichkeit der Darstellung nach den oben gezeigten Farbcodes hängt stark vom darstellenden Terminal ab. Gerade Attribute wie Unterstrichen und Blinkend funktionieren meistens nicht.



4.6.7 logout

Dieses bash-Kommando beendet die Sitzung eines Benutzers.
logout


4.6.8 script

Der Befehl script sorgt dafür, daß alle Ausgaben auf den Bildschirm gleichzeitig in einer Datei mitgeloggt werden. Dabei wird alles mitgeschrieben bis der Benutzer sich wieder ausloggt. Dieses Kommando eignet sich sehr gut zum Protokollieren von Aktionen.
script [OPTIONEN] [DATEI]

Wird kein Dateiname angegeben, so wird automatisch die Datei typescript angelegt.


4.6.9 telnet

Natürlich gibt es auch eine Möglichkeit eine Linux-Rechner als Terminal zu verwenden. Das Programm telnet ermöglicht den Zugang zu anderen Rechnern. Im Gegensatz zu Windows sehen Sie im Textterminal keine Unterschied ob Sie direkt an der Konsole oder über telnet arbeiten.
telnet HOST [PORT]

Achtung! Aus Sicherheitsgründen können Sie sich nicht als root über Telnet an einem Rechner anmelden. Sie müssen sich erst als normaler Benutzer einloggen und können dann einen Identitätswechsel zum Superuser vollziehen.

Weitere Informationen über das Programm telnet finden Sie in den Manual-Pages über den Befehl man telnet und im Abschnitt 18.3.4.


4.6.10 tty

Die Ausgabe eines Befehls landet immer auf der Konsole oder dem Terminal, auf dem es gestartet wurde. Aber auf welcher Konsole bin ich denn überhaupt? Da hilft der Befehl tty weiter.
tty

4.6.10.0.1 Beispiel

 
tapico@defiant:~ > tty
/dev/pts/0

Shell 1 % latex2html id marker 4650
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

Sollte eine Aufgabe zu einer Fehlermeldung führen, kann das von mir gewollt sein! Prüfen Sie aber dennoch, ob Sie keinen Tippfehler gemacht haben, und ob die Voraussetzungen wie in der Aufgabenstellung gegeben sind. Auch sollten keine Verzeichniswechsel ausgeführt werden, wenn dies nicht ausdrücklich in der Aufgabe verlangt wird! Notieren Sie die Ergebnisse auf einem seperaten Zettel.

80
Loggen Sie als Benutzer walter auf Konsole 1 ein!
81
Führen Sie den Befehl rm -rf * aus. Was bewirkt der Befehl?
82
Legen Sie eine leere gewöhnliche Datei mit dem Namen ogottogottogott an.
83
Wechseln Sie ins Elternverzeichnis (Nach .. also)
84
In welchem Verzeichnis sind Sie jetzt?
85
Stellen Sie fest, welche Dateien hier sind!
86
Löschen Sie den Bildschirm. (Nicht mit Wasser!)
87
Wechseln Sie in das Verzeichnis mit Ihrem Benutzernamen!
88
Lassen Sie sich den Text ``Moin, Moin'' begleitet von einem Piepton auf dem Bildschirm ausgeben.
89
Welche Dateien gibt es im aktuellen Verzeichnis?
90
Wechseln Sie zur Dateisystemwurzel! Welche Dateien gibt es hier?
91
Wechseln Sie in das Verzeichnis /boot!
92
Welche Dateien finden Sie hier?
93
Wechseln Sie in das Verzeichnis /dev?
94
Prüfen Sie den Inhalt des Verzeichnisses! Kommen Ihnen einige Namen bekannt vor?
95
Wechseln Sie ins übergeordnete Verzeichnis (nach .. also).
96
Wechseln Sie ins Verzeichnis /bin !
97
Stellen Sie fest, welche Dateien mit dem Anfangsbuchstaben l (wie Ludwig) vorhanden sind.
98
Lassen Sie sich ausführliche Informationen über die Dateien im Verzeichnis /etc geben!
99
Stellen Sie fest, in welchem Verzeichnis Sie sind! Wechseln Sie, falls notwendig, ins Verzeichnis /bin !
100
Legen Sie ein Verzeichnis mit Ihrem Benutzernamen in /bin an!
101
Wechseln Sie in Ihr Heimatverzeichnis!
102
Legen Sie im Heimatverzeichnis die Verzeichnisse test, org, org/hh und org/ki an!
103
Stellen Sie fest, wem die Verzeichnisse test und org in Ihrem Heimatverzeichnis gehören!
104
Erstellen Sie (mittels echo text > datei) eine Datei namens keks in ihrem Heimatverzeichnis (Inhalt beliebig)!
105
Wechseln Sie nach org/hh !
106
Stellen Sie fest, in welchem Verzeichnis Sie sind!
107
Legen Sie (wie in Aufgabe 25) eine Datei bonbon im aktuellen Verzeichnis an!
108
Lassen Sie sich den Inhalt des aktuellen Verzeichnisses anzeigen!

% latex2html id marker 4668
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

109
Lassen Sie sich den Inhalt Ihres Heimatverzeichnisses anzeigen!
110
Wechseln Sie ins Heimatverzeichnis!
111
Löschen Sie die Verzeichnisse org und test mit dem Befehl rmdir!
112
Stellen Sie fest, welche Dateien in /usr/bin sind!
113
Lassen Sie sich alle Dateien/Verzeichnisse des Heimatverzeichnisses anzeigen außer den der Standardeinträge . und .. !
114
Lassen Sie sich die Inode-Nummern der Dateien des Verzeichnisses /usr/bin anzeigen!
115
Wann wurde zuletzt auf die Datei /usr/share/doc/packages/shadow/HOWTO zugegriffen?
116
Wie groß (Byte) ist die Datei /etc/passwd ?
117
Wem gehört die Datei /boot ?
118
Wieviele Links gibt es für Ihr Heimatverzeichnis?
119
Lassen Sie sich die gesamte Verzeichnisstruktur (Unterverzeichnisse) von /usr anzeigen!
120
Welche Dateien in dem Verzeichnis /boot beginnen mit :?
121
Gibt es in /dev ausführbare Dateien?
122
Vergleichen Sie die Inode-Nummern der Dateien . und .. in der Wurzel!
123
Welche Inode-Nummern haben die Dateien mv, cp und ln in /bin ?
124
Lassen Sie sich ausführliche Informationen über das aktuelle Verzeichnis anzeigen, nicht aber über die darin enthaltenen Dateien!
125
Kopieren Sie alle Dateien aus /usr/share/doc/packages/shadow ins aktuelle Verzeichnis!
126
Prüfen Sie die Zeit der letzten Änderung von HOWTO im aktuellen Verzeichnis und in
/usr/share/doc/packages/shadow!
127
Erstellen Sie die Verzeichnisse PRIMA, PrimA und prima im aktuellen Verzeichnis!
128
Verschieben Sie HOWTO aus dem aktuellen Verzeichnis nach prima !
129
Kopieren Sie die Dateien README und ogottogottogott aus dem aktuellen Verzeichnis in einem Arbeitsgang nach prima !
130
Wechseln Sie nach prima !
131
Benennen Sie ogottogottogott um in meingottwalter !
132
Benennen Sie README um in .juhe !
133
Kopieren Sie alle Dateien des aktuellen Verzeichnisses in einem Zug ins Heimatverzeichnis! Wechseln Sie danach ins Heimatverzeichnis !
134
Wann wurde die Datei ogottogottogott zum letzten Mal geändert?
135
Setzen Sie die Zeit des letzten Zugriffs und der letzten Änderung auf die aktuelle Zeit.
136
Löschen Sie das komplette Verzeichnis prima, unterdrücken Sie dabei Rückfragen!
137
Lassen Sie sich den Text ``Fertig'' in roter blinkender Schrift auf dem Bildschirm ausgeben. Achten Sie dabei darauf, daß der Prompt wieder dem ursprünglichem Schema entspricht.
138
Löschen Sie den Bildschirm.


5. Die Shell II

5.1 Die gewissen Extras

Um dem Benutzer die Arbeit mit dem Rechner zu erleichtern, besitzt die Shell einige sehr nützliche Funktionen. Das fängt mit dem Editor für die Eingabe der Befehle an, umfaßt Hilfen zur Eingabe langer Dateinamen und vieles mehr.


5.1.1 Readline Library

Wenn Sie auf der Eingabezeile arbeiten, benutzen Sie den Editor Readline Library der Free Software Foundation. Standardmäßig arbeitet er im emacs-Modus. D. h. er verwendet zur Steuerung die gleichen Befehle wie der Editor emacs.

Eine Übersicht über die Steuerungsbefehle finden Sie in Tabelle 5.1.


Tabelle 5.1: Steuerbefehle für den emacs
Hinweis: Bei manchen Editoreinstellungen löscht die Taste <DEL> das rechte Zeichen und <BACKSPACE> das linke Zeichen.
Tasten Aktion
<CTRL>+<b> Ein Zeichen nach links
<CTRL>+<f> Ein Zeichen nach rechts
<ESC>+<b> Anfang des nächsten Wortes links
<ESC>+<f> Anfang des nächsten Wortes rechts
<CTRL>+<a> Anfang der Zeile
<CTRL>+<e> Ende der Zeile
<DEL> Löscht Zeichen links vom Cursor
<CTRL>+<d> Löscht Zeichen rechts vom Cursor
<ESC>+<DEL> Löscht das Wort links vom Cursor
<ESC>+<d> Löscht das Wort rechts vom Cursor
<CTRL>+<k> Löscht vom Cursor bis zum Ende der Zeile


Anstatt der Readline Library kann man auch einen anderen Editor für die Eingabezeile benutzen. Um z. B. den vi zu benutzen, geben Sie ein:
set -o vi

Zurück kommen Sie mit
set -o emacs


5.1.2 inputrc

Die Konfigurationsinformationen für die Eingabezeile befinden sich in der Datei /etc/inputrc. Um diese Einstellungen individuell zu ersetzen, kann im Heimatverzeichnis die Datei .inputrc erstellt werden. Die Informationen dieser Konfigurationsdatei werden nur beim Einloggen ausgelesen.

So kann z. B. die Tastaturbelegung selbst definiert werden. Die Codesequenzen, die der Shell für die Tasten übermittelt werden, können von der Eingabeoberfläche abhängen. So steht die Sequenz \e[11~ für die Taste <F1> bei einem X-Window-Terminal (xterm, kvt) oder einem Telnet-Terminal. Dagegen übermittelt die normale Linuxkonsole (linux) die Codesequenz \e[[A für das Drücken der Taste <F1>.

Um die Taste <F1> mit dem Befehl ls -l zu belegen, muß folgender Eintrag in die .inputrc gemacht werden.
"\e[11~": "ls -l"
oder
"\e[[A": "ls -l"
Jedesmal, wenn die Taste <F1> gedrückt wird, erscheint nun ls -l am Prompt. Soll der Befehl dann auch noch sofort ausgeführt werden, dann muß nur noch ein \n hinten angehängt werden.
"\e[11~": "ls -l\n"

Soll eine andere Datei für die Konfiguration verwendet werden, so muß diese mit ihrem Pfad in der Umgebungsvariablen INPUTRC angegeben werden. Bei der SuSE-Distribution ist existiert schon eine fertige Datei /etc/inputrc. Wenn Sie für Benutzer eine individuelle Konfigurationsdatei anlegen wollen, dann kopieren Sie einfach die Datei aus dem Verzeichnis /etc als .inputrc in das jeweilige Heimatverzeichnis und führen dann die Änderungen dort aus.


5.1.3 Terminaleinstellungen mit stty

Mit dem Befehl stty können die Einstellungen von Terminals angezeigt und geändert werden.

stty [-F GERÄT] [OPTIONEN]
stty [-F GERÄT] [EINSTELLUNGEN]

Optionen
-a Zeigt alle Einstellungen in für Menschen lesbarer Form an
-g Zeigt alle Einstellungen in für stty lesbarer Form an
-F Das Terminal (Standard stdin)
 

Die Grunddaten des aktuellen Terminals, das als Standardeingabe fungiert, bekommen Sie, wenn Sie den Befehl ohne Parameter aufrufen. Mit der Option -a wird es wesentlich ausführlicher. Der Aufruf mit -g ist zwar wesentlicher kompakter, aber irgendwie unverständlich für Normalsterbliche.

dozent@linux37:~> stty
speed 38400 baud; line = 0;
-brkint -imaxbel
dozent@linux37:~> stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
dozent@linux37:~> stty -g
100:5:bf:8a3b:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

Sie können sich aber auch die Daten anderer Terminals anzeigen lassen. Allerdings müssen Sie auch Rechte für dieses Terminals besitzen, was automatisch passiert, wenn Sie sich auf dem Terminal einloggen.

dozent@linux37:~> ls -l /dev/tty[12]
crw--w----    1 dozent   tty        4,   1 2004-07-01 14:25 /dev/tty1
crw-rw----    1 root     tty        4,   2 2004-07-01 08:06 /dev/tty2
dozent@linux37:~> stty -F /dev/tty1
speed 38400 baud; line = 0;
lnext = <undef>; min = 1; time = 0;
-icrnl
-icanon -echo
dozent@linux37:~> stty -F /dev/tty2
stty: /dev/tty2: Keine Berechtigung

Sie können auch über eine Umleitung ein Terminal ansprechen.

linux37:/home/dozent # stty -F /dev/ttyS0
speed 9600 baud; line = 0;
-brkint -imaxbel
linux37:/home/dozent # stty < /dev/ttyS0
speed 9600 baud; line = 0;
-brkint -imaxbel
Übrigens ist auch eine serielle Schnittstelle ein Terminal.

Interessant wird es, wenn stty zum Setzen von Eigenschaften verwendet wird. Für ein Terminal kann eine Vielzahl von Werten gesetzt werden. Diese setzen Zeichen für verschiedene Aktionen fest, verändern die Kontrollfunktionen und die Ein- und Ausgabeeigenschaften. Eine Übersicht aller Einstellungen finden Sie in der Manualpage stty(1). Hier nur ein paar Beispiele:

Sie können z. B. die Geschwindigkeit der ersten seriellen Schnittstelle auf 38400 bit/s festlegen.

stty -F /dev/ttyS0 38400

Wenn der letzte Prozess das Terminal schließt, wird mit der folgenden Anweisung das Terminal angewiesen ein SIGHUB-Signal an alle angeschlossene Prozesse zu senden. Damit sollten sich die Prozesse eigentlich beenden.

stty hupcl

Ein Minuszeichen vor der Einstellung kehrt die Bedeutung um.

stty -hupcl

Sie können sich auch die Größe des Terminals in Zeilen und Zeichen ausgeben lassen.

linux37:/home/dozent # stty size
24 80

Nach einer neuen Zeile soll möglichst auch ein Wagenrücklauf erfolgen, sprich der Cursor sollte am Anfang der Zeile stehen. Der folgende Befehl führt zu etwas Chaos auf dem Bildschirm. Können Sie ihn auch wieder rückgängig machen?

stty -onlcr

Alle Zeichen können für die Ausgabe in Großbuchstaben umgewandelt werden.

linux37:/home/dozent # stty olcuc
LINUX37:/HOME/DOZENT # STTY -OLCUC
linux37:/home/dozent #

Und es gibt noch viele Einstellungen mehr. Es ist sehr unwahrscheinlich, daß Sie etwas mit diesen Einstellungen zu tun haben sollten. Aber Sie sollten wissen, daß man mit stty die Einstellungen von Terminals abrufen und ändern kann.

5.1.4 Automatische Kommandoergänzung

Die Shell ist konzipiert worden, um dem Benutzer eine komfortable Umgebung zum Arbeiten zu schaffen. Ein Tool dafür ist die automatische Kommandoergänzung. Oft reicht es aus, nur die ersten Zeichen eines Befehls oder Dateinamens einzugeben um diesen eindeutig zu identifzieren. Durch Betätigen der Tabulator-Taste (<TAB>) versucht die Shell diesen Namen zu vervollständigen.

So erweitert die Shell nach Betätigung der Tabulator-Taste die Buchstaben ec zu dem Befehl echo.

Ist der Befehl der Dateiname nicht eindeutig über die ersten Zeichen definiert, so gibt die Shell ein Signalton zurück. Wird die Tabulator-Taste noch einmal betätigt, zeigt die Shell eine Liste von Kommandos, die mit den entsprechenden Zeichen beginnen.

So erhalten Sie beispielsweise nach Eingabe von mk und zweimaligem Betätigen der Tabulator-Taste folgende Liste5.1.

mkdir       mkfontdesc  mkmanifest      mktemp          mktexpk
mkdirhier   mkfontdir   mknod           mktexlsr        mktexftm
mkfifo      mkindex     mksusewmrc      mktexmf
Auf diese Art und Weise können Sie sich auch eine Liste aller zur Verfügung stehenden Befehle ausgeben lassen. Drücken Sie einfach am leeren Prompt zweimal die Tabulator-Taste. Da es nicht gerade wenig Befehle sind, werden Sie dann erst einmal von der Bash gefragt, ob Sie auch wirklich alle Treffer anzeigen lassen möchten.
tapico@defiant:~><TAB><TAB>
Display all 2192 possibilities? (y or n)

Genauso kann man sich auch schnell durch das Dateisystem bewegen. Durch die Eingabe von
cd /h<TAB>t<TAB>mo<TAB>l<TAB>
erhält man z. B. die Kommandosequenz cd /home/tapico/moebius/linux.

Auch wenn Sie den Pfad nicht kennen, hilft die Tabulatortaste weiter. Einfach zweimal die Tabulatortaste drücken und alle in Frage kommenden Verzeichnisse werden angezeigt.

tapico@defiant:~> cd /var/<TAB><TAB>
X11R6     games     log       opt       squid     yp
adm       lib       mail      run       tmp
cache     lock      named     spool     ucd-snmp
tapico@defiant:~> cd /var/
Und was für Verzeichnisse gilt, gilt auch für alle anderen Dateien. Dann natürlich nicht mit cd, sondern einem dateibezogenen Befehl wie z. B. less.
tapico@defiant:~> less /etc/cron<TAB><TAB>
cron.d        cron.hourly   cron.weekly   crontab.old
cron.daily    cron.monthly  crontab
tapico@defiant:~> less /etc/cron

5.1.5 Gruppierung von Kommandos

Unter Linux ist es möglich, mehrere Kommandos in einer Zeile einzugeben. Dabei werden die einzelnen Kommandos durch das Zeichen `;' getrennt.
tapico@defiant:~/test/ > date; echo "Homeverzeichnis"; ls ~
Die Sep 19 23:55:00 MEST 2000
Homeverzeichnis
Desktop     datum       public_html             test.pl         who		
Mail        datum.old   public_html_old	        test1.pl        whoami
cgi-bin     manpages    test                    test2.pl        zulu.txt
Damit die Ausgabe aller Befehle in eine Datei umgeleitet werden kann, müssen die Befehle gruppiert werden. Denn die Befehlssequenz
date; echo "Homeverzeichnis"; ls ~ > dir.txt
würde nur die Ausgabe des ls-Befehls in die Datei umlenken. Richtig muß die Kommandosequenz lauten:
(date; echo "Homeverzeichnis"; ls ~) > dir.txt
Die Klammern gruppieren die Kommandos zu einem Befehl. Deshalb wird dies als Kommandogruppierung bezeichnet.

5.1.6 Bedingte Ausführung

Die Zeichen && und || verknüpfen zwei Befehle miteinander, wobei der zweite Befehl in Abhängigkeit vom Erfolg des ersten Befehls ausgeführt wird.
less index.htm || less index.html
bewirkt, daß nur wenn der erste Befehl keinen Erfolg hat, weil z. B. die Datei nicht existiert, der zweite Befehl ausgeführt wird.

cat index.html && cp index.html /backup
bewirkt, daß nur wenn der erste Befehle erfolgreich war, der zweite Befehl ausgeführt wird.

5.1.7 Substituierung von Kommandos

Oft ist es sinnvoll die Ausgabe eines Kommandos in einem anderen Kommando zu verwerten. Das Einschließen eines Kommandos in $(...) oder in `...` bewirkt, daß die Ausgabe des Kommandos verwendet wird.
tapico@defiant:~ > echo $(pwd)
/home/tapico
tapico@defiant:~ > echo `pwd`
/home/tapico
Die obere Methode ist die neue Syntax der bash. Die zweite zeigt die Syntax der Bourne Shell. Mindestens eine der beiden Methode wird in der bash funktionieren.

5.1.7.0.1 Beispiel

Sie wollen den Kalender des aktuellen Monats in eine gleichnamigen Datei speichern.
tapico@enterprise:~/cal> cal -m > kalender-$(date +"%Y-%m").txt
tapico@enterprise:~/cal> ls -l kalender-*
-rw-r--r--    1 tapico   users         129 Apr 14 12:57 kalender-2002-04.txt


5.2 Variablen

Um bestimmte, immer wiederkehrende Zeichenfolge zu speichern, werden in der Shell sogenannte Variablen verwendet. Jede Variable besitzt einen Namen, über den auf diese Zeichenfolge zugegriffen werden kann. Einer Benutzervariable kann ein Name und ein Wert zugewiesen werden, während die Namen der Umgebungsvariablen festgelegt sind. Eine besondere Form der Benutzervariablen sind die Aliase.


5.2.1 Benutzervariablen

Benutzervariablen werden meistens in Skripten verwendet. Die Variablennamen dürfen aus Buchstaben, Ziffern und dem Unterstrich bestehen. Dabei darf das erste Zeichen keine Ziffer sein.

Den Variablen wird ein Wert durch folgende Sequenz zugewiesen.
VARIABLENNAME=WERT

Um eine Variable zu löschen, reicht es ihr einen Null-Wert zu geben.
VARIABLENNAME=

Die Variablen können nur von dem erzeugenden Prozess und seinen Kinderprozessen verwendet werden. Es sind lokale Variablen.


5.2.2 export

Um eine Variable überall zugängig zu machen, wird das bash-Kommando5.2 export verwendet.
export [OPTIONEN] [NAME[=WERT]]
export ohne die Angabe von Optionen zeigt eine Liste aller exportierten Variablen.

Optionen
-f Die Variable wird als Funktion interpretiert
-n Löschen einer Variablen aus der Liste
-p Liste aller exportierten Variablen (standard)
 

5.2.2.0.1 Beispiel

 
Folgende Kommandos erstellen eine Variable und machen sie global zugänglich.
ILove=Linux; export ILove


Tabelle 5.2: Auszug aus den Umgebungsvariablen
Name Bedeutung
? Fehlercode des letzten ausgeführten Kommandos (0 für ``OK'')
CDPATH Suchpfad für das cd-Kommando
EDITOR Name des Editors, den man verwenden möchte
EUID Effektive Benutzerkennung (ro)
FCEDIT Editor für den Befehl fc
HISTFILE Name und Pfad für die History-Datei
HISTFILESIZE Max. Größe der History-Datei
HISTSIZE Max. Anzahl von Befehlen zur Speicherung in der History-Datei
HOME Heimatverzeichnis des Benutzers
HOSTNAME Name des Rechners
INPUTRC Konfigurationsdatei für Kommandozeileneditor
PATH Suchpfad für Kommmandos
PS1 Aktueller Prompt
PS2 Prompt für die Eingabe fehlender Parameter
PWD Name des aktuellen Verzeichnisses
RANDOM Zufallszahl
SECONDS Sekunden nach Starten der Shell
SHELL Name der benutzten Login-Shell
TERM Art des Linux-Terminals
UID Benutzerkennung (ro)
USER Login-Name des Users



5.2.3 Umgebungsvariablen

Aussehen und Funktionsweise der Shell werden durch die Umgebungsvariablen festgelegt. Die Festlegung der Umgebungsvariablen erfolgt in verschiedenen Dateien, die in /etc oder im Heimatverzeichnis ~ liegen. So findet man z. B. die Umgebungsvariablen der bash in der Datei /etc/profile wieder. Einen Auszug von Umgebungsvariablen gibt Tabelle 5.2 wieder. Ausführlichere Informationen über die Umgebungsvariablen liefert das Kommando man bash.

5.2.3.0.1 Beispiel

 
Schauen wir uns als Beispiel die Variable PWD an, die den Namen des aktuellen Verzeichnisses enthält.
tapico@defiant:~/test > echo $PWD
/home/tapico/test

Der Variablen PWD kann ein neuer Wert zugewiesen werden.

 
tapico@defiant:~/test > PWD=/home/tapico
tapico@defiant:~/ > echo $PWD
/home/tapico
tapico@defiant:~/ > pwd
/home/tapico/test 
tapico@defiant:~/ > echo $PS1
\u@\h:\w >
Nach der Änderung der Umgebungsvariable PWD ändert sich auch das Aussehen des Prompts, da dieser die Umgebungsvariable nutzt. Wie aber der Befehl pwd zeigt, hat sich das aktuelle Verzeichnis nicht geändert.


5.2.4 printenv

Um sich die angelegten Umgebungsvariablen ansehen zu können, wird der Befehl printenv verwendet.
printenv [VARIABLE]
Wird keine spezielle Variable angegeben, so zeigt printenv eine Liste aller Variablen an.


5.2.5 env

env startet ein Kommando mit anderen Umgebungsvariablen.
env [OPTIONEN] [VARIABLE=WERT] [BEFEHL [ARG1] ...]
Wird kein BEFEHL angegeben, so listet env die resultierende Umgebung auf. Es arbeitet dann wie printenv (5.2.4).


5.2.6 Suchpfad

Die Umgebungsvariable PATH enthält eine Liste von Verzeichnissen, die nach einem Kommando durchsucht werden. Die einzelnen Verzeichnisnamen werden durch einen Doppelpunkt `:' getrennt. Im Gegensatz zu DOS wird das aktuelle Verzeichnis . nicht immer durchsucht, sondern muß auch in der PATH-Variable angegeben werden.
 
tapico@defiant:~/ > echo $PATH
/bin:/usr/bin:/usr/local/bin:.
Im Normalfall ist das aktuelle Verzeichnis sogar das letzte in der Suchreihenfolge. Das kann zu Problemen führen. So wird beim Ausprobieren von Skripten z. B. sehr gerne der Name test als Dateiname verwendet. test ist aber ein Programm im Verzeichnis /usr/bin. Daher wird beim Aufruf von test nicht das Skript im aktuellen Verzeichnis, sondern das Programm in /usr/bin gestartet, weil es dort zuerst gefunden wurde.

Die Variable PATH wird in der Datei /etc/profile definiert. Um die Datei für sich selber zu ändern, sollte die Änderung in den Datei ~/.bash_profile , ~/.profile oder ~/.bashrc erfolgen. Welche Datei als Beste dafür geeignet ist, ist von Distribution zu Distribution unterschiedlich.
Bsp.: PATH=$PATH:$HOME/bin


5.2.7 Prompt

Der Prompt steht immer am Anfang einer Kommandozeile. Er zeigt an, daß die Shell auf eine Eingabe wartet. Das Aussehen des Prompts wird durch die Umgebungsvariable PS1 festgelegt.

5.2.7.0.1 Beispiel

 
tapico@defiant:~ > echo $PS1
\u@\h:\w >
\u, \h und \w sind besondere Zeichen, die ausführliche Informationen enthalten. Für eine Liste der speziellen Zeichen siehe Tabelle 5.3.

Wie der Name PS1 schon vermuten läßt, existiert noch eine Umgebungsvariable PS2. Diese steuert das Aussehen des zweiten Prompts. Dieser Prompt taucht immer dann auf, wenn Sie einen Befehl noch nicht vollständig eingegeben und doch die Eingabetaste gedrückt haben. Er zeigt an, daß noch etwas fehlt.

Im folgenden Beispiel fehlt das schließende Anführungszeichen.

ole@enterprise:~> echo $PS2
>
ole@enterprise:~> PS2="ergänzen >"
ole@enterprise:~> echo $PS2
ergänzen >
ole@enterprise:~> echo "Hallo
ergänzen >Welt "
Hallo
Welt
ole@enterprise:~> echo $PS2
ergänzen >


Tabelle 5.3: Spezielle Zeichen für den Prompt. Die kursiven Worte sind Eselsbrücken zum Merken
Zeichen   Bedeutung
\a alert Piepton
\d date Datum Format: Wochentag Monat Tag
\e escape ESC-Zeichen
\h host Hostname bis zum ersten .
\H host Der ganze Hostname
\n newline Neue Zeile
\r return Wagenrücklauf
\s shell Name der Shell
\t time Zeit Format: 24 Stunden HH:MM:SS
\T time Zeit Format: 12 Stunden HH:MM:SS
\@ Zeit Format: 12 Stunden a.m./p.m.
\u user Username des aktuellen Benutzers
\v version Version der bash
\V version Ausgabenummer der bash (Version + Patchstufe)
\w working Aktuelle Arbeitsverzeichnis
\W Der Basisname des aktuellen Verzeichnisses
\! Die Nummer in der History für den aktuellen Befehl
\# Die Nummer des Kommandos für den aktuellen Befehl
\$ Wenn die effective UID 0 ist, dann #, sonst $
\nnn Zeichen mit dem oktalen ASCII-Code nnn
\\ Backslash
\[ Beginn einer Folge von nichtdruckbaren Zeichen
\] Ende einer Folge von nichtdruckbaren Zeihen



5.2.8 alias

Für häufig wiederkehrende Befehle kann ein Alias angelegt werden. Dieses Alias ist vergleichbar mit einem kleinen Skript, wird aber wesentlich schneller ausgeführt. Um z. B. für den Befehl cd .. den Alias .. zu setzen, wird folgendes Kommando eingegeben.

alias ..="cd .."

Die allgemeine Syntax für den Befehl alias lautet:

alias [NAME[=KOMMANDO]]

Dabei gibt das Kommando alias unter Angabe des Aliasnamen das dazugehörige Kommando aus. Der Aufruf ohne Parameter gibt eine Liste aller definierten Aliase mit ihren Kommandosequenzen aus.

Der Befehl alias sowie der Gegenbefehl unalias sind fester Bestandteil der Bash und direkt eingebaut.


5.2.9 unalias

Um die ganze Alias-Geschichte rückgängig zu machen, wird der Befehl unalias verwendet. Damit kann der normale Benutzer Aliase wieder entfernen, die der Systemverwalter für alle Benutzer durch Eintragen in die /etc/.profile angelegt hat.

unalias [-a] [NAMENSLISTE]

Wenn Sie den Schalter -a verwenden, arbeitet unalias sehr gründlich: Alle Alias-Definitionen werden gelöscht.


5.3 History-Liste

Die History-Liste umfaßt die letzten eingegeben Kommandos (events). Diese Liste kann dazu benutzt werden um alte Befehle wieder zu benutzen, sie zu bearbeiten oder sie zu analysieren. Dabei wird jedes Element von der Shell mit einer Nummer versehen.

Beim Starten der Shell wird die History-Liste aus der Datei .bash_history im Heimatverzeichnis erstellt. Die Umgebungsvariable HISTFILE enthält den Namen dieser Datei. Die Größe der Datei in Zeilen wird durch HISTFILESIZE bestimmt. Beim Ausloggen wird eine Anzahl von Zeilen, die in der Variablen HISTSIZE definiert worden ist, an die Datei .bash_history angehängt oder die komplette Datei wird durch diese ersetzt, je nachdem ob das histappend-Attribut der Shell gesetzt ist oder nicht. Mit den Shellvariablen HISTCONTROL und HISTIGNORE kann in Abhängigkeit von im Befehl enthaltenen Zeichen bestimmt werden, welcher Befehl in der History gespeichert wird und welcher nicht.


5.3.1 history

Das bash-Kommando history zeigt den Inhalt der History-Liste an.
history [OPTIONEN] [ZAHL]
Ohne Angabe von Parametern wird die gesamte History-Liste angezeigt. Durch Angabe einer Zahl werden die letzten ZAHL Zeilen der History-Liste angezeigt.

Optionen
-c Löschen der History-Liste
 


5.3.2 fc

Wie auch history ist fc ein bash-Kommando zur Arbeit mit der History-Liste. Es kann zur Bearbeitung und Wiederbenutzung von Kommandos verwendet werden.
 
fc -l [ANFANG] [ENDE]
fc -s [NUMMER]
Der Schalter -f in Kombination mit zwei Zahlen zeigt die Zeilen von ANFANG bis ENDE an. ANFANG und ENDE können auch Zeichenketten sein. Dann werden alle Zeichen vom ersten Auftauchen von ANFANG bis zum ersten Auftauchen von ENDE angezeigt.

Optionen
-l Zeigt ohne Parameter die letzten 16 Kommandos an.
-s Führt ohne Parameter das letzte Kommando aus. Ansonsten das Kommando mit der angegebenen Nummer.
-e Ermöglicht das Bearbeiten der History-Liste
 

Standardmäßig verwendet fc den Editor vi zum Bearbeiten. Durch setzen der Umgebungsvariablen FCEDIT kann auch ein anderer Editor dafür eingesetzt werden. So setzt

tapico@defiant:~> FCEDIT=/usr/bin/joe
tapico@defiant:~> export FCEDIT
den Editor joe als Standardeditor ein.

5.4 Umleitungen der Eingaben und Ausgaben

Normalerweise kommen die Daten für ein Programm von der Standardeingabe oder, wenn es das Programm direkt unterstützt, aus einer Datei. Die Ausgabe des Programms landet in der Standardausgabe und die Fehlermeldungen in der Standardfehlerausgabe. Im Prinzip sind Standardeingabe, Standardausgabe und Standardfehlerausgabe keine Ziele sondern Datenkanäle zu Zielen. Die Standardeingabe ist normalerweise mit der Tastatur verbunden und Standardausgabe und Standardfehlerausgabe stellen ihre Daten auf dem verbundenem Terminal dar. Diese Datenkanäle können aber auch auf ganz andere Ziel zeigen. Dies wird durch Umleitungen und Pipelines ermöglicht.


5.4.1 Umleitung der Eingabe und Ausgabe

Standardmäßig kommen die Eingaben von der Tastatur und die Ausgabe des Programms und seiner Fehlermeldungen landen auf dem Terminal und damit auf dem Bildschirm.


5.4.1.1 Ausgabe

5.4.1.1.1 Ausgabe in eine Datei

Mit dem Zeichen > oder 1> wird die Ausgabe des Programm in die angegebene Datei umgelenkt. Ob das Eingabeziel vor dem Befehl oder nach dem Befehl steht ist relativ egal. Als Konvention hat sich der Platz hinter dem Befehl eingebürgert.

ole@enterprise:~/test> cat *.txt > alle.txt
ole@enterprise:~/test> > nochmal.txt cat *.txt

Dabei wird jedesmal eine neue Datei erstellt und der Inhalt der alten Datei gelöscht.

5.4.1.1.2 Anhängen an eine Datei

Soll die Ausgabe nicht die alte Datei löschen, dann müssen die Daten an die Datei angehängt werden. In diesem Fall verwendet man >>.
ole@enterprise:~/test> date >> blubb.log
ole@enterprise:~/test> >> blubb.log echo $USER $SHELL $0
In diesem Fall wird die blubb.log nicht durch den zweiten Befehl überschrieben sondern ergänzt.

5.4.1.1.3 Ausgabe von Fehlermeldungen

Obwohl die Fehlermeldungen auch an das Terminal gehen, werden sie durch ihren eigenen Datenkanal transportiert. Dies muß natürlich auch im Umleitungszeichen ausgedrückt werden. Mit 2> wird die Standardfehlerausgabe umgeleitet. Oft stören die Fehlermeldungen, wenn sie z. B. nur melden, daß keine Zugriffsrechte auf ein Verzeichnis bestehen.

ole@enterprise:~/test> ls -Rl 2> /dev/null
ole@enterprise:~/test> 2> fehler.log ls -Rl

Die Gerätedatei ist praktisch das Nichts von Linux. Alle Daten, die in diese Datei geleitet werden, gehen verloren und werden nie wieder gesehen. Also der ideale Ort für unsinnige Warnungen, überflüssige Fehlermeldungen oder einfach zum Testen. Schade, daß ich die Ausgabe mancher Menschen nicht in ein solches Gerät umleiten kann.

5.4.1.1.4 Beide Ausgaben umleiten

Um beide Ausgaben (Standardausgabe und Standardfehlerausgabe) gemeinsam in eine Datei zu leiten, gibt es mehrere Möglichkeiten. Schauen Sie sich einfach mal die Beispiele für den Befehl grep (7.7.1), mit dem Dateien durchsucht werden können.

ole@enterprise:~/test> grep -r enterprise /etc/ &> blubb.txt
ole@enterprise:~/test> grep -r enterprise /etc/ >& blubb.txt
ole@enterprise:~/test> grep -r enterprise /etc/ > blubb.txt 2>&1
ole@enterprise:~/test> grep -r enterprise /etc/ 2> blubb.txt 1>&2

Bei den letzten Kommandos kommt es auf die Reihenfolge an. Denn die folgenden Kombinationen führen nicht zum gewünschten Erfolg.

ole@enterprise:~/test> grep -r enterprise /etc/ 2>&1 > blubb.txt
ole@enterprise:~/test> grep -r enterprise /etc/ 1>&2 2> blubb.txt


5.4.1.2 Eingabe

5.4.1.2.1 Daten aus einer Datei

Heute unterstützen die meisten Programme direkt das Lesen aus einer Datei. Allerdings ist dies nicht zwingend notwendig, da die Aufgabe des Lesens einer Datei auch die Bash übernehmen kann. Mit dem Zeichen < liest das Programm nicht von der Standardeingabe sondern holt seine Daten aus der angegeben Datei. Es ist dabei völlig egal, ob die als Eingabe dienende Datei vor oder hinter dem befehl definiert wird.

ole@enterprise:~/test> cat < input.txt
In a world without walls and fences,
who needs windows and gates?
ole@enterprise:~/test> < input.txt cat
In a world without walls and fences,
who needs windows and gates?

5.4.1.2.2 Simulation einer Datei zur Eingabe

Sie können auch den Einsatz einer Datei mit der Tastatur simulieren. Mit den Zeichen << und einem Endemarkierung können Sie auf der Tastatur so viele Zeilen eingeben, wie sie wollen. Abgeschlossen wird der Vorgang, wenn Sie in eine Zeile nur die Endemarkierung hineinschreiben.

ole@enterprise:~/test> sort <<ENDE
> Leif Neid
> Thore Wart
> Axel Schweiß
> Erk Lasse
> Walter Meingott
> ENDE
Axel Schweiß
Erk Lasse
Leif Neid
Thore Wart
Walter Meingott

Die Ein- und Ausgabeumleitungen können natürlich wild miteinander kombiniert werden. Das kann zu manchmal merkwürdigen Befehlen führen, die aber völlig in Ordnung sind.

5.4.2 Pipelines

Piplines ermöglichen es, die Ausgabe eines Kommandos direkt an die Eingabe eines anderen Kommandos zu senden. Realisiert wird dies durch ein zwischengeschaltetes Pipe-Zeichen |.

ole@enterprise:~/test> ls -l /dev | less

Eine Philosophie von Linux/Unix ist die Verwendung kleiner spezialisierter Programme anstatt großer universeller ``Eierlengender Wollmilchsäue''. Die einzelnen Kommandos werden dann mit Pipelins miteinder verbunden. Beispiele für die Anwendung der Pipelines finden Sie ausführlich in Kapitel 7 Textfilter.


5.4.3 tee

Das Kommando tee sendet gleichzeitig die Ausgabe an eine Datei und an die Standardausgabe, die der Bildschirm oder eine weitere Pipeline sein kann.
tee [OPTIONEN] DATEILISTE

Optionen
-a Die Daten werden an eine vorhandene Datei angehängt
-i Ignoriert Interrupt-Signale
 

5.4.3.1 Beispiele

Diese Kommandosequenz sendet den Inhalt des Verzeichnisses in die Datei schmeckt und auf den Bildschirm.
ls -al | tee schmeckt

Sie können auch mehrere Dateien gleichzeitig mit dem Inhalt des Verzeichnis füllen. In diesem Falls sind es die Dateien schmeckt und gut.

ls -al | tee schmeckt gut

Hier wird der Inhalt der Datei amAngelhaken an die Datei angeln.txt angefügt und gleichzeitig mit less angezeigt.

cat amAngelhaken | tee -a angeln.txt | less


5.4.4 xargs

Der Befehl xargs ermöglicht die Weitergabe von Argumenten von einem Kommando zu einem anderen.
xargs KOMMANDO
Dabei ordnet xargs die übergebenen Daten als durch Leerzeichen getrennte Reihe von Worten an.

5.4.4.1 Beispiele

Dieser Befehl ist eine gutes Beispiel für die Verarbeitung der übergebenen Daten.
ls -l | xargs echo

Dieses Beispiel faßt die in der Datei liste aufgeführten Dateien zu einer Datei myFiles zusammen und gibt sie gleichzeit mit less auf dem Bildschirm aus.
cat liste | xargs cat | tee myFiles | less

Oder wollten Sie nicht schon mal wissen, was eigentlich die Programme im Verzeichnis /bin so machen. Der Befehl whatis (6.3.3) gibt eine Kurzbeschreibung aus.
ls /bin | xargs whatis | less


Notizen:
Notizen:

Shell 2 % latex2html id marker 5559
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Sollte eine Aufgabe zu einer Fehlermeldung führen, kann das von mir gewollt sein! Prüfen Sie aber dennoch, ob Sie keinen Tippfehler gemacht haben, und ob die Voraussetzungen wie in der Aufgabenstellung gegeben sind. Auch sollten keine Verzeichniswechsel ausgeführt werden, wenn dies nicht ausdrücklich in der Aufgabe verlangt wird! Notieren Sie die Ergebnisse auf einem seperaten Zettel.

Vergewissern Sie sich vor der Bearbeitung der Aufgaben, daß die Korn-Shell installiert wurde.

139
Loggen Sie sich als Walter auf der Konsole 1 ein.
140
Führen Sie das Kommando rm -rf * aus.
141
Ermitteln Sie den Namen der aktuellen Shell.
142
Starten Sie jetzt die Korn-Shell.
143
Wiederholen Sie den Befehl aus Aufgabe 3. Welches Ergebnis erhalten Sie diesmal?
144
Kehren Sie zur ursprünglichen Shell zurück.
145
Ändern Sie für Ihren Benutzer die Standardshell auf die Korn-Shell.
146
Loggen Sie sich aus.
147
Loggen Sie sich wieder ein.
148
Wiederholen Sie den Befehl aus Aufgabe 3. Welches Ergebnis erhalten Sie diesmal?
149
Machen Sie die Shell-Änderung wieder rückgängig.
150
Loggen Sie sich wieder aus und dann wieder ein.
151
Lassen Sie sich das Tagesdatum in der in Deutschland gebräuchlichen Form (Tag.Monat.Jahr) anzeigen.
152
Welche Tastenkombination unterbricht ein laufendes Programm?
153
Was für ein Wochentag war der 18. März 1970?
154
Was war das besondere am September 1752?
155
Speichern Sie den Kalender für das Jahr 2001 in der in Deutschland gebräuchlichen Form in der Datei Kalender.
156
Wie spät ist es auf dem Linux-Rechner?
157
Mit welchem Terminaltyp arbeiten Sie gerade?
158
Erstellen Sie eine persönliche inputrc-Datei. Belegen Sie die Tasten
<F1> mit dem Befehl für den aktuellen Jahreskalender
<F2> mit dem Befehl für die Uhrzeit und
<F3> mit dem Befehl für den Editor vi.
159
Testen Sie die neuen Tastenbelegungen.
160
Lassen Sie sich die Datei /etc/DIR_COLORS anzeigen.
161
Kopieren Sie die Datei /etc/DIR_COLORS als .dir_colors in Ihr Heimatverzeichnis.
162
Ändern Sie den ls-Farbcode für Verzeichnis auf rot und unterstrichen.
163
Testen Sie die Änderung der Farbcodes.
164
Lassen Sie sich die Umgebungsvariable für den aktuellen Prompt anzeigen.

% latex2html id marker 5581
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

165
Ändern Sie den Prompt zu: ``BENUTZERNAME @ HOSTNAME SHELL SHELLVERSION+PATCHLEVEL am DATUM : VERZEICHNIS >''
Bsp.: tapico@defiant bash 2.03.0 am Fri Dec 29: ~ >
166
Loggen Sie sich aus und wieder ein. Wie sieht der Prompt nun aus?
167
Richten Sie nun die Promptänderung so ein, daß Sie bei jedem Einloggen gilt.
168
Lassen Sie sich alle Umgebungsvariablen anzeigen.
169
Welche Bedeutung hat die Variable _.
170
Geben Sie die Liste der Umgebungsvariablen zusammen mit dem Datum und dem Text ``Umgebungsvariablen'' in die Datei mit dem Namen variablenJJ-MM-TT.txt aus. Dabei steht JJ-MM-TT für das aktuelle Datum.
171
Speichern Sie die Dateinamen aus dem Verzeichnis /usr/share/doc/packages/cron in der Datei dateiliste.
172
Kopieren Sie alle Dateien aus /usr/share/doc/packages/cron und /usr/share/doc/packages/yast2 in Ihr Heimatverzeichnis.
173
Fassen Sie den Inhalt der Dateien, die Sie aus /usr/share/doc/packages/cron kopiert haben und die sich nun in Ihrem Heimatverzeichnis befinden, zu einer Datei alleAnleitungen.txt zusammen.
174
Wechseln Sie zur Konsole 2.
175
Loggen Sie sich als root ein.
176
Legen Sie das Verzeichnis /kurs/bin an und wechseln Sie in das Verzeichnis.
177
Erstellen Sie eine Datei mit dem Namen hurra und dem Befehl
echo -e "Hurra\n"
als Inhalt.
178
Geben Sie den Befehl chmod 755 hurra ein. Die Datei wird damit ausführbar.
179
Wechseln Sie wieder zur Konsole 1.
180
Starten Sie das Programm hurra. Klappt das?
181
Starten Sie nun das Programm hurra mit Angabe des Pfades /kurs/bin. Klappt das?
182
Überprüfen Sie, ob das Verzeichnis /kurs/bin in der Pfadliste enthalten ist.
183
Fügen Sie das Verzeichnis /kurs/bin der Verzeichnisliste hinzu.
184
Starten Sie nun wieder das Programm hurra. Klappt das?
185
Legen Sie das Alias adir mit ls -al | less an.
186
Legen Sie das Alias werbinich an. Es soll den Namen ausgeben, mit dem Sie sich eingeloggt haben.
187
Testen Sie die Aliase.
188
Loggen Sie sich aus und wieder ein.

% latex2html id marker 5589
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

189
Testen Sie wieder die Aliase.
190
Legen Sie in Ihrem Heimatverzeichnis eine Datei .alias ein und tragen Sie dort die beiden Aliase ein.
191
Loggen Sie sich aus und wieder ein.
192
Testen Sie wieder die Aliase.
193
Legen Sie ein Alias myenv in der Datei .alias ein. Das Alias soll für den Befehl aus Aufgabe 32 stehen.
194
Führen Sie die Datei .alias aus.
195
Testen Sie den neuen Alias.
196
Führen Sie wieder den Befehl hurra aus. Klappt das? Wenn nicht, warum nicht?


Notizen:
Notizen:


6. Hilfe und Dokumentation

 
Ein Mathematiker, ein Physiker und ein Computeruser werden getrennt von einander eingeschlossen. Jeder erhält zwei Glaskugeln. Nach einer Stunde schaut man was diese Leute damit machen. Der Mathematiker sitzt dort und berechnet das Volumen und die Oberfläche der Kugeln. Der Physiker hält die Kugeln gegen das Licht und berechnet Brechzahl und Absorptionskoeffizient. Als letztes schaut man beim Computerbenutzer herein und stellt fest, daß eine Kugel weg ist und das Fenster zerbrochen. Auf die Frage, was denn passiert sei, zuckt der User nur mit den Achseln und sagt: ``Ich hab' nix gemacht!...''
 

 
Anonymous
 

Ein nicht unerheblicher Nachteil der Shell gegenüber der graphischen Benutzeroberfläche ist eindeutig der Umstand, daß man die Befehle des Systems kennen muß. Bei der graphischen Oberfläche sind die meisten Einstellmöglichkeiten und Aktionen gut beschriftet. Sie müssen als nur Lesen können und es natürlich auch tun. Zum Glück gibt es im Linux-System und auch im Internet umfangreiche Hilfen und Anleitungen, damit Sie nicht alle Befehle auswendig lernen müssen. Dieses Kapitel stellt Ihnen die wichtigsten Hilfe-Quellen vor.


6.1 Lokale Dokumentation

Es gibt eine Reihe von lokalen Dokumentationen in einem Linux-System. Diese befinden sich alle nach dem FHS unter dem Verzeichnis /usr/share bzw. bei älteren Distributionen unter dem Verzeichnis /usr/share. Tabelle 6.1 zeigt die Typen und ihre Position im Dateisystem.


Tabelle 6.1: Die lokalen Dokumentationen und ihre Verzeichnisse
Dokumentation Verzeichnis altes Verzeichnis
Manual-Pages /usr/share/man /usr/man
Texinfo /usr/share/info /usr/info
HOWTOs /usr/share/doc/howto /usr/doc/HOWTO
Frequently Ask Questions (FAQ) nicht mehr aktuell /usr/doc/FAQ
Programm Dokumentationen /usr/share/doc/packages/PAKETNAME /usr/doc/PAKETNAME



6.1.1 Das Handbuch: Manual-Pages

Die Manual-Pages, auch oft Man-Pages genannt, sind praktisch das Handbuch zu Linux und den dazugehörigen Tools. Für fast jedes Programm der Shell gibt es eine solche ``Handbuchseite''. Neben Programmen gibt es auch Man-Pages für Konfigurationsdateien, Systemaufrufe u.a. Diese Dokumentationen sind nicht gerade benutzerfreundlich, da sie mehr als Referenz für die Syntax gedacht sind und nicht als Online-Tutorial.

Für die Verwendung der Manual-Pages wird das Tool man (6.1.2) verwendet. Dieses Tool sucht den passenden Hilfetext heraus und stellte ihn durch einen Textbetrachter dar. In den meisten Fällen ist less der Pager.

Die Hilfetexte sind in mehrere Texte aufgeteilt, wie in Tabelle 6.2 zu sehen. Es muß aber nicht unbedingt jeder Abschnitt in dem Text vorkommen.


Tabelle 6.2: Die Abschnitte in den Manual-Pages
Abschnitt Beschreibung
NAME Name und kurze Beschreibung des Kommandos
SYNOPSIS Anwendung und Syntax des Kommandos
DESCRIPTION Beschreibung des Kommandos und seiner Optionen
OPTIONS Liste aller Optionen mit Kurzbeschreibung
SEE ALSO Manual-Pages zu verwandten Inhalten
DIAGNOSTICS Beschreibung von Fehlermeldungen
FILES Liste der Dateien, die von dem Kommando verwendet werden
BUGS Bekannte Probleme
HISTORY Meilensteine der Programmentwicklung
AUTHOR Autor des Programms und Mitarbeiter


Die Handbuchseiten liegen als gezippte ASCII-Code vor, die in einem speziellen Format geschrieben wurden. Das Programm groff kann diese Seiten für die Ausgabe aufbereiten. Die Dateien für die Manual-Pages können in verschiedenen Pfaden liegen. Generell ist dies der Pfad /usr/share/man. Bei älteren Distribution liegen die Hilfetexte im Verzeichnis /usr/man. Die Umgebungsvariable MANPATH enthält die Pfade zu den Hilfetexten. Für die Ermittlung der Verzeichnisse kann auch der Befehl manpath verwendet werden.

tapico@defiant:~ > echo $MANPATH
/usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/man

In diesen Verzeichnissen existieren mehrere Unterverzeichnisse für die neun ``Kapitel'' der Manual-Pages. Am wichtigsten für Administratoren sind die Kapitel 1, 5 und 8. Eine Übersicht über die Kapitel liefert die Tabelle 6.3. Da einige Themen in mehreren Kapiteln vorkommen können, wird die Kapitelnummer bei Verweisen aufs Handbuch in Klammern hinter das Thema geschrieben. Sie finden also die Informationen zu dem Befehl passwd in der Manual-Page passwd(1) und zu der Datei /etc/passwd in der Manual-Page unter passwd(5). Es können durch Programme aber noch weitere Kapitel hinzugefügt werden, wie Sie es im folgenden Beispiel sehen. Für die SSL-Verschlüsselung gibt es auch ein Passwort-Tool.

enterprise:~ # whatis passwd
passwd (1ssl)        - compute password hashes
passwd (1)           - change user password
passwd (5)           - The password file


Tabelle 6.3: Die neun ``Kapitel'' der Manual-Pages
Verzeichnis Beschreibung
man1 Ausführbare Programm oder Shell-Kommandos für den Benutzer
man2 Systemaufrufe (Kernelfunktionen)
man3 Bibliotheksaufrufe (Funktionen mit Systembibliotheken)
man4 Spezielle Dateien (meistens Gerätedateien in /dev)
man5 Dateiformate und Konfigurationsdateien
man6 Spiele
man7 Diverses, Makropakete, Konventionen, Netzwerkprotokolle
man8 Systemadministrationskommandos
man9 Kernelroutinen (kein Standard)


Neben den normalen Benutzerbefehlen (man1), den Systemverwalterbefehlen (man8) und den Dateiformaten (man5), gibt es noch weitere wichtige Kapitel. So enthält Kapitel 7 auch Informationen über die Implementierung der Netzwerkprotokolle.

enterprise:~ # whatis tcp udp ip arp
tcp (7)              - TCP protocol.
udp (7)              - User Datagram Protocol for IPv4
ip (7)               - Linux IPv4 protocol implementation
ip (8)               - show / manipulate routing, devices, policy routing and tunnels
arp (7)              - Linux ARP kernel module.
arp (8)              - manipulate the system ARP cache

Wenn nun über den Befehl man eine Seite zu einem Thema angefordert wird, wird die erste Seite angezeigt, die gefunden wird. Dabei werden die Kapitel in der Reihenfolge
  1, 8, 2, 3, 4, 5, 6, 7, 9 
durchsucht. Deshalb findet man z. B. bei dem Aufruf von passwd immer das gleichnamige Tool. Um die Beschreibung der Benutzerliste /etc/passwd zu bekommen, muß explizit die Kapitelnummer angegeben werden.


6.1.2 man

Dieses Programm dient zum Anzeigen der Manual-Pages zu einem bestimmten Thema.
man [OPTIONEN] [SEKTION] [THEMA]

Dabei wird die erste passende Seite zu dem Thema angezeigt.

Optionen
-a Zeigt alle passenden Seiten hintereinander an
-f Zeigt eine Kurzbeschreibung zu den passenden Seiten an.
-k Stichwortsuche in der Hilfe nach den Kurzbeschreibungen
-K Volltextsuche in der Hilfe (Achtung: Nicht in jeder Version von man implantiert)
-t Gibt die angeforderte Man-Page als Postscript-Datei aus.
-L SPRACHE Gibt die Sprache für die Manual-Page an.
 

Die Konfigurationsdatei für man ist /etc/man.config bzw. /etc/manpath.config. Die Umgebungsvariable PAGER enthält den Namen des Textbetrachters, den man verwendet. Dies ist im Normalfall das Programm less (Abschnitt 4.5.10).

ole@enterprise:~> echo $PAGER
less

Die meisten Manual-Pages liegen in Englisch vor. Manche Seiten sind auch in Deutsch und anderen Sprachen erhältlich. Verantwortlich für die Auswahl der Sprache durch man ist u.a. die Variable LANG.

ole@enterprise:~> echo $LANG
de_DE@euro

Um Themen aus verschiedenen Kapiteln anzeigen zu lassen, muß die Kapitelnummer vor dem Thema angegeben werden.

ole@enterprise:~> man -f groff
groff (1)            - front end for the groff document formatting system
groff (7)            - a short reference for the GNU roff language
ole@enterprise:~> man 1 groff
Formatiere groff(1) neu, bitte warten...
ole@enterprise:~> man 7 groff
Formatiere groff(7) neu, bitte warten...

Die Manual-Page für man wird bei SuSE in einer deutschen Übersetzung angezeigt. Will man die englische Version der Seite bekommen, so muß die Sprache explizit angegeben werden.

ole@enterprise:~> man -L en man

Größere Man-Pages sind oft schlecht am Bildschirm zu lesen. Manchmal möchte man die Dateien auch ausgedruckt haben. Die folgende Befehlsfolge gibt die Manual-Page als Postscript-Datei aus, die an die Druckerwarteschlange lp weitergeleitet und ausgedruckt wird.

ole@enterprise:~> man -t cat | lpr -Plp


6.1.3 manpath

Dieses Programm versucht den aktuellen Suchpfad der Manual-Pages aus den Standardeinstellungen und der Umgebungsvariable PATH zu ermitteln.

manpath [OPTIONEN]

Wenn ein Verzeichnis nicht in der Konfigurationsdatei /etc/manpath.config aufgelistet ist, sucht manpath nach den Unterverzeichnissen man und MAN. Wenn diese existieren, werden sie dem Suchpfad hinzugefügt.

Der Befehl manpath wird von man benutzt um den Suchpfad zu bestimmen. Daher ist es für einen Benutzer im Normalfall nicht notwendig, die Umgebungsvariable MANPATH direkt zu setzen.

Weitere Informationen über Anwendung und Optionen lesen Sie bitte in den Manual-Pages manpath(1) nach.


6.1.4 TexInfo: Informationen mit info

TexInfo6.1, die GNU Hypertext Dokumentation, ist einfacher zu benutzen als die Manual-Pages und oft auch ausführlicher. Für die Darstellung der Dokumentation wird das Kommando info verwendet.

 info [KOMMANDO]

Wenn Sie nur den Befehl info eingeben, landen Sie auf einem Inhaltsverzeichnis, das die wichtigsten Themen der TexInfo auflistet. Sie können mit den Cursortasten durch das Menü scrollen. Um in einem Menüpunkt zu wechseln, die sind durch einen vorangestellten Asterisk gekennzeichnet, müssen Sie nur mit dem Cursor auf die Zeile wechseln und <Return> drücken. Alternativ können Sie auch die Taste <m> drücken. In diesem Fall erscheint in der untersten Zeile der Text ``Menu item:''. Hier können Sie den Menüpunkt direkt eintippen. Dabei sind nur so viele Zeichen nötig, wie zum einwandfreien Erkennen des Menüpunkt notwendig sind. Auch diese Aktion beenden Sie mit der Taste <Return>.

Schauen wir uns das ganze an einem Beispiel an. Geben Sie auf der Konsole den Befehl info ein. Sie landen nun im Hauptmenü der TexInfo. Sie können nun mit den Cursortasten den Cursor auf den Eintrag dd bewegen und dort <Return> drücken. Oder Sie geben die Tastenfolge <m><d><d><Return> ein.

Nun befinden Sie sich im Eintrag für den Befehl dd, der schon in Abschnitt 4.5.4 behandelt wurde. In der obersten Zeile finden Sie nun mehrere Informationen. Da diese oft ausführlicher sind, setzen sie sich meistens in der zweiten Zeile fort.

File: coreutils.info
: In dieser Datei ist der Text gespeichert, den Sie gerade sehen.
Node: dd invocation
: Auf dieser Seite bzw. diesem Thema befinden Sie sich gerade.
Next: install invocation
: Hier finden Sie den Namen des nächsten Themas. Durch betätigen der Taste <n> gelangen Sie dorthin.
Prev: cp invocation
: Auch das vorherige Thema in der Reihenfolge von TexInfo wird angegeben. Sie können durch die Taste <p> dorthin wechseln.
Up: Basic operations
: Die TexInfo ist in Abschnitte gegliedert, die wiederum Unterabschnitte u.s.w. Mit der Taste <u> können Sie in das Menü des Abschnitts wechseln, in dem die aktuelle Seite liegt.

Wechseln Sie nun mit der Taste <u> einen Abschnitt höher. Sie befinden sich nun im Abschnitt Basic Operations, der die Befehle cp, dd, install, mv, rm und shred behandelt.

Um wieder in den Abschnitt dd invocation zu wechseln können Sie die Taste l betätigen. Sie entspricht in ihrer Funktion des Zurück-Buttons im Webbrowser. Sie können natürlich auch die Menüfunktionen nutzen um in den gewünschten Abschnitt zu wechseln. Weil hier nur ein Menüeintrag mit dem Buchstaben d beginnt, brauchen Sie nur die Tastenfolge <m><d><Return> einzugeben.

Eine Übersicht über die Steuerkommandos von info liefert die Tabelle 6.4.


Tabelle 6.4: Steuerkommandos von info
\begin{table}\begin{small}
\begin{tabular*}{16cm}{p{3cm}p{13cm}}
\multicolumn{2}...
...>} & Menüpunkt mit dieser Nummer folgen\\
\end{tabular*}\end{small}
\end{table}


Bei Linux befinden sich die TexInfo-Dateien in den Verzeichnissen /usr/local/info, /usr/share/info und /usr/info.


6.1.5 help

Die Bash enthält eine Reihe von eingebauten Befehlen, die auch als Bultins bezeichnet werden. Die Hilfe zu diesen Befehlen erhalten Sie über den Befehl help, der ebenfalls Bestandteil der Bash ist.
help [KOMMANDO]

Der Befehl ohne Parameter zeigt eine Liste der Bash-internen Befehle an.

dozent@linux37:~> help
GNU bash, version 2.05b.0(1)-release (i586-suse-linux)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 %[DIGITS | WORD] [&]               (( expression ))
 . filename                         :
 [ arg... ]                         [[ expression ]]
 alias [-p] [name[=value] ... ]     bg [job_spec]
 bind [-lpvsPVS] [-m keymap] [-f fi break [n]
 builtin [shell-builtin [arg ...]]  case WORD in [PATTERN [| PATTERN].
 cd [-L|-P] [dir]                   command [-pVv] command [arg ...]
 compgen [-abcdefgjksuv] [-o option complete [-abcdefgjksuv] [-pr] [-o
 continue [n]                       declare [-afFirtx] [-p] name[=valu
 dirs [-clpv] [+N] [-N]             disown [-h] [-ar] [jobspec ...]
 echo [-neE] [arg ...]              enable [-pnds] [-a] [-f filename]
 eval [arg ...]                     exec [-cl] [-a name] file [redirec
 exit [n]                           export [-nf] [name[=value] ...] or
 false                              fc [-e ename] [-nlr] [first] [last
 fg [job_spec]                      for NAME [in WORDS ... ;] do COMMA
 for (( exp1; exp2; exp3 )); do COM function NAME { COMMANDS ; } or NA
 getopts optstring name [arg]       hash [-lr] [-p pathname] [-dt] [na
 help [-s] [pattern ...]            history [-c] [-d offset] [n] or hi
 if COMMANDS; then COMMANDS; [ elif jobs [-lnprs] [jobspec ...] or job
 kill [-s sigspec | -n signum | -si let arg [arg ...]
 local name[=value] ...             logout
 popd [+N | -N] [-n]                printf format [arguments]
 pushd [dir | +N | -N] [-n]         pwd [-PL]
 read [-ers] [-u fd] [-t timeout] [ readonly [-anf] [name[=value] ...]
 return [n]                         select NAME [in WORDS ... ;] do CO
 set [--abefhkmnptuvxBCHP] [-o opti shift [n]
 shopt [-pqsu] [-o long-option] opt source filename
 suspend [-f]                       test [expr]
 time [-p] PIPELINE                 times
 trap [arg] [signal_spec ...] or tr true
 type [-afptP] name [name ...]      typeset [-afFirtx] [-p] name[=valu
 ulimit [-SHacdflmnpstuv] [limit]   umask [-p] [-S] [mode]
 unalias [-a] [name ...]            unset [-f] [-v] [name ...]
 until COMMANDS; do COMMANDS; done  variables - Some variable names an
 wait [n]                           while COMMANDS; do COMMANDS; done
 { COMMANDS ; }


6.1.6 HOWTOs

Die Linux HOWTOs sind ausführliche Dokumente, die die Bearbeitung bestimmter Aufgaben in Linux beschreiben. Die HOWTO-Dokumente behandeln meist komplexere Aufgaben und sind daher länger. Für einfachere Aufgaben wie LILO oder Drucken gibt es kürzere Texte, die mini-HOWTOs.

Die HOWTO-Texte befinden sich meistens in komprimierter Form im Verzeichnis /usr/doc/HOWTO, /usr/doc/howto bzw. /usr/share/doc/howto. Bezugsquelle für die HOWTOs sind
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
http://sunsite.unc.edu/LDP/HOWTO/
http://www.linuxdoc.org/HOWTO/
bzw. einer Ihrer Spiegelserver.


6.1.7 FAQ

Die FAQs (Frequently Asked Questions) sind eine Sammlung von Dokumenten im Zusammenhang mit den HOWTOs. Sie sind in der Form Frage-Antwort aufgebaut, wobei die Fragen gesammelt werden, die die Benutzer am häufigsten stellen.

Die FAQs sind im HTML-, PostScript- und Text-Format vorhanden und befinden sich im Verzeichnis /usr/doc/FAQ. Die Online-Quelle für die neuesten FAQs ist
http://www.linuxdoc.org/FAQ/.

Seit SuSE 8.0 sind die FAQs kein Bestandteil mehr der Distribution. Das ist aber zu verschmerzen, da ihr Informationswert nicht sehr groß ist.


6.1.8 Programmdokumentation

Dokumentationen über spezielle Programme finden Sie im Verzeichnis /usr/doc in einem Unterverzeichnis mit dem Namen des Programms. Bei der SuSE-Distribution finden Sie weitere Informationstexte zu den Programmen der Softwarepakete im Verzeichnis /usr/share/doc/packages und dessen Unterverzeichnissen. Die meisten Texte können mit less oder more gelesen werden. Andere Dokumentationen sind als LATEX-DVI, PostScript, HMTL oder PDF zugänglich. Manche Programm legen aber auch bei Ihrer Installation eine Manual-Page an.

6.2 Internetquellen

Das Internet war und ist für Linux die Basis seiner Entwicklung. Der Quellcode für Linux ist übers Internet erhältlich. Desweiteren gibt es auch zahlreiche Dokumentationen an verschiedenen Orten. Die erste Quelle für Informationen zu Linux ist das Linux Documentation Project auf http://tldp.org/.

Auch gibt es durch dieses Projekt einige Bücher, die spezielle Themen abdecken. Diese können von http://www.tldp.org/guides.html heruntergeladen werden. U. a. sind dies

Ein weiteres Projekt für eine mehr benutzerfreundliche Dokumentation ist Linuxnewbie.org (http://www.linuxnewbie.org/).

Die Linuxgazette (http://www.linuxgazette.com/) ist ein monatlich erscheinendes Online-Magazin zum Thema Linux. Es ist Mitglied des Linux Documentation Projects. Es gibt auch eine deutsche Ausgabe (http://www.linuxgazette.de/) in der einige Artikel der englischen Ausgabe ins Deutsche übersetzt wurden.

Besonders für SuSE-Nutzer ist die SuSE-Seite (http://www.suse.de) mit ihrer Supportdatenbank (http://sdb.suse.de/sdb/de/html/)zu empfehlen, da dort die gängigsten Probleme und ihre Lösungen beschrieben werden.

Ein allgemeines Portal über Linux finden Sie unter http://www.linux.org/ wie auch unter http://www.linux.de/.

Auch ein Wiki gibt es für Linux. Unter der URL http://www.linuxwiki.de/ ist eine freie Textdatenbank zu finden, die sich mit dem Themen Linux und GNU beschäftigt.

Ein teilweise kostenpflichtiger Dienst ist http://www.lwn.net/. Hier erhalten Sie eine tägliche Übersicht über die neuesten Entwicklungen, Sicherheitslücken, Produkte usw.

Eine Zusammenfassung der wichtigsten Nachrichten und Schlagzeilen zu Linux aus verschiedenen Quellen finden Sie auf http://www.linuxkp.org/, dem Linux Knowledge Portal.

Natürlich soll auch die Seite http://www.fibel.org/ nicht vergessen werden, wo Sie dieses Skript herunterladen können. ;-)


6.2.1 Newsgroups

Eine weitere Möglichkeit um an Informationen über Linux heranzukommen sind die Newsgroups. Alle Gesamtheit aller Newsgroups wird auch als Usenet bezeichnet. Allerdings sollten Sie zuerst alle anderen Möglichkeiten ausgeschöpft haben, bevor Sie eine Frage in einer Newsgroup stellen. D. h. konsultieren Sie zuerst Manual-Pages, TexInfo, HOWTOs, FAQs, Programm- und Paketdokumentationen und auch die FAQs, die zu den Newsgroups gehören.

Für das Lesen der Newsgroups benötigen Sie einen Newsreader wie er in Netscape oder Mozilla integriert ist oder ein separates Programm wie z. B. KNode (2.4.6). Die Suchmaschine Google (http://www.google.de) hat das Newsgrouparchiv von http://www.deja.com übernommen. Sie ist eine gute Alternative um die Newsgroups mit dem Browser durchsuchen und lesen zu können.

comp.os.linux.announce
ist eine moderierte Newsgroup, die sich mit den neuesten Informationen zu Software-Updates, neuen Ports, Benutzergruppentreffen und kommerziellen Produkten beschäftigt.

comp.os.linux.answers
enthält alle FAQs, HOWTOs und andere wichtige Dokumentationen. Die HOWTOs werden immer am Anfang des Monats gepostet.

comp.os.linux.advocacy
ist das Diskussionsforum für juristischen Fragen zu Linux.

comp.os.linux.alpha
legt seinen Themenschwerpunkt auf Fragen zu Linux für Alpha-Systeme.

comp.os.linux.development.apps
beschäftig sich mit der Entwicklung von Anwendungsprogrammen für Linux.

comp.os.linux.development.system
behandelt den Bereich der Entwicklung von Linux.

comp.os.linux.embedded
ist eine Newsgroup für Embedded-Geräte unter Linux.

comp.os.linux.hardware
enthält Fragen zur Zusammenarbeit von Linux und der Hardware.

comp.os.linux.m68k
legt seinen Themenschwerpunkt auf Fragen zu Linux für Apple-Prozessoren.

comp.os.linux.networking
kümmert sich um den Netzwerkbereich von Linux.

comp.os.linux.portable
deckt den Bereich Linux für Notebooks ab.

comp.os.linux.powerpc
legt seinen Themenschwerpunkt auf Fragen zu Linux für den PowerPC.

comp.os.linux.security
ist die richtige Newsgroup, wenn es um Sicherheitsfragen zu Linux geht.

comp.os.linux.setup
beschäftigt sich mit der Administration und Konfiguration von Linux.

comp.os.linux.x
ist der graphischen Oberfläche X-Window gewidmet.

comp.os.linux.misc
deckt die Themen ab, die nicht zu den anderen Newsgroups passen.


6.2.2 KNode

Unter KDE ist das Programm KNode zum Arbeiten mit den Newsgroups vorgesehen.

Wenn Sie KNode zum ersten Mal starten, erscheint gleich das Einstellungsfenster. Sie können es aber auch nachträglich unter Einstellungen/KNode einrichten... wieder aufrufen.

Als erstes tragen Sie unter Identität die persönlichen Angaben ein, wie Sie es auch für die eMail machen.

Unter Zugang/News tragen Sie die zu verwendenden Newsserver ein. Diese halten die Artikel der einzelnen Newsgroups vor und sorgen auch für den Abgleich der Server untereinander. Entweder haben Sie von Ihrem Provider einen Newsserver benannt bekommen oder Sie müssen sich einen freien Newsserver suchen. Für freie Newsserver gibt es im Netz mehrere Suchmaschinen. Eine Liste dieser Suchmaschinen finden Sie unter
http://directory.google.com/Top/Computers/Usenet/Public_News_Servers/
Eine dieser Suchmaschinen ist Newzbot (http://www.newzbot.com/). Geben Sie einfach den Namen der Newsgroup oder einen Teil des Namens an und Newzbot ermittelt die passenden Newsserver dafür.

Über den Button Neu im Server-Dialog von KNode bekommen Sie jetzt ein Dialogfenster für den neuen Newsserver. Tragen Sie einen Namen für die Anzeige und den Namen des Newsservers ein. Unter dem Reiter Identität können Sie individuell für jeden Newsserver sich eine Identität zulegen.

Weitere Einträge brauchen Sie zuerst nicht. Im linken Rahmen von Knode ist nun der eingetragene Newsserver aufgetaucht. Sie müssen nun eine Newsgroup von dem Server abonnieren. Dazu klicken Sie mit der rechten Maustaste auf den Servernamen und wählen den Punkt Newsgruppen abonnieren... aus. Nun holt KNode vom Server die vorhandenen Gruppen. Das kann bei manchen Servern sehr lange dauern. Die Gruppen werden Ihrer Hierachie gemäß in Baumform angezeigt.

Wählen Sie nun die gewünschten Gruppen (z. B. alle Linuxgruppen) aus, indem Sie auf die schwarz umrandeten Kästchen klicken. Bestätigen Sie die Auswahl mit OK. Die Gruppen sind nun unter dem Newsserversymbol erschienen. Wenn Sie nun auf eine der Gruppen klicken, dann zeigt das linke Fenster die Zahl der vorhandenen Artikel an, während eine Liste der Artikel im rechten oberen Rahmen erscheint. Klicken Sie dort auf einen Eintrag, so erscheint der gewählte Artikel im rechten unteren Rahmen.

6.2.3 Mailinglisten

Neben den Newsgroups gibt es auch einige Mailinglisten zum Thema Linux. In einer Mailingliste senden Sie eine Mail an die eMail-Adresse der Liste. Diese eMail wird dann an alle Mitglieder weitergeleitet. Aus Sicherheitsgründen werden viele Mailinglisten moderiert und jede eMail auf Spam und Viren überprüft.

6.2.3.1 comp.os.linux.announce

Um einen Spiegel dieses Forums zu bekommen, senden Sie eine eMail an
Linux-Announce-Request$@$NEWS-DIGESTS.MIT.EDU
mit dem Wort subscribe im Nachrichtenrumpf.

6.2.3.2 majordomo$@$vger.rutgers.edu

Hier werden einige Mailinglisten zum Thema Linux gehostet. Um eine Liste aller Mailinglisten zu bekommen, senden Sie einfach eine Nachricht an diese Adresse mit dem Wort list im Nachrichtenrumpf. Steht das Wort help im Nachrichtenrumpf, dann bekommen Sie eine eMail mit der Hilfe zu diesen Mailinglisten.

6.2.3.3 SuSE Mailinglisten

Auch SuSE bietet Mailinglisten an. Diese können Sie unter
http://www.suse.de/de/private/support/mailinglists/index.html
abonnieren. Stellen Sie sich aber auf einige hundert eMails am Tag ein, wenn Sie das tun.

6.3 Suchen nach Informationen


6.3.1 whereis

Das Kommando whereis lokalisiert die Programmdatei, Quellcodedatei und die Online-Hilfe (Manual-Pages) für ein Kommando.
whereis [OPTIONEN] KOMMANDO

Die Suche ist dabei auf eine limitierte Anzahl von bekannten Verzeichnissen beschränkt. Wenn die gesuchte Datei nicht gefunden wurde, wird nur der gesuchte Name zurückgegeben.

Optionen
-b Suche nach Programmdatei (binary)
-s Suche nach Quellcodedatei (source file)
-m Suche nach Online-Hilfe (manpages)
-u Suche nach anderen Dateien (unusal entries)
 

Voreinstellung ist -bmsu zur Suche nach allen möglichen Dateien.


6.3.2 which

Das Kommando which zeigt an, welches Programm mit welchem Pfad bei Eingabe eines Kommandos gestartet wird.
which KOMMANDO
which durchsucht die Verzeichnisse, die in der Umgebungsvariablen PATH angegeben sind, und gibt den Pfad des ersten Fundorts des gesuchten Programms an.


6.3.3 whatis

Zeigt die Kurzbeschreibung der Online-Hilfe (Manual-Pages) an.
whatis [OPTIONEN] THEMA

Innerhalb jeder Manualseite ist eine Kurzbeschreibung vorhanden. whatis sucht Schlüsselwort in den Kurzbeschreibungen der Indexdatenbank. Falls es eine solche nicht im Manualpfad gibt, durchsucht es die whatis-Datenbank, die sich in /usr/man/man1 befindet, nach dem Schlüsselwort.

whatis verhält sich wie man -f.


6.3.4 mandb

Erzeugt die von whatis (6.3.3) benutzte Indexdatenbank für die Manualpages.
mandb [OPTIONEN] [PFAD]

In der Regel ist diese Datenbank die Datei /var/cache/man/index.db.


6.3.5 apropos

Der Befehl apropos ermöglich eine Stichwortsuche in der Kurzbeschreibung der Hilfe.
apropos [OPTIONEN] STICHWORT
Die Suche mit apropos ist identisch zu man -k.


6.3.6 type

Das Kommando type zeigt an, wie ein Begriff interpretiert wird, wenn er als Kommando benutzt wird.
type [OPTIONEN] BEGRIFFE

Optionen
-t Ausgabe eines einzelnen Wortes (`alias', `keyword', `function', `builtin', `file' oder ` ')
-p Gibt die Datei aus, die ausgeführt wird. (Wird nur ausgegeben, wenn -t `file' liefert.)
-a Gibt die Datei aus, die ausgeführt wird. (Wird nur ausgegeben, wenn -t `file', `alias' oder `function' liefert.)
 
Die Schalter -t, -p und -a können nicht zusammen verwendet werden.

6.4 Dokumentation und Support

Neben den reinen Kenntnissen über das Betriebssystem, die Software und die Hardware gehören für die Tätigkeit als Systemadministrator auch weiche Fähigkeiten (Soft-Skills) dazu. Zu diesen Soft-Skills gehört das Schreiben von Dokumentationen und der Benutzer-Support.

6.4.1 Dokumentationen schreiben

Eine der Aufgaben, denen sich die Leute am liebsten entziehen, ist die Dokumentation. Trotzdem ist gerade dieser Bereich der EDV besonders wichtig, weil hier Erfahrungen dauerhaft gespeichert werden können.

6.4.1.0.1 Systemübersicht

Für jeden Rechner sollte eine Systemübersicht existieren. Diese sollte umfassen: Art des Festplattencontroller, Anzahl und Art der Festplatten, Partitionsübersicht, Hostname, IP-Adresse, Peripheriegeräte, BIOS-Einstellungen u. v. m.

6.4.1.0.2 Problemlösungen

Wenn ein Problem aufgetreten ist, sollte man seine Lösung ausführlich dokumentieren. Wenn später der Fall wieder auftritt, braucht man nur nachzuschlagen.

6.4.1.0.3 Änderungen am System

Jegliche Änderungen am System sollte auch festgehalten werden. Dies umfaßt die Änderungen an der Hardware, Konfigurationsdateien, Programmen u. s. w. Dies sollte ausreichen, um das System innerhalb kürzester Zeit wieder zu rekonstruieren.

6.4.1.0.4 Dokumentation für Benutzer

Neben der Dokumentation für sich, den Administrator, sollten Sie auch in der Lage sein, Dokumentationen für die Benutzer zu schreiben. So können Sie z. B. erklären wie der Benutzer sich einloggt oder seine eMail abholen kann. Daneben sollten auch andere Administratoren in der Lage sein mit Hilfe der Dokumentation Ihr System zu warten6.2.

 

Jetzt kommt es noch darauf an, welche Art der Dokumentation man wählen soll. Es gibt zwei Arten: die elektronische Dokumentation und die Dokumentation auf Papier.

6.4.1.0.5 Elektronische Dokumentation

Die Vorteile der elektronischen Dokumentation liegen auf der Hand. Sie ist leicht auf dem neuesten Stand zu halten und leicht zu durchsuchen. Kommandoausgaben und Screenshots können leicht integriert werden. Außerdem ist sie schnell zu kopieren und kann vielen zugänglich gemacht werden. Der Nachteil ist allerdings, sie steht nur zur Verfügung wenn die Maschine läuft. Auch läßt sie sich schlecht herumtragen.

6.4.1.0.6 Dokumentation auf Papier

Die alte Methode der Dokumentation auf Papier hat auch heute noch ihre Vorteile. Sie ist auch zugänglich wenn das System unten ist. Dank der modernen Textverarbeitung können auch Screenshots und Kommandoausgaben eingearbeitet werden. Vor allem kann man sie überall hinnehmen, wo man Sie braucht. Der Nachteil dieser Form der Dokumentation liegt in ihrer schlechten Wartbarkeit. Eine Papierdokumentation auf dem neuesten Stand zu halten ist aufwendig. Daneben kann diese Form der Dokumentation schnell zu Chaos führen. Das Entziffern der Notizen, gerade bei handschriftlichen Dokumentationen, ist auch ein nicht zu unterschätzender Nachteil.

6.4.2 Benutzer-Support

Der Benutzer-Support ist eine Aufgabe, die besondere Fähigkeiten verlangt. Neben dem fachlichen Wissen sind hier vor allem der Umgang mit Menschen und die Kommunikationsfähigkeit gefragt. Sie müssen in der Lage sein Informationen so an den Benutzer weiterzugeben, daß er sie verstehen und anwenden kann.

Obwohl der Benutzer-Support sehr aufwendig ist, sollten Sie dem Benutzer nie das Gefühl geben seine Anfrage wäre Zeitverschwendung. Diese Anfragen können auf viele Arten und Weisen erfolgen. Ihr Ziel sollte es aber immer sein den Benutzer produktiver werden zu lassen.


Notizen:

Dokumentation und Hilfe % latex2html id marker 6504
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Sollte eine Aufgabe zu einer Fehlermeldung führen, kann das von mir gewollt sein! Prüfen Sie aber dennoch, ob Sie keinen Tippfehler gemacht haben, und ob die Voraussetzungen wie in der Aufgabenstellung gegeben sind. Auch sollten keine Verzeichniswechsel ausgeführt werden, wenn dies nicht ausdrücklich in der Aufgabe verlangt wird! Notieren Sie die Ergebnisse auf einem seperaten Zettel.

 

Teil 1

197
Loggen Sie sich als Walter auf der Konsole 1 ein.
198
Führen Sie den Befehl rm -rf * aus.
199
Lassen Sie sich die Online-Hilfe zum Befehl man anzeigen und informieren Sie sich über den Befehl.
200
Was sagt TexInfo über man aus?
201
Was ist Ihnen aufgefallen?
202
Suchen Sie nach dem Stichwort ``man'' in der Hilfe (Manualpages).
203
Stellen Sie fest was man ist?
204
Rufen Sie die Manual-Page des Befehls which auf.
205
Lassen Sie sich den Ort der Binärdatei zu which zeigen.
206
Um welchen Typ handelt es sich bei which?
207
Nutzen Sie die oberen Informationen, um die wahre Funktion von which zu ermitteln.
208
Sorgen Sie dafür, daß which seine ursprüngliche Aufgabe dauerhaft wieder erledigen kann. (Nutzen Sie dafür das Ergebnis aus Aufgabe 9.)
209
Was ist dir ?
210
Zu welchem Typ gehört dir ?
211
Was bewirkt der Parameter -P beim Befehl cp ?
212
Unter welche Gruppe fällt cp nach info?
213
Welche Befehle fallen noch in die Gruppe und was tun sie?
214
Was ist passwd und wo befindet es sich?
215
Zu welchem Zweck dient der Befehl rman?


Notizen:

% latex2html id marker 6538
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Teil 2

Für das Archivieren und platzsparende Packen von Dateien werden Packprogramme verwendet. Verwenden Sie die Hilfen des Linux-Betriebssystems um die folgenden Fragen zu beantworten.

 

216
Loggen Sie sich als walter ein oder wechseln Sie das Heimatverzeichnis von walter!
217
Führen Sie den Befehl rm -rf * aus.
218
Beschreiben Sie mit ein paar Sätzen jeweils die Funktion der folgenden Programme. (Anwendung, Anwendungsgebiet, Verhalten.)
  1. tar
  2. gzip
  3. compress
  4. zcat
  5. zip
219
Erläutern Sie die Schalter -d, -l, -r, -S, -t und -v von gzip.
220
Kopieren Sie aus /usr/share/man/man1 die Dateien zip.1.gz, zipgrep.1.gz und zipinfo.1.gz in Ihr Heimatverzeichnis.
221
Fassen Sie den (entpackten) Inhalt der Dateien in der neuen Datei zip.all zusammen.
222
Lassen Sie sich den Inhalt der Datei zip.1.gz mit less anzeigen.
223
Entpacken Sie die gepackten Dateien.
224
Packen Sie alle `.1'-Dateien zum Archiv zip.zip zusammen.
225
Packen Sie die Dateien noch einmal jeweils mit den Parametern -1 und -9 und vergleichen Sie die entstandenen Zip-Archive zip1.zip und zip9.zip miteinander.
226
Löschen Sie alle Dateien mit der Endung .1.
227
Welche Funktion hat das Programm unzip?
228
Lassen Sie sich Informationen über die Dateien im Zip-Archiv zip.zip anzeigen.
229
Entpacken Sie aus dem Archiv zip.zip die Datei zipgrep.1.
230
Entpacken Sie aus dem Archiv zip1.zip alle Dateien außer zipgrep.1.
231
Am 02.01.2001 wurde zum letzten Mal ihr Heimatverzeichnis gesichert. Wie sichern Sie nun alle neuen und geänderten Dateien in das Zip-Archiv bup.zip?
232
Wandeln Sie die Manpage für zip (zip.1) in eine HTML-Datei namens zip.html um.
233
Lassen Sie sich die HTML-Datei im Browser anzeigen.
234
Löschen Sie alle Zip-Archive im Heimatverzeichnis.


7. Textfilter

7.1 Ausgabe von ganzen Dateien

Um ganze Dateien auszugeben haben wir schon die Pager less (4.5.10) und more (4.5.9) sowie den Verbindungsbefehl cat (4.5.2) kennengelernt. Aber es gibt noch weitere Befehle, die sich mit der Ausgabe der ganzen Datei beschäftigen.


7.1.1 tac

Das Kommando tac dreht die Reihenfolge der Datensätze (Voreinstellung: Zeilen) in Dateien um. Diese werden dann zusammengefügt und ausgegeben.
tac [OPTIONEN] [DATEILISTE]

Werden keine speziellen Datensatztrenner (Seperatoren) angegeben, wird die Zeile als Datensatz interpretiert.

Optionen
-r Seperator wird als regulärer Ausdruck interpretiert
-s SEP Neuen Separator eingeben (Voreinstellung: NeueZeile)
 

Es werden zwar die Datensätze in einer Datei umgekehrt ausgegeben, aber die Reihenfolge der angegebenen Dateien wird nicht geändert.

ole@enterprise:~/test> cat mann
Axel Schweiß
Bert Rahm
Carlos Calvados
ole@enterprise:~/test> cat frau
Ada Bsurdum
Betti Marsch
Claire Grube
ole@enterprise:~/test> tac mann frau
Carlos Calvados
Bert Rahm
Axel Schweiß
Claire Grube
Betti Marsch
Ada Bsurdum


7.1.2 nl

Mit diesem Kommando werden der Ausgabe einer Textdatei Zeilennummern hinzugefügt.
nl [OPTIONEN] [DATEILISTE]

nl fügt für jede Zeile einer Textdatei eine Zeilennummer hinzu. Die Nummerierung beginnt bei jeder neuen Seite wieder neu.

Eine Seite gliedert sich in drei Abschnitte: header, body und footer (Kopf, Rumpf und Fuß). Die Abschnitte werden durch Zeilen eingeleitet die nur folgende Zeichenfolgen enthalten:
$\backslash$:$\backslash$:$\backslash$: für den Kopf
$\backslash$:$\backslash$: für den Rumpf
$\backslash$: für den Fuß
 

Optionen
-b STYLE Wählt die Nummeriungsart für den Rumpf aus. Wird eine Zeile nicht nummeriert, so wird der Zeilenzähler nicht erhöht. Das Trennzeichen wird aber eingefügt. Als Stilarten stehen zu Verfügung
-a         alle Zeilen nummerieren
-n         keine Zeilen nummerieren (header, footer)
-t         alle Zeilen mit Inhalt nummerieren (body)
-pREGEXP   nur Zeilen, die den Ausdruck REGEXP enthalten, nummerieren
-h Wie -b, aber für den Kopf.
-f Wie -b, aber für den Fuß.
-d CD Setzt die Abschnittsmarkierung neu (Voreinstellung $\backslash$:)
-i N Schrittweite der Nummerierung. Für jede Zeile wird N hinzuaddiert. (Voreinstellung: 1)
-l N Zählt N aufeinanderfolgende leere Zeilen als eine (Voreinstellung: 1)
-n FORMAT Setzt das Format für die Zeilenummeriung fest
ln     links ausgerichtet ohne führende Nullen
rn     rechts ausgerichtet ohne führende Nullen
rz     rechts ausgerichtet mit führenden Nullen
-p Startet die Nummeriung am Anfang einer logischen Seite nicht neu
-s STRING STRING ist die Trennzeichenkette zwischen Nummerierung und Zeile (Voreinstellung: TAB-Zeichen)
-v N Startet die Nummeriung mit N (Voreinstellung: 1)
-w N Anzahl der Zeichen für die Nummerierung (Voreinstellung: 6)
 


7.1.3 od

Das Kommando od gibt den Inhalt einer Datei in Oktal-, Dezimal-, Hexadezimal- oder ASCII-Darstellung auf der Standardausgabe aus.

od [OPTIONEN] [DATEILISTE]

Dieser Befehl wird meistens zur Ausgabe von Binärdateien eingesetzt.

Optionen
-b Byteweise Ausgabe in oktaler Form
-c Byteweise Ausgabe in ASCII-Format
-d Dezimale Ausgabe von je zwei Byte
-x Hexadezimale Ausgabe von je zwei Byte
 

7.2 Textformatierung

Die Befehle fmt, pr und fold formatieren den Dateitext um ihn z. B. für Ausgaben zu optimieren.


7.2.1 fmt

Das Kommando fmt erzeugt durch Trennen und Zusammenfügen Ausgabezeilen mit vorgegebener Zeilenlänge. Dabei liest fmt aus Dateien oder von der Standardeingabe und gibt das Ergebnis auf der Standardausgabe aus.
fmt [OPTIONEN] [DATEILISTE]

Optionen
-s Erlaubt nur das Zerlegen von Zeilen und nicht das Zusammenfügen von zu kurzen Zeilen
-u Reduziert die Anzahl der Leerzeichen zwischen Wörtern auf ein und zwischen Sätzen auf zwei Leerzeichen
-WIDTH
-w WIDTH
Gibt Zeilen mit einer Breite von WIDTH Zeichen aus. (Voreinstellung: 75)
-p PREFIX Es werden nur Zeilen verarbeitet, die mit der Zeichenfolge PREFIX beginnen. Führende Leerzeichen werden ignoriert. Führende Leerzeichen und PREFIX werden entfernt, die Zeilen werden umgebrochen und dann werden vor jeder Zeile die Leerzeichen und der PREFIX wieder angefügt. Einsatzgebiet: Umbrechen von Kommentaren in Programmen, ohne daß der Programmcode verändert wird.
 

7.2.1.0.1 Beispiel

 
Diese Kommandosequenz entfernt aus einer HTML-Datei alle überzähligen Leerzeichen.
fmt -u index.html > index.neu.html

Hier werden die Kommentare in einem Perl-Skript auf eine Zeilenlänge von 70 Zeichen umgebrochen.
fmt -p \# -w 70 sort.pl > sort.new.pl


7.2.2 pr

Das Kommando pr formatiert eine Textdatei entsprechend festgelegter Optionen.
pr [OPTIONEN] [DATEILISTE]

Wenn keine Optionen ausgewählt werden, werden die Dateien seitenweise formatiert. Jede Seite besteht aus 66 Textzeilen: einem fünfzeiligen Kopf, einem Textbereich und einem fünfzeiligen Fuß. Die Kopfzeile enthält Seitenzahl, Dateiname, Datum und Uhrzeit. Alternativ kann der Text auch in Spalten ausgegeben werden.

Optionen
+ANFANG[:ENDE] Ausgabe von Seite ANFANG bis Seite ENDE
-SP Gibt den Text in SP Spalten aus (Voreinstellung: 1)
-c Ausgabe von nichtdruckbaren Zeichen (show-control-char)
-d Fügt Leerzeilen ein (double-space)
-f
-F
Verwendet Zeilenvorschub anstatt NeueZeile
Kopf- und Fußbereich werden auf drei Zeilen reduziert (
form-feed)
-h HEADER Ersetzt den Dateinamen im Kopf durch die Zeichenkette HEADER
-l LENGTH Setzt die Seitenlänge (Voreinstellung: 66 Zeilen) (page-length)
-m Fügt Dateien spaltenweise zusammen (merge)
-n[SEP[ZAHL]] Nummeriert die Zeilen durch
SEP      Trennungszeichen
ZAHL     Anzahl der Ziffern
-N ANFANG Beginnt Nummeriung der Zeilen mit ANFANG (nur im Zusammenhang mit -n verwendet)
-s SEP Trennzeichen für Spalten
-S SEP Trennzeichenkette für Spalten
-t Führt keine Seitenformatierung durch
-w WIDTH Einstellung Textbreite auf WIDTH Zeichen
 

7.2.2.0.1 Beispiele

 
Gibt die Datei zweispaltig von Seite 4 bis Seite 10 aus.
pr -2 +4:10 linux.tex

Gibt die Datei mit Zeilennummerierung (Trennzeichen `:', 4 Ziffern) auf dem Drucker aus.
pr -n:4 hallo.pl > lpr


7.2.3 fold

Das Kommando fold gibt den Inhalt einer Datei aus, wobei die Zeilen auf eine definierte Länge umgebrochen werden.
fold [OPTIONEN] [DATEILISTE]

Im Normalfall ermittelt fold die Bildschirmspalten und bricht die Zeilen auf diese Länge um. Ein Tabulatorzeichen kann mehrere Spalten umfassen.

Optionen
-b Zählung nach Bytes und nicht nach Spalten (bytes)
-s Umbruch erfolgt wenn möglich nur an Leerzeichen (spaces)
-w WIDTH Stellt Textbreite auf WIDTH Spalten/Bytes ein (width)
 

7.2.3.0.1 Beispiel

 
Die Zeilen der Datei werden auf maximal 70 Spalten umgebrochen. Der Umbruch erfolgt nur an Leerzeichen und die Ausgabe erfolgt über less auf der Standardausgabe.
fold -s -w 70 kn20000904.txt | less

7.3 Teilen von Texten

Diese Befehlsgruppen zeigt nur Teile des Textes (head und tail) oder zerlegt ihn in mehrere Teile (split).


7.3.1 head

Das Kommando head gibt den Anfang einer Datei (Voreinstellung 10 Zeilen) auf der Standardausgabe auf.
head [OPTIONEN] [DATEILISTE]

Werden mehrere Dateien angegeben, so fügt head den Dateinamen in der Form
==> DATEINAME <==
als Kopf vor dem Ausgabetext ein. Der Befehl tail (siehe 7.3.2) arbeitet ähnlich.

Optionen
-c B Gibt anstatt der ersten 10 Zeilen, die ersten B Zeichen aus.
-n N
-N
Gibt anstatt der ersten 10 Zeilen, die ersten N Zeilen aus.
-q Unterdrückt die Ausgabe der Dateinamen als Kopfzeile
-v Schreibt immer den Dateinamen als Kopfzeile vor der Ausgabe
 

7.3.1.0.1 Beispiel

 
Diese Kommandosequenz gibt die ersten 5 Zeilen der Datei mit dem Dateinamen als Kopf aus.
head -n 5 -v links.html


7.3.2 tail

Das Kommando tail gibt das Ende einer Datei (Voreinstellung 10 Zeilen) auf der Standardausgabe auf.
tail [OPTIONEN] [DATEILISTE]

Werden mehrere Dateien angegeben, so fügt tail den Dateinamen in der Form
==> DATEINAME <==
als Kopf vor dem Ausgabetext ein. Der Befehl head (siehe 7.3.1) arbeitet ähnlich.

Optionen
-c B Gibt anstatt der letzten 10 Zeilen, die letzten B Zeichen aus.
-n N
-N
Gibt anstatt der letzten 10 Zeilen, die letzten N Zeilen aus.
-q Unterdrückt die Ausgabe der Dateinamen als Kopfzeile
-v Schreibt immer den Dateinamen als Kopfzeile vor der Ausgabe
-f Mit dieser Option überwacht tail kontinuierlich das Ende einer oder mehrerer Dateien. Wird an die Datei etwas angehängt, so werden die Änderungen ausgegeben. Die Überwachung wird mit STRG+C abgebrochen.
 

7.3.2.0.1 Beispiel

 
Diese Kommandosequenz gibt die letzten fünf Zeilen der Dateien ohne den Dateinamen als Kopf aus.
tail -n 5 -q seite1.html seite2.html seite3.html

Mit der folgenden Sequenz werden mehrere Dateien auf Veränderung überwacht. tail -fn 15 /etc/passwd /etc/group /tmp/mylogfile


7.3.3 split

Das Kommando split zerlegt Dateien in mehrere kleinere Dateien.
split [OPTIONEN] [DATEI [PREFIX]]

Wird keine Datei angegeben bzw. ``-'' als Dateiname, dann wird von der Standardeingabe gelesen.

split zerlegt eine große Datei in kleinere Dateien vordefinierter Größe (Voreinstellung: 1000 Zeilen). Die dabei entstehenden Dateien beginnen mit einem Prefix (Voreinstellung: x) und werden zweistellig mit Buchstaben durchnummeriert. (xaa, xab, xac, ...).

Optionen
-LINES
-l LINES
Größe der Ergebnisdateien in Zeilen
-b BYTES Größe der Ergebnisdateien in Bytes
b     angehängt bedeutet BYTES x 512
k     angehängt bedeutet BYTES x 1024
m     angehängt bedeutet BYTES x 1048576
 

7.4 Textstatistik

Die folgenden Befehle analysieren den Text (wc) oder ermitteln eine Checksumme (sum und chsum) für die Fehlerkontrolle.


7.4.1 wc

Das Kommando wc zählt die Zeichen, die durch Leerzeichen getrennten Worte und die Zeilen einer Eingabe.
wc [OPTIONEN] [DATEILISTE]

wc gibt pro Datei die Anzahl der Zeilen, die Anzahl der Worte, die Anzahl der Zeichen und den Namen der Datei. Werden mehrere Dateien angegeben, so wird am Schluß eine Zusammenfassung aller Dateien angezeigt.

Optionen
-c Anzahl der Zeichen ausgeben
-w Anzahl der Worte ausgeben
-l Anzahl der Zeilen ausgeben
 

7.4.1.0.1 Beispiel

 
Gibt die Anzahl der Worte und Zeilen in den drei Dateien an.
wc -lw artikel1.txt artikel2.txt artikel3.txt

Bestimmt die Anzahl der Dateien im Verzeichnis /etc. ls /etc | wc -l


7.4.2 sum

Das Kommando sum ermittelt eine 16-bit-Checksumme und die Größe (in 1 k-Blöcken) einer Datei.
sum [OPTIONEN] [DATEILISTE]


7.4.3 cksum

Das Kommando cksum ermittelt eine CRC-Checksumme und die Größe (in Bytes) einer Datei.
cksum [OPTIONEN] [DATEILISTE]

Diese Funktion benutzt einen stabileren Algorithmus (CRC: cyclic redundancy check) als sum (siehe 7.4.2).

7.5 Sortieren

Daten werden meistens erst dann richtig lesbar, wenn Sie sortiert werden. Die Tools sort, comm und uniq kümmern sich um diesen Bereich.


7.5.1 sort

Der Befehl sort durchsucht, verbindet oder vergleicht alle Zeilen einer Datei.
sort [OPTIONEN] [DATEILISTE]

sort kennt drei Arten der Funktion. Sortieren, Verbinden und Prüfen auf Sortierung.

Optionen
-c Prüft, ob die Datei sortiert ist (check sort)
-m Verbindet mehrere Dateien (die nicht sortiert werden, sondern als Gruppe behandelt werden) miteinander
-b Führende Leerzeichen eines Schlüsselfeldes werden ignoriert
-d Sortieren als Telefonverzeichnis: Nur Buchstaben, Ziffern und Leerzeichen werden berücksichtigt
-f Unterscheidet nicht zwischen Groß- und Kleinbuchstaben
-g
-n
Sortiert nach Zahlen anstatt lexikalisch
Die Optionen unterscheiden sich in der Konvertierung der Zahlen zum Vergleich
-o DATEI Ausgabe in die Datei DATEI umlenken
-r Umkehrung der Sortierung
-t SEP Trennzeichen für die Felder definieren
-u Unterdrückung von gleichen Zeilen
+POS1[-POS2] Als Schlüsselfelder werden die Felder ab POS1 bis POS2 (oder bis zum Zeilenende) verwendet.
 

7.5.1.0.1 Beispiel

 
Die Zählung der Spalten beginnt bei 0! Daher sortiert dieser Befehl die Datei mai.log nach der sechsten Spalte. Trennzeichen ist das Leerzeichen.
sort +5 -t " " mai.log > hits.log

Dieser Kommandosequenz sortiert eine Datei nach Telefonbuchmethode und unter Vernachlässigung der Groß- und Kleinschreibung.
sort -fd telefon.buch | less


7.5.2 comm

Das Kommando comm vergleicht zwei sortierte Dateien miteinander.
comm [OPTIONEN] DATEI1 DATEI2

comm gibt drei Spalten aus. In den ersten beiden Spalten stehen die Zeilen aus DATEI1 und DATEI2, die nicht in der jeweiligen anderen Datei vorkommen. In der dritten Zeile werden die gleichen Zeilen ausgegeben.


7.5.3 uniq

Das Kommando uniq entfernt aus einer sortierten Datei die doppelten Zeilen.
uniq [OPTIONEN] [INPUT [OUTPUT]]

Optionen
-c Gibt an, wie oft die Zeile vorkommt
-i Ignoriert Groß- und Kleinschreibung
-d Gibt nur die doppelten Zeilen aus
-u Gibt nur die nicht doppelten Zeilen aus
 

7.5.3.0.1 Beispiel

 
Dieser Befehl extrahiert die siebente Spalte aus der Datei mai.log, sortiert sie, entfernt die doppelten Zeilen und gibt an, wie oft die doppelten Zeilen vorkamen.
cut -f 7 -d " " mai.log | sort | uniq -c | less

7.6 Zeilenoperationen

Um einen Text Zeile für Zeile zu analysieren und zu bearbeiten sind die folgenden Befehle programmiert worden.


7.6.1 cut

Das Kommando cut gibt ausgewählte Felder (Spalten) aus jeder Zeile einer Datei auf der Standardausgabe aus.
cut [OPTIONEN] [DATEILISTE]}

Optionen
-b BYTES Zeige die angegebenen BYTES an.
-f NR Zeige das Feld (die Spalte) Nummer NR (field)
-d ZEICHEN ZEICHEN ist der Spaltentrenner (delimiter)
-s Zeilen ohne Trennzeichen (delimiter) werden nicht ausgegeben
 

Das Tabulatorzeichen ist als Trennzeichen voreingestellt. Das Trennzeichen kann ein Leerzeichen oder ein anderes Sonderzeichen sein. Dann sollte es in Anführungsstriche gesetzt (oder allgemeiner maskiert) werden.

7.6.1.0.1 Beispiel

 
Diese Kommandosequenz gibt die Benutzernamen aus der Datei /etc/passwd aus.
cut -f 1 -d : /etc/passwd

Gibt die ersten 10 Zeichen jeder Zeile aus.
ls -l | cut -b -10


7.6.2 join

Das Kommando join gibt die Zeilen aus zwei Dateien aus, die identische Vergleichsfelder besitzen.
join [OPTIONEN] DATEI1 DATEI2

Optionen
-j FIELD Vergleichsfeld aus DATEI1 und DATEI2 angeben
-j1 FIELD Vergleichsfeld aus DATEI1 angeben
-j2 FIELD Vergleichsfeld aus DATEI2 angeben
-t CHAR Das Zeichen CHAR ist Feldtrennzeichen
-i Ignoriert Groß- und Kleinschreibung
 

7.6.2.0.1 Beispiel

 
Dieser Befehl vergleicht das 2. Feld in t1.txt mit dem 3. Feld in t2.txt und gibt bei Gleichheit die passenden Zeilen aus. join -j1 2 -j2 3 t1.txt t2.txt


7.6.3 paste

Das Kommando paste fügt Dateien spaltenweise zusammen. Jede Datei erhält eine eigene Spalte.
paste [OPTIONEN] [DATEILISTE]

paste ohne Angabe von Dateien funktioniert wie cat (siehe 4.5.2). Ein - in der Dateiliste führt zu einem Lesen von der Standardeingabe.

paste eignet sich zum Zusammenführen von Daten aus mehreren Dateien.

Optionen
-d ZEICHEN ZEICHEN ist das Spaltentrennzeichen
-s Verknüpt die Zeilen einer Datei zu einer einzigen langen Zeile
 

7.6.3.0.1 Beispiel

 
Die Dateien werden zeilenweise zusammengefügt und die einzelnen Spalten mit einem ; getrennt.
paste -d ; sonnenwind.dat magnetfeld.dat teilchen.dat > new.dat

Diese Kommandosequenz liest von der Standardeingabe und schreibt die Eingaben mit einem + getrennt in eine Zeile in die Datei punkte.dat.
paste -d + -s > punkte.dat

7.7 Suchen und Ersetzen

Um bestimmte Stellen aus Texten zu extrahieren oder zu änderen werden die Tools grep, tr, expand, sed, diff und patch verwendet.


7.7.1 grep

Der Befehl grep (Global Regular Expression Print) durchsucht eine Textdatei nach bestimmten Mustern und gibt die Zeilen, in denen das Muster vorkommt, auf der Standardausgabe aus.
grep [OPTIONS] MUSTER [DATEILISTE]

Optionen
-G Interpretiert das MUSTER als regulären Ausdruck; Standarteinstellung. Nicht zusammen mit -F und -E verwenden
-E Interpretiert das MUSTER als erweiterten regulären Ausdruck. Nicht zusammen mit -F und -G verwenden
-F Interpretiert das MUSTER als einfache Zeichenkette. Nicht zusammen mit -F und -E verwenden
-c Zeigt nur die Zeilennummern der gefundenen Zeilen an
-n Zeigt zusätzlich zur Zeile auch die Zeilennummer an
-v Zeigt die Zeilen an, die nicht dem MUSTER entsprechen
-f DATEINAME Die Liste der zu bearbeitenden Dateien
-h Unterdrückt die Ausgabe des Dateinamens bei Verwendung einer Dateiliste.
-i Unterscheidet bei der Suche nicht nach Groß- und Kleinschreibung
-w MUSTER wird als ganzes Wort und nicht als Teil des Wortes betrachtet
-l Zeigt den Namen der Datei an, wenn die Zeile darin gefunden wurde
-s Fehlermeldungen unterdrücken
-r Durchsucht auch die Unterverzeichnisse
 

7.7.1.0.1 Beispiele

 
Durchsucht die Datei kuno.txt nach Zeilen mit dem Wort Bruno.
grep Bruno kuno.txt

Durchsucht alle Dateien im Verzeichnis nach der Zeichenkette `midnight' ohne Berücksichtigung der Groß- und Kleinschreibung und gibt die Namen der Dateien aus, die die Zeichenkette enthalten.
grep -il midnight *


7.7.2 egrep

Das Kommando egrep entspricht dem Befehl grep -E. Es verwendet erweiterte reguläre Ausdrücke.


7.7.3 fgrep

Das Kommando fgrep entspricht dem Befehl grep -F. Es benutzt als Suchmuster nur reine Zeichenketten.


7.7.4 tr

Das Kommando tr sendet die Standardeingabe zur Standardausgabe, wobei es mehrere Operationen auf die Daten ausführt. Mögliche Operationen sind:
tr [OPTIONEN] ZEICHENKETTE1 [ZEICHENKETTE2]

Optionen
-d Löscht die angegebenen Zeichen
-s Löscht doppelt vorkommende Zeichen
 

7.7.4.0.1 Beispiele

 
So wandelt tr mit dem Befehl
cat stundenplan.txt | tr m M > stundenplan.neu
jedes Vorkommen des Buchstabens `m' in den Buchstaben `M' um.

Das folgende Kommando löscht die Zeichen `m' und `y'.
cat etwas.txt | tr -d my

Doppelt vorkommende Zeichen werden mit dem Schalter -s gelöscht.
tr -s le < harry.txt Dabei wird dann aus der `Allee' ganz schnell `Ale'.

Um den einfachen ROT13 Verschlüsselungsalgorithmus zu verwenden, reicht die folgende Sequenz.
cat harry.txt | tr '[A-M][N-Z][a-m][n-z]' '[N-Z][A-M][n-z][a-m]'
oder
cat harry.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Dabei wird der erste Buchstabe mit dem 13. Buchstaben, der zweite mit dem 14. Buchstaben, u. s. w. getauscht. Wendet man ROT13 wieder auf verschlüsselten Text an, so erhält man den Originaltext.


7.7.5 expand und unexpand

Das Kommando expand liest aus Dateien oder von der Standardeingabe, wandelt die Tabzeichen in Leerzeichen und gibt das Ergebnis auf der Standardausgabe aus. Wird nichts anderes angegeben, dann wird ein Tabulator durch acht Leerzeichen ersetzt.

 expand [OPTIONEN] [DATEILISTE]

Optionen
-TAB1[,TAB2[,...]]
-t TAB1[,TAB2[,...]]
TABx ist die Anzahl der Leerzeichen, durch die das jeweilige Tabulatorzeichen ersetzt werden soll.
-i Tabulatoren ohne vorhergehende Leerzeichen werden nicht konvertiert.
 

Wird nur für das erste Tabulatorzeichen ein Wert angegeben, so gilt dieser Wert für alle Tabulatoren. Werden zwei oder mehr Werte eingegeben, so gelten Sie für die jeweiligen Tabulatoren. Tabulatoren, für die kein Wert angegeben wurde, werden durch einfache Leerzeichen ersetzt.

Die Gegenoperation können Sie mit dem Befehl unexpand durchführen, der Leerzeichen wieder versucht in Tabulatoren umzuwandeln.

7.7.5.0.1 Beispiel

 
Diese Kommandosequenz ersetzt den ersten Tabulator jeder Zeile der Datei helloworld.java durch 6 Leerzeichen, den zweiten durch 8 Leerzeichen und alle folgenden Tabulatoren durch ein Leerzeichen. Das Ergebnis wird in die Datei helloworld.txt geschrieben. expand -6,8 helloworld.java > helloworld.txt


7.7.6 sed

sed ist die Abkürzung für Streaming Editor. Eigentlich ist das Kommando kein Editor sondern ein Textfilter, der bestimmte Zeichenkombinationen sucht und ersetzt. Die Verarbeitung eines Streams oder Datenstroms bedeutet, daß von der Standardeingabe (stdin) Daten angenommen werden und auf die Standardausgabe (stdout) wieder ausgegeben werden. Als Datenquelle kann neben der Standardeingabe auch eine Datei fungieren.

sed [OPTIONEN] [KOMMANDO] [DATEILISTE] 
sed [OPTIONEN] [-f SCRIPTFILE] [DATEILISTE]

Es werden grundsätzlich zwei Möglichkeiten genutzt um sed aufzurufen. Im ersten Fall wird das KOMMANDO auf der Befehlszeile eingegeben und auf die angegebenen Dateien angewendet. Im zweiten Fall stehen die Anweisungen in einer externen Skriptdatei. Diese wird abgearbeitet und die darin enthaltenen Kommandos auf den Inhalt der Dateien angewendetet. Sollte keine Datei angegeben sein, so liest sed von der Standardeingabe. Dabei wird jede gelesene Zeile mit den sed-Kommandos bearbeitet und in einen Puffer geschrieben. Dessen Inhalt wird dann zum Schluß auf der Standardausgabe ausgegeben.

Optionen
-V Versionsnummer
-h Hife
-e SCRIPT Zusätzliche Skriptanweisung zur Bearbeitung
-f SCRIPTFILE Datei, die die Skriptbefehle enthält
-n Ausgabe erfolgt nur bei Benutzung des `p' Kommandos
 

Jeder Befehl kann durch einen Bereich, für den er gültig ist, eingeschränkt werden. Die Bereichsangabe erfolgt im Format
VON
oder
VON, BIS.

Dabei können die Werte für VON und BIS

7.7.6.0.1 Ersetzen

Die folgenden Sequenzen weisen sed an, eine Zeichenkette durch eine andere zu ersetzen.
sed s/SUCHEN/ERSETZEN/
sed s/SUCHEN/ERSETZEN/g
sed s/SUCHEN/ERSETZEN/p
sed -n s/SUCHEN/ERSETZEN/gp
sed s3/SUCHEN/ERSETZEN/
Die Zeichenkette zwischen dem ersten und dem zweiten Schrägstrich gibt das Suchmuster an, während die Zeichenkette zwischen dem zweiten und dem dritten Schrägstrich den Ersetzungstext enthält.

Um das Suchmuster effektiver zu gestalten, können reguläre Ausdrücke7.1 verwendet werden. Diese bestehen normalerweise aus zwei Komponenten: Die Angabe, nach welchem Zeichen gesucht wird, und die Angabe, wie oft das Zeichen auftreten darf.

Die hinten angestellten Optionen verändern die Arbeitsweise von sed. Dabei bewirkt g, daß alle Zeichenketten in der Zeile durch die neue Zeichenkette ersetzt werden (Sonst nur die erste Zeichenkette). Das p führt dazu, daß die Zeilen ausgegeben werden, in denen eine Ersetzung erfolgte. Sind beide Optionen gesetzt, so wird bei einer mehrfachen Ersetzung in einer Zeile die Zeile auch mehrfach angezeigt. Verhindert wird dies durch den Schalter -n. Das s3 sorgt dafür, daß das dritte Vorkommen von SUCHEN in der Zeile ersetzt wird.

7.7.6.0.2 Suchen

Die Sequenz
/SUCHEN/p
im Zusammenhang mit dem Schalter -n bewirkt, daß nur die Zeilen, die das Suchmuster enthalten, ausgegeben werden.

7.7.6.0.3 Zeilen löschen

Wenn der Schalter -n nicht gesetzt ist, werden alle Zeilen nach der Bearbeitung ausgegeben. Um zu verhindern, daß bestimmten Zeilen ausgegeben werden, wird die Sequenz
/SUCHEN/d
verwendet.

7.7.6.0.4 Dateien einfügen

Durch die Sequenz
/SUCHEN/r DATEINAME
werden alle Zeilen, die das Suchmuster enthalten, durch den Inhalt der Datei DATEINAME ersetzt.

7.7.6.0.5 Auswahl in Datei schreiben

Durch die Sequenz
/SUCHEN/w DATEINAME
werden alle Zeilen, die das Suchmuster enthalten, in die Datei DATEINAME geschrieben.

7.7.6.0.6 Beispiele

 
Ersetzt jedes Wort ``UNIX'' durch das Wort ``Linux'' in der Datei einleitung.tex.
sed 's/UNIX/Linux/g' einleitung.tex

Ersetzt jedes Wort ``paragraph'' durch das Wort ``subsubsection'' in der Datei linux.tex und schreibt das Ergebnis in die Datei linuxneu.tex.
sed 's/paragraph/subsubsection/g' linux.tex > linuxneu.tex

Einen interessanten Effekt hat das Zeichen '&' in der Ersetzungszeichenkette. Die gesuchte Zeichenkette wird nicht ersetzt, sondern die Ersetzungszeichenkette wird hinten angefügt.
sed 's/</&lt;/g' index.html
Damit die schließende spitze Klammer ersetzt wird, muß das kaufmännische Und auskommentiert werden.
sed 's/</\</g' index.html

Ersetzt alle Zeichenfolgen ``man'' durch ``frau'' in den Zeilen 1 bis 3 in der Datei einleitung.tex. Dabei werden nur die Zeilen ausgegeben, in denen die Änderung erfolgte.
sed -n '1,3s/man/frau/p' einleitung.tex

Gibt alle Zeilen aus, die entweder ``man'' oder ``frau'' enthalten.
sed -n -e '/man/p' -e '/frau/p' einleitung.tex

Das folgende Kommando löscht alle Zeilen, die die Zahl `0' enthalten.
sed '/0/d' einleitung.tex

Alle Zeilen, die die Zeichenkette ``include'' enthalten, werden durch den Inhalt der Datei include.txt ersetzt.
sed '/include/r include.txt' einleitung.txt

Alle Zeilen, die die Zeichenkette ``section'' enthalten, werden in die Datei inhalt.txt geschrieben. sed '/section/w inhalt.txt' einleitung.tex


7.7.7 diff

Das Kommando diff vergleicht zwei Textdateien miteinander. Als Ergebnis wird eine Liste aller Zeilen ausgegeben, die voneinander abweichen. Dabei erkennt das Programm auch eingefügte Zeilen und arbeitet danach reibungslos weiter. Im Gegensatz zu comm (siehe 7.5.2) kann diff auch auf unsortierte Dateien angewendet werden. Der Befehl wird hauptsächlich dazu verwendet die Abweichungen zwischen zwei Versionen eines Programmlistings rasch zu dokumentieren.
diff [OPTIONEN] DATEI1 DATEI2

Optionen
-b Betrachtet mehrfache Leerzeichen und Leerzeilen als einfache Leerzeichen bzw. Leerzeilen
-c Ausgabe als 'Context Diffs'
-e Ausgabe als Skript für den Befehl ed
-r Vergleicht den Inhalt zweier Verzeichnisbäume
-u Ausgabe als 'Unified Diffs'
-w Ignoriert Leerzeichen und Leerzeilen ganz
 

Die Ausgabe von diff besteht aus sogenannten 'hunks', was man frei als 'Stücke' übersetzen kann. Ein Hunk besteht aus bis zu vier Teilen: einer Informationszeile, dem alten Text, einer Trennzeile und dem neuen Text. Beim Einfügen und Löschen von Zeilen fehlt die alte oder neue Textinformation und die dann überflüssige Trennzeile fällt auch weg.

In der Informationszeile steht, an welcher Stelle in der jeweiligen Datei die Änderung stattgefunden hat und welche Operationen nötig sind um die erste Eingabedatei DATEI1 in die zweite Eingabedatei DATEI2 zu verwandeln. Dabei stehen die Buchstaben 'a', 'c' und 'd' für 'add' (Zeilen hinzufügen), 'change' (Zeilen verändern) und 'delete' (Zeilen löschen). Die Zahlen bzw. Zahlenbereiche links und rechts von den Buchstaben geben die betroffenen Zeilen an.

Alle Hunks zusammengenommen bilden den Patch, der die erste Datei in die zweite Datei verwandelt. Es geht auch umgekehrt, da Patches dieser Art symmetrisch sind und rückwärts angewendet werden können (`reverse patching´);

7.7.7.0.1 Beispiel

 
Um zwei Perlscripte miteinander zu vergleichen, ohne mehrfache Leerzeichen zu berücksichtigen, gibt man das folgende Kommando ein.
 diff -b div.pl.old div.pl

Soll die Ausgabe für den Editor ed verarbeitbar sein, dann muß das Kommando lauten:

 diff -be div.pl.old div.pl

Die Anwendung von diff fürs Patchen von Programmen beschreibt der Abschnitt 7.7.9.


7.7.8 patch

Da das Patchen von Programmen mit ed einige Probleme aufweist hat Larry Wall das Programm patch entwickelt, das später vom GNU-Projekt weiterentwickelt wurde. Es ist in der Lage, alle gängigen diff-Formate zu verstehen.
 patch [OPTIONEN] [ORIGINALDATEI [PATCHDATEI]]

Optionen
-c Interpretiere den Patch als Context Diff
-e Interpretiere den Patch als ed-Skript
-u Interpretiere den Patch als Unified Diff
 


7.7.9 Praxisbeispiel: Patchen von Programmen

Das Patchen von Programmen hat viele Vorteile. So muß z. B. nicht das ganze Programm heruntergeladen oder per eMail versandt werden. Außerdem enthält der Patch nur die Änderungen im Programm. So muß ein Mitautor nicht erst mühselig im Programm die Änderungen suchen, sondern sie werden ihm komprimiert übergeben.

Als Beispiel schauen wird uns zwei Versionen eines Perl-Skripts an.

Listing 7.1   div.pl

   1: #!/usr/bin/perl
   2: 
   3: # Dieses Programm teilt zwei Zahlen durcheinander
   4: 
   5: # Eingabe
   6: print "Zähler: ";
   7: $z = <STDIN>;
   8: chomp($z);
   9: print "Nenner: ";
  10: $n = <STDIN>;
  11: chomp($n);
  12: 
  13: # Verarbeitung
  14: $erg = int($z / $n);
  15: $rest = "Rest ". ($z % $n);
  16: 
  17: # Ausgabe
  18: print "$z / $n = $erg $rest\n";
  19: 
  20: exit(0);

Listing 7.2   div2.pl

   1: #!/usr/bin/perl
   2: 
   3: # Dieses Programm teilt zwei Zahlen durcheinander
   4: # Version 2
   5: 
   6: # Eingabe
   7: print "Zähler: ";
   8: $z = <STDIN>;
   9: chomp($z);
  10: print "Nenner: ";
  11: $n = <STDIN>;
  12: chomp($n);
  13: 
  14: # Verarbeitung
  15: # Verarbeitung nur, wenn der Nenner ungleich Null ist
  16: if ($n != 0) {
  17:   $erg = int($z / $n);
  18:   $rest = "Rest ". ($z % $n);
  19: } else {
  20:   $erg = "unendlich";
  21:   $rest = "";
  22: }
  23: 
  24: # Ausgabe
  25: print "$z / $n = $erg $rest\n";
  26: 
  27: exit(0);

diff liefert uns nun die Unterschiede der beiden Skripte.

tapico@defiant:~/perl > diff div.pl div2.pl
3a4
> # Version 2
14,15c15,22
< $erg = int($z / $n);
< $rest = "Rest ". ($z % $n);
---
> # Verarbeitung nur, wenn der Nenner ungleich Null ist
> if ($n != 0) {
>   $erg = int($z / $n);
>   $rest = "Rest ". ($z % $n);
> } else {
>   $erg = "unendlich";
>   $rest = "";
> }

Manuell können mit diesen Informationen nun die Änderungen an der Datei div.pl durchgeführt werden.

Da dies bei größeren Projekten doch problematisch ist, kann auch ein Skript für den Editor ed erstellt werden.

tapico@defiant:~/perl > diff -e div.pl div2.pl
14,15c
# Verarbeitung nur, wenn der Nenner ungleich Null ist
if ($n != 0) {
  $erg = int($z / $n);
  $rest = "Rest ". ($z % $n);
} else {
  $erg = "unendlich";
  $rest = "";
}
.
3a
# Version 2
.

Wenn Sie die Ausgabe als Datei gespeichert haben, kann nun jemand anders mit dem Editor ed die alte Datei (div.pl) mit dem Patch (hier die Datei div.patch) bearbeiten und daraus die neue Datei (div2.pl) erstellen.

barclay@enterprise:~/projekt > (cat div.patch; echo w div2.pl) | ed - div.pl

Dies setzt aber voraus, daß an der alten Datei nichts geändert worden ist. Daher gibt es zwei andere Formate, die mehr Sicherheit beim Patchen versprechen.

7.7.9.0.1 Context Diff

tapico@defiant:~/perl > diff -c div.pl div2.pl
*** div.pl	Sun Sep 23 14:36:48 2001
--- div2.pl	Sun Sep 23 14:36:12 2001
***************
*** 1,6 ****
--- 1,7 ----
  #!/usr/bin/perl
  
  # Dieses Programm teilt zwei Zahlen durcheinander
+ # Version 2
  
  # Eingabe
  print "Zähler: ";
***************
*** 11,18 ****
  chomp($n);
  
  # Verarbeitung
! $erg = int($z / $n);
! $rest = "Rest ". ($z % $n);
  
  # Ausgabe
  print "$z / $n = $erg $rest\n";
--- 12,25 ----
  chomp($n);
  
  # Verarbeitung
! # Verarbeitung nur, wenn der Nenner ungleich Null ist
! if ($n != 0) {
!   $erg = int($z / $n);
!   $rest = "Rest ". ($z % $n);
! } else {
!   $erg = "unendlich";
!   $rest = "";
! }
  
  # Ausgabe
  print "$z / $n = $erg $rest\n";

7.7.9.0.2 Unified Diff

tapico@defiant:~/perl > diff -u div.pl div2.pl
--- div.pl	Sun Sep 23 14:36:48 2001
+++ div2.pl	Sun Sep 23 14:36:12 2001
@@ -1,6 +1,7 @@
 #!/usr/bin/perl
 
 # Dieses Programm teilt zwei Zahlen durcheinander
+# Version 2
 
 # Eingabe
 print "Zähler: ";
@@ -11,8 +12,14 @@
 chomp($n);
 
 # Verarbeitung
-$erg = int($z / $n);
-$rest = "Rest ". ($z % $n);
+# Verarbeitung nur, wenn der Nenner ungleich Null ist
+if ($n != 0) {
+  $erg = int($z / $n);
+  $rest = "Rest ". ($z % $n);
+} else {
+  $erg = "unendlich";
+  $rest = "";
+}
 
 # Ausgabe
 print "$z / $n = $erg $rest\n";

Diese beiden Formate, wie auch die anderen, können mit dem Befehl patch die Veränderung durchführen.

barclay@enterprise:~/projekt > patch < div.c.patch
Die im Patch angegebene Datei (div.pl) ist nun verändert worden.


Notizen:


Notizen:

Textverarbeitung und Textfilter % latex2html id marker 8448
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

Sollte eine Aufgabe zu einer Fehlermeldung führen, kann das von mir gewollt sein! Prüfen Sie aber dennoch, ob Sie keinen Tippfehler gemacht haben, und ob die Voraussetzungen wie in der Aufgabenstellung gegeben sind. Auch sollten keine Verzeichniswechsel ausgeführt werden, wenn dies nicht ausdrücklich in der Aufgabe verlangt wird! Notieren Sie die Ergebnisse auf einem seperaten Zettel.

 

235
Loggen Sie sich als Walter ein!
236
Führen Sie den Befehl rm -rf * aus.
237
Kopieren Sie aus dem Verzeichnis /usr/share/man/man1 die Datei less.1.gz ins Heimatverzeichnis.
238
Erzeugen Sie aus der Datei less.1.gz die HTML-Datei less.html.
239
Lassen Sie sich den Inhalt der Datei less.html seitenweise anzeigen!
240
Erzeugen Sie mit dem vi eine Textdatei, die mindestens 3 Zeilenvorschübe beinhaltet (4 Zeilen lang)! Name der Datei: funny !
241
Kopieren Sie die Datei /usr/share/man/man1/more.1.gz in Ihr Heimatverzeichnis und machen Sie wie in Aufgabe 4 eine HTML-Datei daraus.
242
Lassen Sie sich Inhalt von more.html und funny in Ihrem Heimatverzeichnis nacheinander seitenweise auf dem Bildschirm anzeigen, dazu ist nur ein Befehl einzugeben!
243
Erstellen Sie mit einem einzigen Befehl aus den Dateien more.html und funny eine neue Datei namens hummer.
244
Lassen Sie sich den Inhalt von hummer anzeigen.
245
Löschen Sie die Dateien funny und hummer in Ihrem Heimatverzeichnis!
246
Wie lauten die letzten (10) Zeilen der Datei less.html.
247
Lassen Sie sich den Inhalt der Datei less.html in oktaler Form anzeigen!
248
Kopieren Sie alle Dateien, die mit `mc' beginnen, aus dem Verzeichnis /usr/share/man/man1/ in Ihr Heimatverzeichnis.
249
Wandeln Sie wie in Aufgabe 4 die kopierten Dateien in HTML-Dateien.
250
Lassen Sie sich die ersten 5 Zeilen der Datei mcopy.html anzeigen.
251
Wieviele Wörter und Zeilen enthält die Datei more.html?
252
Welche Datei im Heimatverzeichnis enthält die Zeichenkette `Midnight'?
253
Schauen Sie sich die Datei /etc/passwd an.
254
Wieviele Zeilen enthält sie?
255
Lassen Sie sich die ersten 20 Zeilen der Datei /etc/passwd numeriert anzeigen.
256
Geben Sie die erste Spalte der Datei /etc/passwd aus.
257
Geben Sie sortiert die erste Spalte der Datei /etc/passwd aus.
258
Geben Sie sortiert die erste Spalte der Datei /etc/passwd aus und speichern Sie das Ergebnis in der Datei ~/passwd.sort.

% latex2html id marker 8522
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large \...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

 

259
Schreiben Sie den Inhalt der Datei /etc/passwd in umgekehrter Zeilenfolge in die Datei ~/passwd.reverse.
260
Vergleichen Sie die CRC-Checksummen von /etc/passwd, ~/passwd.sort und ~/passwd.reverse.

261
Lassen Sie sich die Logdatei für Warnmeldungen des Systems /var/log/warn anzeigen. Welche Bedeutung haben wohl die einzelnen Spalten?
262
Lassen Sie sich alle Zeilen von heute ausgeben.
263
Lassen Sie sich alle Zeilen vom letzten Arbeitstag ausgeben.
264
Wieviele Warnmeldungen gab es?
265
Geben Sie die beiden ersten Spalten aus.
266
Geben Sie die beiden ersten Spalten aus, entfernen Sie alle doppelten Zeilen.
267
Lassen Sie sich anzeigen, wieviele Warnmeldungen es pro Tag gab.
268
Sortieren Sie diese Liste absteigend nach der Häufigkeit.

269
Verfassen Sie mit dem Editor vi eine Botschaft an Ihren Nachbarn und speichern Sie diese in der Datei gutenachricht.txt.
270
Verschlüsseln Sie den Inhalt der Datei mit dem ROT13-Verfahren und speichern Sie das Ergebnis in der Datei gutenachricht.krypto.
271
Senden Sie Ihrem Nachbarn die Datei zu. (eMail, FTP, Turnschuhnetz etc.)
272
Entschlüsseln Sie die Nachricht Ihres Nachbarn.
273
Was bedeutet der Satz ``Qvr Nhstnora fvaq sregvt''?


Notizen:


8. Benutzerverwaltung


8.1 Benutzer

Nach der Installation von Linux existiert nur ein Benutzerkonto. Dieses Benutzerkonto ist root, das Konto für den Superuser. Daher muß der Administrator (Superuser) für die Arbeit weitere Konten anlegen.


8.1.1 Der Superuser root

Das Konto root wird nicht umsonst als Superuser bezeichnet. Der Benutzer unter diesem Konto darf im System alles. Er hat vollen Zugriff auf alle Verzeichnisse, Dateien und Geräte im System. Damit kann er auch alles löschen. Diese Aktion kann aber zu erheblichen Schäden am System führen, somit sollte man als Superuser sehr vorsichtig handeln.

Der Superuser root besitzt die UID 0 (User IDentification) und wird wie alle anderen Benutzer in der Datei /etc/passwd definiert. Da das System die Benutzer nicht nach ihrem Namen identifiziert, sondern nach ihrer UID, kann der Superuser auch einen anderen Lognamen bekommen. Da Linux wie das Christentum nur einen Gott kennt, nä