Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Unix -Systeme zeichnen sich durch eine Vielzahl von aus mit denen sich über eine Shell das Betriebssystem bedienen lässt. Die Syntax Kommandos weicht unter den diversen Shells voneinander Es existieren zwei Hauptströmungen BSD - und System V -Derivate. Viele Kommandos gibt es in mehreren mittlerweile sind auch die Open Source GNU -Tools weit verbreitet. Die meisten Kommandos verfügen einbuchstabige Optionen die mit einem Bindestrich angehängt und die Funktionalität verändern oder erweitern z.B. ein "cp -R" rekursiv ein ganzes Verzeichnis samt aller Inhalte und Unterverzeichnisse. Die erlauben auch lange Optionsnamen wie "cp --recursive". Befehle und Programme von Unix-Derivaten sind weitere Kommandos aufgeführt.
Im Folgenden wird in Klammern angegeben welcher Unix-Variante das Kommando erstmals auftaucht bzw. der seine Verbreitung ausgeht:
(V7) - das Kommando ist in der V7 von 1979 enthalten
Die grundlegende Philosophie der Unix-Kommandos ist Baukasten-Prinzip: Statt großer spezialisierter Programme für ganze werden kleine spezialisierte Kommandos für elementare Aufgaben die miteinander verknüpft werden können um komplexere durchzuführen.
Unix-Systeme werden traditionellerweise über die Kommandozeile Zwar gibt es inzwischen auch Desktop-Environments für Unix und unixartige Systeme jedoch von vielen Nutzern weiterhin die Kommandozeile bevorzugt. liegt auch daran dass die Shells (Kommandozeileinterpreter) Unix traditionell wesentlich leistungsfähiger sind als z. der DOS-Kommandozeileninterpreter.
Neben der interaktiven Nutzung haben die auch die Aufgabe so genannte Shellscripts auszuführen. sind grob vergleichbar mit DOS-Stapelverarbeitungsdateien sind jedoch der wesentlich besseren Ausstattung der Unix-Shells mit oft deutlich leistungsfähiger. Insbesondere erlauben es die mit einfacher Syntax die Kommando-"Bausteine" zu verknüpfen.
Die Shells enthalten einige eingebaute Kommandos. modernen Shells beipielsweise:
test(SH): Testet Bedingungen z.B. -le (less or <=) und Dateieigenschaften
expr(SH): Berechnung von arithmetischen Ausdrücken
read(SH): Lesen einer Zeile von der Eingabe eine Variable
Ein mächtiges Hilfsmittel ist Verwendung einer Pipe zur Ein-/Ausgabeumlenkung
<kommando1> | <kommando2>
Man kann mehrere Filter miteinander verknüpfen. der Regel erwartet ein Filter die Eingabe der Standardeingabe (Tastatur). Die Ausgabe erfolgt auf Standardausgabe (Bildschirm). Beim Piping wird die Ausgabe Kommandos in die Standardeingabe des folgenden Kommandos Das Unix-Betriebssystem stellt dabei einen Puffer-Speicherbereich zur der die ausführenden Prozesse entkoppelt.
Beispiel:
grep Unix testdatei | sort
In der Datei testdatei werden alle gesucht die das Wort "Unix" enthalten diese dann sortiert ausgegeben.
Für komplexere Anwendungen lassen sich auch Pipes definieren auf die dann wie auf Datei zugegriffen werden kann:
mkfifo: benannte Pipe anlegen
Beispiel:
In einer Shell:
mkfifo Rohr ls > Rohr
Hier wird erst eine benannte Pipe und dann das aktuelle Verzeichnis in diese
Danach in einer anderen Shell (z. in einem anderen Fenster):
cat Rohr
Hier wird der "Inhalt" von Rohr und auf der Standardausgabe ausgegeben. Es erscheint die Ausgabe von ls aus der ersten Shell in der Standardausgabe der zweiten Shell.
Danach kann die Pipe wie eine Datei gelöscht werden:
Das Unix-Hilfesystem basiert wesentlich auf den genannten Manpages (für manual page Handbuchseite). Idealerweise liegt für jedes Kommando Aufruf der Programmierschnittstelle (Systemfunktionen C-Bibliothek) und jede Konfigurationsdatei eine eigene man page vor.
Die Manpages sind zudem in durchnummerierte unterteilt die unterschiedliche Schnittstellen abdecken (Benutzerkommandos Administrations-Kommandos etc.).
Die Manpages sind in troff geschrieben kann neben der ASCII-Textversion für die Online-Anzeige eine gedruckte Version generiert werden.
Die Kommandos des Manpage-Systems:
man (V7): Handbuchseiten ( MANual page )
ruft die Manpage für ein bestimmtes eine bestimmte Funktion etc. auf.
whatis:
gibt eine einzeilige Kurzbeschreibung des Programmes.
apropos:
sucht in den Kurzbeschreibungen nach einer und gibt die passenden Einträge samt Kurzbeschreibung Beispielsweise gibt
apropos color
alle Einträge in denen das Wort "color"
Von GNU kommt ein alternatives Hilfssystem texinfo das auf Hypertext beruht. Dieses ist den Editor Emacs integriert es gibt aber einen reinen info-Browser:
info (GNU): browsebares Handbuch zu einem Kommando
Zunehmend werden für GUI -Programme auch HTML -Seiten als Hilfedateien verwendet.
Folgendes ist eine unvollständige Zusammenstellung wichtiger
Dateien sind unter Unix (wie eigentlich allen modernen Betriebssystemen) in Verzeichnissen geordnet. Unter gibt es jedoch anders als z.B. unter oder Windows nur einen einzigen Verzeichnisbaum in der Inhalt anderer Datenträger bei Bedarf "eingehängt"
Zur Verzeichnisverwaltung stehen u.a. folgende Befehle Verfügung:
mkdir (V7): erzeugt ein neues Verzeichnis
rmdir (V7): löscht ein (leeres) Verzeichnis
cd (SH): wechselt in ein anderes Verzeichnis
pushd (CSH): wechselt in ein anderes Verzeichnis sich aber vorher das aktuelle Verzeichnis
popd (CSH): kehrt ins vorherige Verzeichnis (vor letzten pushd) zurück
Unix ist von Anfang an ein Das bedeutet dass verschiedene Benutzer am Rechner können und voreinander abgeschottet werden: Man kann Benutzern erlauben oder verbieten auf bestimmte Dateien Zusätzlich kann man Benutzer auch Gruppen zuordnen kollektiv bestimmte Zugriffsrechte gewährt werden können. Eine Rolle spielt der Benutzer root (Systemadministrator) der einziger Benutzer vollen Zugriff auf das System
Jeder Benutzer hat typischerweise sein eigenes in welchem nur er (und root) Dateien und löschen kann.
Einige Kommandos:
su (V7): Benutzer wechseln ( Substitute User )
useradd oder adduser: Einen neuen Benutzer anlegen.
w: Wer ist alles angemeldet? Und was Sie?
who (V7): Wer ist alles angemeldet?
whoami: Wer bin ich ?
chmod (V7): Zugriffsrechte auf Dateien ändern ( CHange MODe )
chown (V7): Eigentümer und/oder Gruppe ändern ( Change OWNer )
chgrp (V7): Gruppenzugehörigkeit ändern ( Change GRouP )
Eine der Stärken von Unix sind vielen Zubehörprogramme insbesondere (aber nicht nur) zur von Textdateien. Die Stärke beruht u. a. dass die Zubehörprogramme leicht über pipes "zusammengeschaltet" werden können um komplexere Aufgaben erfüllen.
cat (V7): Ausgabe und/oder Verkettung von Textdateien der Kommandozeile ( conCATenate )
cut: Auswählen bestimmter Spalten bei der Ausgabe.
echo (V7): Ausgabe
grep (V7): Anzeige aller Zeilen einer Textdatei auf einen regulären Ausdruck passen.
less (GNU) und more: seitenweise Ausgabe einer
sort (V7): nach bestimmten Kriterien sortieren.
strings: zeigt nur die druckbaren Zeichen (ASCII) Binärdatei an.
sed (V7): mächtiges Werkzeug zur Textmanipulation ( Stream EDitor )
So mächtig die Kommandos zur Textmanipulation sind für größere Änderungen an Texten sind besser geeignet. Selbstverständlich gibt es diese auch Unix. Weit verbreitet sind u. a.:
Emacs (GNU -): leistungsfähiger Editor mit Lisp -Interpreter
Unix wurde zusammen mit dem leistungsfähigen troff entwickelt das unter anderem Tabellen- und ermöglicht.
Auch die Manualseiten können mit diesem gesetzt werden. nroff erlaubt die Ausgabe auf Textterminals und Das betriebssystemunabhängige TeX hat jedoch *roff weitgehend abgelöst. Auch GNU-Hilfesystem texinfo arbeitet mit TeX für die Druckausgabe.
troff (V7): Makroorientiertes Textsatzsystem für Linotype-Fotosatzmachinen
nroff (V7): Makroorientiertes System für Terminal und