|
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.
| 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.
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.
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 :-(.
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.
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
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
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
März: Version 1.20
Juni: Version 1.30
Die Anwenderzahl hat sich auf rund 1,5 Millionen Benutzern erhöht.
Juni: Version 2.00
September: Version 2.10
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
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
Januar: Version 2.20
Mai: Version 2.30
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.
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.
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.
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.
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.
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.
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.
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.
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.
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\modules4auf fünf 3,5''-Disketten installieren, wenn die CD im Laufwerk R: liegt. Die Disketten müssen vorher formatiert werden1.3.
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.
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
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.
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.
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.
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.
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.
Die Module Gruppen bearbeiten und anlegen und Neue Gruppen anlegen sind für die Verwaltung der Gruppen zuständig.
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.
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
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.
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:
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.
Noch einige Hinweise zu KDE.
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.
Über die genaue Bedeutung der einzelnen Anzeige möchte ich jetzt nicht eingehen, da dies den Umfang dieses Kapitels sprengen würde.
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.
Wollen Sie ein Programm auf dem Desktop verewigen, was nicht im Menü erscheint, dann müssen Sie wie folgt vorgehen.
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.
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) |
kdesu -u wwwrun -c nedit
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
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.
| Persönliches Verzeichnis | <Windows>+<E> |
| Konquerer (Webbrowser) | <Windows>+<K> |
| KMail | <Windows>+<M> |
| Yast2 | <Windows>+<Y> |
| KCalc | <Windows>+<T> |
Testen Sie den Erfolg.
Notizen:
| 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.
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.
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.
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.
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.
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.
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.
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 |
| 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.
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 ...
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.
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
--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.
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 |
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
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 /
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.
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«
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
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
Nach einem man cp wird das Dokument entpackt und dann mit dem passenden Pager angezeigt.
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
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.
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
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.
|
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.
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 |
chsh -s /usr/bin/ksh
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.
<Q> oder <Q><RETURN> für ``quit'' führen oft zum Erfolg. (z. B. less (4.5.10), more (4.5.9) und top (12.8.3))
<STRG>+<D> steht für Ende-der-Datei. Damit können Sie vor allem Programme beenden, die auf eine Eingabe warten. (z. B. cat (4.5.2), wenn es von der Standardeingabe liest, und at (13.1.1)). Sollten Sie sich aber direkt in der Shell befinden, dann werden Sie damit ausgeloggt.
<STRG>+<C>. Hiermit wird das laufende Programm aufgefordert, sich sofort zu beenden.
<ESC><:><Q><!><RETURN>
<STRG>+<C> als normalen Ende-Befehl.
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.
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.
~. 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
pwd
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.
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. |
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:
/etc/DIR_COLORS festgelegt. Um die Farben selbst bestimmen zu können, muß die Datei als .dir_colors in das Heimatverzeichnis kopiert werden.
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.
|
ole@enterprise:~> type dir dir is aliased to `ls -l'
ls -l. Die meisten Schalter sind mit denen von ls identisch. Mehr Informationen entnehmen Sie bitte der Manual-Page oder der Texinfo zu vdir.
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 |
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
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. |
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.
touch [OPTIONEN] [DATEILISTE]
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) |
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.
cp [OPTIONEN] QUELLDATEI ZIELDATEI cp [OPTIONEN] QUELLDATEILISTE ZIELVERZEICHNISWird 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 |
cp -dpRP * \backup
dd [OPTIONEN]
| Optionen | |
| if=DATEI | Die Eingabedatei |
| of=DATEI | Die Ausgabedatei |
| bs=BLOCKGRÖSSE | Anzahl der Bytes, die auf einmal gelesen bzw. geschrieben werden. |
dd if=/dev/fd0 bs=512 of=BackupDisk
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=8kdie Bootdisketten erzeugt werden.
mv [OPTIONEN] ALTERDATEINAME NEUERDATEINAME mv [OPTIONEN] QUELLDATEILISTE ZIELVERZEICHNISWerden 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 |
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
rm [OPTIONEN] DATEILISTEUm 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 |
rm *.temp
Vorsicht! Dieser Befehl versucht die gesamte Dateistruktur ohne Nachfragen zu löschen. Als root ausgeführt ist das Ergebnis fatal.
rm -rf /
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.
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
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
[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
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
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 |
less [OPTIONEN] DATEILISTENeben 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).
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 |
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)
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.
clear
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 |
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
|
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.
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.
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.
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
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.
<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
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logout
script [OPTIONEN] [DATEI]
Wird kein Dateiname angegeben, so wird automatisch die Datei typescript angelegt.
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.
tty
tapico@defiant:~ > tty /dev/pts/0
Shell 1
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.
rm -rf * aus. Was bewirkt der Befehl?
echo text > datei) eine Datei namens keks in ihrem Heimatverzeichnis (Inhalt beliebig)!
Eine Übersicht über die Steuerungsbefehle finden Sie in Tabelle 5.1.
|
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
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.
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.
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 mktexmfAuf 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
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.txtDamit die Ausgabe aller Befehle in eine Datei umgeleitet werden kann, müssen die Befehle gruppiert werden. Denn die Befehlssequenz
date; echo "Homeverzeichnis"; ls ~ > dir.txtwürde nur die Ausgabe des ls-Befehls in die Datei umlenken. Richtig muß die Kommandosequenz lauten:
(date; echo "Homeverzeichnis"; ls ~) > dir.txtDie Klammern gruppieren die Kommandos zu einem Befehl. Deshalb wird dies als Kommandogruppierung bezeichnet.
&& 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.htmlbewirkt, 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 /backupbewirkt, daß nur wenn der erste Befehle erfolgreich war, der zweite Befehl ausgeführt wird.
$(...) oder in `...` bewirkt, daß die Ausgabe des Kommandos verwendet wird.
tapico@defiant:~ > echo $(pwd) /home/tapico tapico@defiant:~ > echo `pwd` /home/tapicoDie 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.
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
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.
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) |
ILove=Linux; export ILove
|
~ 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.
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.
printenv [VARIABLE]Wird keine spezielle Variable angegeben, so zeigt printenv eine Liste aller Variablen an.
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).
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
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 >
|
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.
unalias [-a] [NAMENSLISTE]
Wenn Sie den Schalter -a verwenden, arbeitet unalias sehr gründlich: Alle Alias-Definitionen werden gelöscht.
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.
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 |
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 FCEDITden Editor joe als Standardeditor ein.
> 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.
>>.
ole@enterprise:~/test> date >> blubb.log ole@enterprise:~/test> >> blubb.log echo $USER $SHELL $0In diesem Fall wird die blubb.log nicht durch den zweiten Befehl überschrieben sondern ergänzt.
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.
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
< 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?
<< 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.
|.
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.
tee [OPTIONEN] DATEILISTE
| Optionen | |
| -a | Die Daten werden an eine vorhandene Datei angehängt |
| -i | Ignoriert Interrupt-Signale |
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
xargs KOMMANDODabei ordnet xargs die übergebenen Daten als durch Leerzeichen getrennte Reihe von Worten an.
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
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.
rm -rf * aus.
<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.
@ HOSTNAME SHELL SHELLVERSION+PATCHLEVEL am DATUM : VERZEICHNIS >''
tapico@defiant bash 2.03.0 am Fri Dec 29: ~ >
_.
echo -e "Hurra\n"
chmod 755 hurra ein. Die Datei wird damit ausführbar.
ls -al | less an.
Notizen:
Notizen:
| 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.
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.
|
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
|
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.
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
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.
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.
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.
Bei Linux befinden sich die TexInfo-Dateien in den Verzeichnissen /usr/local/info, /usr/share/info und /usr/info.
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 ; }
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.
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.
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. ;-)
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.
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.
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.
which KOMMANDOwhich durchsucht die Verzeichnisse, die in der Umgebungsvariablen PATH angegeben sind, und gibt den Pfad des ersten Fundorts des gesuchten Programms 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.
mandb [OPTIONEN] [PFAD]
In der Regel ist diese Datenbank die Datei /var/cache/man/index.db.
apropos [OPTIONEN] STICHWORTDie Suche mit apropos ist identisch zu man -k.
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.) |
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.
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
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
rm -rf * aus.
Notizen:
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.
rm -rf * aus.
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
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:
| für den Kopf | |
| für den Rumpf | |
| 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 |
| -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) |
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 |
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. |
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
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 |
pr -2 +4:10 linux.tex
Gibt die Datei mit Zeilennummerierung (Trennzeichen `:', 4 Ziffern) auf dem Drucker aus.
pr -n:4 hallo.pl > lpr
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) |
fold -s -w 70 kn20000904.txt | less
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 |
head -n 5 -v links.html
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. |
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
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 |
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 |
wc -lw artikel1.txt artikel2.txt artikel3.txt
Bestimmt die Anzahl der Dateien im Verzeichnis /etc.
ls /etc | wc -l
sum [OPTIONEN] [DATEILISTE]
cksum [OPTIONEN] [DATEILISTE]
Diese Funktion benutzt einen stabileren Algorithmus (CRC: cyclic redundancy check) als sum (siehe 7.4.2).
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. |
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
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.
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 |
cut -f 7 -d " " mai.log | sort | uniq -c | less
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.
cut -f 1 -d : /etc/passwd
Gibt die ersten 10 Zeichen jeder Zeile aus.
ls -l | cut -b -10
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 |
join -j1 2 -j2 3 t1.txt t2.txt
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 |
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
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 |
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 *
tr [OPTIONEN] ZEICHENKETTE1 [ZEICHENKETTE2]
| Optionen | |
| -d | Löscht die angegebenen Zeichen |
| -s | Löscht doppelt vorkommende Zeichen |
cat stundenplan.txt | tr m M > stundenplan.neu
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.
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.
expand -6,8 helloworld.java > helloworld.txt
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
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.
/SUCHEN/p
/SUCHEN/d
/SUCHEN/r DATEINAME
/SUCHEN/w DATEINAME
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/</</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
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´);
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.
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 |
Als Beispiel schauen wird uns zwei Versionen eines Perl-Skripts an.
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);
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.
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";
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.patchDie im Patch angegebene Datei (div.pl) ist nun verändert worden.
Notizen:
Notizen:
Textverarbeitung und Textfilter
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.
rm -rf * aus.
~/passwd.sort.
~/passwd.reverse.
~/passwd.sort und ~/passwd.reverse.
Notizen:
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ä