Unix-Systeme zeichnen sich durch eine Vielzahl von Kommandos aus, mit denen sich über eine Shell das Betriebssystem bedienen lässt. Die Syntax dieser Kommandos weicht unter den verschiedenen Systemen voneinander ab. Es existieren die beiden Hauptströmungen BSD und System V. Viele Kommandos gibt es in mehreren Varianten, auch die GNU-Tools als freie Software sind weit verbreitet. Die meisten Kommandos verfügen über ein- oder mehrbuchstabige Optionsschalter, die die Funktionalität verändern oder erweitern. Viele grundlegende Kommandos sind durch Standards wie POSIX vereinheitlicht, und daher auf fast allen Unix-Varianten zu finden.
Die grundlegende Philosophie der Unix-Kommandos ist das Baukasten-Prinzip: Statt großer, „alleskönnender“ Programme für ganze Aufgabengebiete werden kleine, spezialisierte Kommandos für elementare Aufgaben bereitgestellt, die miteinander verknüpft werden können, um komplexere Aktionen durchzuführen.
Im Folgenden wird in Klammern angegeben, bei welcher Unix-Variante das Kommando erstmals auftaucht beziehungsweise von der seine Verbreitung ausgeht und ob POSIX dieses Kommando spezifiziert:
→ Hauptartikel: Unix-Shell
Unix-Systeme werden traditionellerweise über die Kommandozeile bedient. Zwar gibt es auch Arbeitsumgebungen für Unix und unixartige Systeme, jedoch wird von vielen Nutzern weiterhin die Kommandozeile bevorzugt. Dies liegt mitunter daran, dass die Shells (Kommandozeileninterpreter) unter Unix wesentlich leistungsfähiger sind als zum Beispiel der DOS-Kommandozeileninterpreter. Außerdem ist eine Shell bei manchen Aufgaben einem grafischen Benutzerinterface überlegen, da durch die Shell-Syntax zum Beispiel Ablaufsteuerung und Programmrückmeldungen einbezogen werden können, was bei grafischen Anwendungen meist nicht möglich ist.
Neben der interaktiven Nutzung haben die Shells auch die Aufgabe, so genannte Shellskripte auszuführen. Diese sind grob vergleichbar mit DOS-Stapelverarbeitungsdateien, sind jedoch aufgrund der wesentlich besseren Ausstattung der Unix-Shells mit Kontrollstrukturen oft deutlich leistungsfähiger. Insbesondere erlauben es die Shells, mit einfacher Syntax die Kommando-„Bausteine“ zu verknüpfen, was bei DOS erst ab MS-DOS 2 möglich ist (neuere DOSe (z.b. FreeDOS,DCP) in der Regel von Anfang an).
Im Gegensatz zu DOS-Befehlen, die oft einfach englische Worte sind (z.b. TYPE,FORMAT) habe UNIX-Befehle oft stark Abgekürzte Namen (ed, w), oder sogar Fantasienamen die nichts mit ihrer Wirkung zu tun haben (zb. awk, less) und erfordern oft eine schwierige Einarbeitung.
Die Shells enthalten einige eingebaute Kommandos, hier einige Beispiele:
POSIX standardisiert keine Pfade. POSIX standardisiert nur, dass ein Programm sh existieren muss, das zu einer POSIX-Shell kompatibel ist und dass dieses Programm nach Eingabe von PATH=`getconf PATH` sh aufgefunden werden muss.
(Weitere Shells siehe unter Unix-Shells)
Ein Unix-Programm kennt drei Standardkommunikationswege:
Auf der Standardfehlerausgabe werden per Konvention Diagnose- und Fehlermeldungen oder Warnungen ausgegeben. Nicht immer halten sich alle Programme an diese Vereinbarung, dort kann dann die Weiterverarbeitung der Ausgabedaten unter Umständen kompliziert werden.
Filter sind Kommandos, die diese Standardkommunikationswege benutzen, Eingabedaten über stdin bekommen, diese in irgendeiner Weise aufbereiten, und an stdout ausgeben. Das Programm wc für word count (Wortanzahl) zum Beispiel zählt die Wörter die über seine Standardeingabe kommen und gibt das Ergebnis auf stdout aus.
Man kann die Standardkommunikationswege „umbiegen“. In der Regel tut man das, um aus einer Datei zu lesen oder in eine Datei zu schreiben.
wc -l < test.dat
ls > dir.dat
ls >> dir.dat
wc -l < test.dat 2> err.log
Das Prinzip der Ein-/Ausgabeumlenkung findet man auch im Betriebssystem MS-DOS.
Ein mächtiges Hilfsmittel ist die Verwendung einer Pipe zur Ein- und Ausgabeumlenkung
<Kommando1> | <Kommando2>
Man kann mehrere Filter miteinander verknüpfen (hintereinander hängen). In der Regel erwartet ein Filter die Eingabe von der Standardeingabe (Tastatur). Die Ausgabe erfolgt auf der Standardausgabe (Bildschirm). Beim Piping wird die Ausgabe eines Kommandos über eine im Betriebssystem-Kern implementierte Pipe in die Standardeingabe des folgenden Kommandos umgeleitet.
Beispiel:
grep Fidibus testdatei | tr '[:lower:]' '[:upper:]' | sort
In der Datei testdatei werden mittels grep alle Zeilen gesucht und ausgegeben, die das Wort „Fidibus“ enthalten, danach wandelt tr alle Kleinbuchstaben in Großbuchstaben um, und zum Schluss wird alles sortiert und auf dem Bildschirm ausgegeben. Diese Art der Pipes nennt man anonyme Pipes.
Diese Form der Ein- und Ausgabeumlenkung ist so alltäglich, dass es eine Vielzahl an Kommandos gibt, die erst durch diese Technik überhaupt sinnvoll sind – beispielsweise das oben genannte wc (word count), das ohne die Eingabeumleitung (weg von der Tastatur, hin auf eine Datei) kaum ein Einsatzgebiet hätte.
Zur dahinterliegenden Technik ist zu bemerken, dass die einzelnen Filter als jeweils eigene Prozesse gestartet werden und so quasi gleichzeitig ihre Arbeit verrichten, während die Pipes dafür sorgen, dass die Filter bei Bedarf so aufeinander warten, dass keine größeren Mengen an Zwischenergebnissen anfallen, die entsprechende Mengen an Speicherplatz in Anspruch nehmen würden.
Für komplexere Anwendungen lassen sich auch benannte Pipes (FIFOs) definieren, auf die dann wie auf eine Datei zugegriffen werden kann:
mkfifo Rohr
ls > Rohr
cat Rohr
rm Rohr
Ein Einsatzgebiet ist etwa, wenn ein Filter Daten von verschiedenen Quellen mischen will – beispielsweise paste, dass zwei Dateien nimmt und zeilenweise nebeneinander ausgibt.
siehe auch: GNU core utilities (Sammlung von grundlegenden Befehlszeilen-Programmen unter freier Lizenz)
Das Unix-Hilfesystem basiert wesentlich auf den so genannten Manpages (für manual page, Handbuchseite). Idealerweise liegt für jedes Kommando, jeden Aufruf der Programmierschnittstelle (Systemfunktionen, C-Bibliothek) und jede wichtige Konfigurationsdatei eine eigene man page vor.
Die Handbuchseiten sind zudem in durchnummerierte Bereiche unterteilt, die unterschiedliche Schnittstellen abdecken (Benutzerkommandos, Administrations-Kommandos, C-Funktionen etc.).
Hilfeseiten sind im Format des Textsatzprogramms troff geschrieben, daher kann neben der ASCII-Textversion für die Online-Anzeige auch eine druckbare Version generiert werden.
Von GNU kommt ein alternatives Hilfssystem namens texinfo, das auf Hypertext beruht. Dieses ist in den Editor Emacs integriert, es gibt aber auch einen reinen info-Browser:
Die Tendenz geht anscheinend dahin, dass die GNU-Programmierer die manual pages etwas stiefmütterlich behandeln und das vollständigere und auch meistens korrektere Handbuch in Texinfo-Form liefern.
Zunehmend werden für GUI-Programme auch HTML-Seiten als Hilfedateien verwendet.
Folgendes ist eine unvollständige Zusammenstellung wichtiger Unix-Kommandos.
Der Umgang mit Dateien ist ein wesentlicher Teil der Arbeit am Computer. Dementsprechend gibt es auch unter Unix-Kommandos zum Umgang mit Dateien:
Dateien sind unter Unix (wie eigentlich auf allen modernen Betriebssystemen) in Verzeichnissen geordnet. Unter Unix gibt es jedoch, anders als etwa unter MS-DOS oder Windows, nur einen einzigen Verzeichnisbaum, in den der Inhalt anderer Datenträger bei Bedarf an einer bestimmten Stelle im Baum „eingehängt“ wird.
Zur Verzeichnisverwaltung stehen unter anderem folgende Befehle zur Verfügung:
Unix war von Anfang an ein Mehrbenutzerbetriebssystem (beispielsweise kann MS-Windows dies erst seit der NT-Generation). Das bedeutet, dass verschiedene Benutzer am Rechner arbeiten können und voreinander abgeschottet werden: Man kann anderen Benutzern erlauben oder verbieten, auf bestimmte Dateien zuzugreifen. Zusätzlich kann man Benutzer auch Gruppen zuordnen, denen kollektiv bestimmte Zugriffsrechte gewährt werden können. Eine besondere Rolle spielt der Benutzer root (Systemadministrator), der als einziger Benutzer vollen Zugriff auf das System hat.
Jeder Benutzer hat typischerweise sein eigenes Heimatverzeichnis, in welchem nur er (und root) Dateien anlegen und löschen kann.
Kommandos (Auswahl):
Eine der Stärken von Unix sind seine vielen Zubehörprogramme, insbesondere (aber nicht nur) zur Bearbeitung von Textdateien. Die Stärke beruht unter anderem darauf, dass die Zubehörprogramme leicht über pipes „zusammengeschaltet“ werden können, um komplexere Aufgaben zu erfüllen.
Weit verbreitet sind unter anderem:
Unix wurde zusammen mit dem leistungsfähigen Textsatzsystem troff entwickelt, das unter anderem Tabellen- und Formelsatz ermöglicht.
Auch die Manualseiten können mit diesem System gesetzt werden. nroff erlaubt die Ausgabe auf Textterminals und Zeilendrucker. Das betriebssystemunabhängige TeX hat jedoch *roff weitgehend abgelöst. Auch das GNU-Hilfesystem texinfo arbeitet mit TeX für die Druckausgabe.
Dieser Artikel basiert auf dem Artikel Passwd aus der freien Enzyklopädie Wikipedia und ist unter der Lizenz Creative Commons Attribution/Share Alike verfügbar. Zusätzliche Bedingungen können anwendbar sein. In der Wikipedia ist eine Liste der Autoren verfügbar. |