Unix-Kommando
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 diversen Shells voneinander ab. Es existieren zwei Hauptströmungen, BSD- und System V-Derivate. Viele Kommandos gibt es in mehreren Varianten, mittlerweile sind auch die Open Source GNU-Tools weit verbreitet. Die meisten Kommandos verfügen über Optionen, die mit einem Bindestrich angehängt werden und die Funktionalität verändern oder erweitern, z.B. kopiert ein "cp -R" rekursiv ein ganzes Verzeichnis, samt aller Inhalte und Unterverzeichnisse.
siehe auch:
Folgendes ist eine unvollständige Zusammenstellung wichtiger Unix-Kommandos.
Unix-Systeme werden traditionellerweise über die Kommandozeile bedient. Zwar gibt es inzwischen auch Desktop-Environments für Unix und unixartige Systeme, jedoch wird von vielen Nutzern weiterhin die Kommandozeile bevorzugt. Dies liegt auch daran, dass die Shells (Kommandozeileinterpreter) unter Unix traditionell wesentlich leistungsfähiger sind als z.B. der DOS-Kommandozeileninterpreter.
Neben der interaktiven Nutzung haben die Shells auch die Aufgabe, so genannte Shellscripts 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.
Die wichtigsten Shells:
- sh: einfachste Shell (Bourne Shell), die auf fast jedem Unix installiert ist (meist unter /bin/sh).
- bash (GNU): Weiterentwicklung der sh (Bourne Again SHell)
- csh: mit einer der Programmiersprache C ähnlichen Syntax (C-SHell)
- tcsh: Weiterentwicklung der C-Shell
- ksh: (Korn SHell)
Hilfe
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 Manpage vor.
Die Manpages sind zudem in durchnummerierte Bereiche unterteilt, die unterschiedliche Schnittstellen abdecken (Benutzerkommandos, Administrations-Kommandos, C-Funktionen, etc.).
Die Manpages sind in troff geschrieben, daher kann neben der ASCII-Textversion für die Online-Anzeige auch eine gedruckte Version generiert werden.
Die Kommandos des Manpage-Systems:
- man: Handbuchseiten (MANual page)
- ruft die Manpage für ein bestimmtes Programm, eine bestimmte Funktion, etc. auf.
- whatis:
- gibt eine einzeilige Kurzbeschreibung des Programmes.
- apropos:
- sucht in den Kurzbeschreibungen nach einer Zeichenfolge und gibt die passenden Einträge samt Kurzbeschreibung zurück. Beispielsweise gibt
apropos color
- alle Einträge, in denen das Wort "color" vorkommt.
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:
- info (GNU): browsebares Handbuch zu einem Kommando
Dateioperationen
Der Umgang mit Dateien ist ein wesentlicher Teil der Arbeit am Computer. Dementsprechend gibt es auch unter Unix Kommandos zum Umgang mit Dateien:
- cd: Wechsel des aktuellen Verzeichnisses (Change Directory)
- cp: Datei kopieren (CoPy)
- ls: Dateien in einem Verzeichnis anzeigen (LiSt)
- mv: eine Datei verschieben oder umbenennen (MoVe)
- pwd: Anzeige des aktuellen Verzeichnispfades (Print Working Directory)
- rm: Löschen einer Datei (ReMove)
- tar: Archivierungsprogramm (Tape ARchive)
- gzip: Kompressionstool
Pipes
Ein mächtiges Hilfsmittel stellt die Funktion pipe dar.
<kommando1> | <kommando2>
Man kann mehrere Kommandos - auch Filter genannt - miteinander verknüpfen. In der Regel erwartet ein Kommando/Filter die Eingabe von Standardinput (Tastatur). Die Ausgabe erfolgt auf Standardoutput (Bildschirm). Beim Piping wird die Ausgabe eines Kommandos in die Standardeingabe des folgenden Kommandos umgeleitet.
Beispiel:
grep Unix testdatei | sort
In der Datei testdatei werden alle Zeilen gesucht, die das Wort "Unix" enthalten, diese werden dann sortiert ausgegeben.
Verzeichnisse
Dateien sind unter Unix (wie eigentlich auf allen modernen Betriebssystemen) in Verzeichnissen geordnet. Unter Unix gibt es jedoch, anders als z.B. unter DOS oder Windows, nur einen einzigen Verzeichnisbaum, in den der Inhalt anderer Datenträger bei Bedarf "eingehängt" wird.
Zur Verzeichnisverwaltung stehen u.a. folgende Befehle zur Verfügung:
- mkdir: erzeugt ein neues Verzeichnis
- rmdir: löscht ein (leeres) Verzeichnis
- cd: wechselt in ein anderes Verzeichnis
- pushd: wechselt in ein anderes Verzeichnis, merkt sich aber vorher das aktuelle Verzeichnis
- popd: kehrt ins vorherige Verzeichnis (vor dem letzten pushd) zurück
Dateisystem
- df: Anzeige des freien Speicherplatzes (Disk Free)
- fsck: Dateisystem überprüfen (FileSystem ChecK)
- mount und umount: Montage und Demontage eines Dateisystems (Einhängen in den/Aushängen aus dem Verzeichnusbaum)
Benutzer- und Rechteverwaltung
Unix ist von Anfang an ein Multi-User-Betriebssystem. 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.
Einige Kommandos:
- su: Benutzer wechseln (Substitute User)
- useradd oder adduser: Einen neuen Benutzer anlegen.
- w: Wer ist alles angemeldet? Und was tun Sie?
- who: Wer ist alles angemeldet?
- whoami: Wer bin ich ?
- chmod: Zugriffsrechte auf Dateien ändern (CHange MODe)
- chown: Eigentümer und/oder Gruppe ändern (Change OWNer)
- chgrp: Gruppenzugehörigkeit ändern (Change GRouP)
Textmanipulation
Eine der Stärken von Unix sind seine vielen Utilities, insbesondere (aber nicht nur) zur Bearbeitung von Textdateien. Die Stärke beruht u.a. darauf, dass die Utilities leicht über Pipes "zusammengeschaltet" werden können, um komplexere Aufgaben zu erfüllen.
- cat: Ausgabe und/oder Verkettung von Textdateien in der Kommandozeile (conCATenate)
- cut: Unterdrücken bestimmter Zeilen bei der Ausgabe.
- echo: Ausgabe
- grep: Anzeige aller Zeilen einer Textdatei, die auf einen regulären Ausdruck passen.
- less und more: seitenweise Ausgabe einer Textdatei
- sort: nach bestimmten Kriterien sortieren.
- strings: zeigt nur die druckbaren Zeichen (ASCII) einer Binärdatei an.
- sed: mächtiges Werkzeug zur Textmanipulation (Stream EDitor)
- talk: mit einem anderen Benutzer unterhalten.
- write: Nachricht an einen Benutzer schicken
- wall: Nachricht an alle Benutzer eines Systems schicken (Write ALL)
- joe (Joe's Own Editor)
- pico: für Anfänger leicht bedienbarer Editor
- vi (VIsual editor)
- Emacs: leistungsfähiger Editor mit Lisp-Interpreter
Netz
- ftp: Kommanozeilenclient für FTP (File Transfer Protocol)
- mail: E-Mail verschicken.
- ping: schickt ein ping an einen anderen Rechner.
- telnet: Client für das Telnet-Protokoll
- SSH: Shell für verschlüsselte Verbindungen, sicherer als Telnet (Secure SHell)
- rsh: (Remote SHell)
- netstat: Anzeige der Netzverbindungen
- ifconfig: Netzwerk-schnittstellen-konfiguration
Prozessmanagement
- free: Anzeige des freien Speicherplatzes (flüchtiger Speicher)
- kill: einen Prozess beenden
- killall: alle Prozesse des angegebenen Namens beenden
- nice und renice: Priorität eines Prozesses ändern.
- ps: Anzeige der laufenden Prozesse.
- pstree: "-" in Baumform
- top: interaktive Anzeige der laufenden Prozesse. (Table Of Processes)
- uname: Ausgabe von Informationen über Betriebssystem und Rechner