UNIX-Kommandos

UNIX-Kommandos

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. 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:

  • (V7) – das Kommando ist in der Unix-Version V7 von 1979 enthalten
  • (BSD) – das Kommando ist Teil der BSD-Version
  • (System V) – das Kommando ist Teil von System V
  • (GNU) – das Kommando ist ein GNU-Kommando
  • (SH) – das Kommando ist ein internes Kommando der Shell
  • (CSH) – das Kommando ist ein internes Kommando der C-Shell
  • (-) – das Kommando wird von anderer Seite beigesteuert
  • (POSIX) – das Kommando ist Teil der POSIX-Spezifikationen

Inhaltsverzeichnis

Die Baukasten-Philosophie

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.

Unix-Shells

Unix-Systeme werden traditionellerweise über die Kommandozeile bedient. Zwar gibt es auch Desktop-Environments 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 MS-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 MS-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.

Die Shells enthalten einige eingebaute Kommandos, hier einige Beispiele:

  • set (SH, POSIX): Einstellen von Shelloptionen und Setzen von Shellargumenten
  • read (SH, POSIX): Lesen einer Zeile von der Eingabe und Speicherung in einer Variablen

Die wichtigsten Shells

  • sh (V7): Bourne-Shell, ursprüngliche Shell
  • csh (BSD): mit einer der Programmiersprache C ähnlichen Syntax (C-Shell)
  • ksh (System V): Korn SHell, dies ist auch die Grundlage der POSIX-Shell

POSIX standardisiert nur, dass ein Programm sh existieren muss, das zu einer POSIX-Shell kompatibel ist.

Weiterentwicklungen

  • Bash (GNU): Weiterentwicklung der Bourne-Shell (Bourne-again shell)
  • tcsh (-): Weiterentwicklung der C-Shell (TENEX-C-Shell)
  • zsh (ZSH): Beliebte, ksh-ähnliche Shell mit sehr vielen Features

(Weitere Shells siehe unter Unix-Shells)

Filter

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.

Ein-/Ausgabeumlenkung (englisch I/O redirection)

Man kann die Standardkommunikationswege „umbiegen“. In der Regel tut man das, um aus einer Datei zu lesen oder in eine Datei zu schreiben.

  • Eingabeumlenkung mit :
       wc -l < test.dat
< liest aus der Datei test.dat und schreibt das Ergebnis in die Konsole. Mit wc -l (Word Counter mit dem Argument Lines) werden die Zeilen in der Konsole gezählt und ausgegeben.
  • Ausgabeumlenkung mit >:
       ls > dir.dat
Die Ausgabe von ls erfolgt in die Datei dir.dat. Ist diese bereits vorhanden, dann wird sie überschrieben.
  • Ausgabeumlenkung mit >>:
       ls >> dir.dat
Die Ausgabe von ls wird an das Ende der Datei dir.dat angehängt.
  • Umlenkung von Standarderror mit 2>:
       wc -l < test.dat 2> err.log
Fehlermeldungen werden in die Datei err.log geschrieben (nicht in der C-Shell csh).

Das Prinzip der Ein-/Ausgabeumlenkung findet man auch im Betriebssystem MS-DOS.

Pipes

Ein mächtiges Hilfsmittel ist die Verwendung einer Pipe zur Ein-/Ausgabeumlenkung

  <Kommando1> | <Kommando2>

Man kann mehrere Filter miteinander verknüpfen. 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 in die Standardeingabe des folgenden Kommandos umgeleitet. Das Unix-Betriebssystem kopiert dabei simplerweise nur den Dateideskriptor des Ausgabekanals und benutzt ihn als Eingabekanal beim zweiten Programm.

Beispiel:

 grep Unix testdatei | tr '[:lower:]' '[:upper:]' | sort

In der Datei testdatei werden alle Zeilen gesucht und ausgegeben, die das Wort „Unix“ enthalten, danach wandelt tr alle Kleinbuchstaben in Großbuchstaben um, und zum Schluss wird alles sortiert und auf dem Terminal ausgegeben. Diese Art der Pipes nennt man anonyme Pipes.

Für komplexere Anwendungen lassen sich auch benannte Pipes (FIFOs) definieren, auf die dann wie auf eine Datei zugegriffen werden kann:

  • mkfifo: benannte Pipe anlegen
Beispiel:
  • In einer Shell:
           mkfifo Rohr
           ls > Rohr
Hier wird erst eine benannte Pipe angelegt, und dann das aktuelle Verzeichnis in diese umgeleitet.
  • Danach in einer anderen Shell (z. B. in einem anderen Fenster):
           cat Rohr
Hier wird der „Inhalt“ von Rohr ausgelesen und auf der Standardausgabe ausgegeben. Es erscheint also die Ausgabe von ls aus der ersten Shell in der Standardausgabe der zweiten Shell.
  • Danach kann die Pipe wie eine normale Datei gelöscht werden:
           rm Rohr

Einige Kommandos

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 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.

Die Kommandos des Online-Handbuchs:

  • man (V7, POSIX): Handbuchseiten (MANual page)
    ruft die Hilfeseite für ein bestimmtes Programm, eine bestimmte Funktion etc. auf.
  • whatis:
    gibt eine einzeilige Kurzbeschreibung der Kommandos, in der Regel die Zusammenfassungszeile der zugehörigen Hilfeseite.
  • apropos oder man -k:
sucht in den Kurzbeschreibungen nach einer Zeichenfolge und gibt die passenden Einträge samt Kurzbeschreibung zurück. Beispielsweise gibt
apropos compiler
alle Einträge, in denen das Wort „compiler“ 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): Handbuch zu einem Kommando

Die Tendenz geht anscheinend dahin, dass die GNU Programmierer die manual pages etwas stiefmütterlich behandeln und das vollständigere und auch meistens korrektere Manual 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.

Dateioperationen

Der Umgang mit Dateien ist ein wesentlicher Teil der Arbeit am Computer. Dementsprechend gibt es auch unter Unix-Kommandos zum Umgang mit Dateien:

  • cp (V7, POSIX): Datei kopieren (CoPy)
  • ls (V7, POSIX): Dateien in einem Verzeichnis anzeigen (LiSt)
  • mv (V7, POSIX): eine Datei verschieben oder umbenennen (MoVe)
  • pwd (V7, POSIX): Anzeige des aktuellen Verzeichnispfades (Print Working Directory)
  • ln (V7, POSIX): Erzeugen von Dateiverknüpfungen (LiNk)
  • rm (V7, POSIX): Löschen einer Datei (ReMove)
  • tar (V7): Archivierungsprogramm (Tape ARchive)

Verzeichnisse

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:

  • mkdir (V7, POSIX): erzeugt ein neues Verzeichnis
  • rmdir (V7, POSIX): löscht ein (leeres) Verzeichnis
  • cd (SH, POSIX): wechselt in ein anderes Verzeichnis
  • pushd (CSH): wechselt in ein anderes Verzeichnis, merkt sich aber vorher das aktuelle Verzeichnis
  • popd (CSH): kehrt ins vorherige Verzeichnis (vor dem letzten pushd) zurück

Dateisystem

  • mkfs Dateisystem erstellen (MaKe FileSystem)
  • fsck (V7): Dateisystem überprüfen (FileSystem ChecK)
  • mount (V7) und umount (V7): Dateisystem einhängen in den oder aushängen aus dem Verzeichnisbaum
  • df (V7, POSIX): Anzeige des freien Speicherplatzes auf Datenträgern (Disk Free)
  • du (V7, POSIX): Anzeige des benötigten Speicherplatzes von Dateien und Verzeichnissen (Disk Usage)

Benutzer- und Rechteverwaltung

Unix war von Anfang an ein Multi-User-Betriebssystem (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.

Einige Kommandos:

  • su (V7): Benutzer wechseln, standardmäßig wird zu root gewechselt (superuser)
  • sudo: Kommando mit besonderen Rechten ausführen.
  • useradd oder adduser: Einen neuen Benutzer anlegen.
  • w: Wer ist alles angemeldet? Und was tun sie?
  • who (V7, POSIX): Wer ist alles angemeldet?
  • chmod (V7, POSIX): Zugriffsrechte auf Dateien ändern (CHange MODe)
  • chown (V7, POSIX): Eigentümer und/oder Gruppe ändern (CHange OWNer)
  • chgrp (V7, POSIX): Gruppenzugehörigkeit ändern (CHange GRouP)
  • passwd: Benutzerpasswort ändern
  • id (POSIX): Gibt Informationen zur eigenen Identität aus: Benutzername, Benutzernummer (UID), Name der primären Benutzergruppe, Nummer der primären Benutzergruppe (GID)
  • finger: Gibt Informationen über den (angemeldeten) Benutzer heraus. (Bei vielen aufgrund von Sicherheitsgründen deaktiviert)

In der Regel werden die Benutzernamen und Passwörter in der Datei /etc/passwd gespeichert. Die Einträge dort haben folgendes Format: Benutzer:Passwort:User-ID:Group-ID:Kommentar:Verzeichnis:Shell

Textmanipulation

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.

  • cat (V7, POSIX): Ausgabe und/oder Verkettung von Textdateien in der Kommandozeile (conCATenate, Englisch für „verknüpfen“[1])
  • cut (POSIX): Auswählen bestimmter Spalten bei der Ausgabe.
  • echo (V7, POSIX): Ausgabe
  • grep (V7, POSIX): Anzeige aller Zeilen einer Textdatei, die auf einen regulären Ausdruck passen.
  • head: Ausgabe der ersten n Zeichen/Zeilen von der Eingabe (dies ist üblicherweise eine Datei).
  • tail: Ausgabe der letzten Zeilen von der Eingabe (dies ist üblicherweise eine Datei).
  • less (GNU) und more (POSIX): seitenweise Ausgabe einer Textdatei
  • paste (System V): Liest den Inhalt mehrerer Dateien zeilenweise und verbindet diese durch Verwendung des Trennzeichens (Delimiter) miteinander
  • sort (V7, POSIX): nach bestimmten Kriterien sortieren.
  • strings (POSIX): zeigt nur die druckbaren Zeichen (ASCII) einer Binärdatei an.
  • sed (V7, POSIX): mächtiges Werkzeug zur Textmanipulation (Stream EDitor)
  • awk (V7, POSIX): programmierbares Werkzeug zur Datenverarbeitung (Aho Weinberger Kernighan, die Anfangsbuchstaben der Namen der Erfinder)

Texteditor

Weit verbreitet sind unter anderem:

  • ed: der „originale“ Unix Texteditor
  • emacs (GNU,-): leistungsfähiger Editor mit Lisp-Interpreter
  • joe (-) (Joe's Own Editor)
  • pico (-): für Anfänger leicht bedienbarer Editor
  • nano (-): pico-Klon
  • vi (BSD, POSIX): (VIsual editor)
  • vim (-) (Vi IMproved)

Netz

  • ftp (BSD): Kommandozeilenclient für FTP (File Transfer Protocol)
  • mail (V7): E-Mail verschicken. POSIX-standardisiert mailx
  • ping (BSD): schickt ein ping an einen anderen Rechner.
  • telnet (BSD): Client für das Telnet-Protokoll
  • ssh (-): Shell für verschlüsselte Verbindungen, sicherer als Telnet (Secure SHell)
  • rsh (BSD): (Remote SHell)
  • netstat (BSD): Anzeige der Netzverbindungen
  • ifconfig (BSD): Netzwerkschnittstellenkonfiguration

Kommunikation

  • talk (POSIX): mit einem anderen Benutzer unterhalten.
  • write (V7, POSIX): Nachricht an einen Benutzer schicken
  • wall: Nachricht an alle Benutzer eines Systems schicken (Write ALL)

Prozessmanagement

  • at (V7, POSIX): Prozess später starten (zu (at) einem bestimmten Zeitpunkt)
  • cron: Prozess regelmäßig starten (POSIX standardisiert das Konfigurationswerkzeug crontab)
  • kill (V7, POSIX): Einen Prozess beenden oder andere Signale an ihn senden
  • nice (V7, POSIX) und renice (BSD, POSIX): Priorität eines Prozesses ändern
  • ps (V7, POSIX): Anzeige der laufenden Prozesse
  • top (-): interaktive Anzeige der laufenden Prozesse (Table Of Processes)
  • uname (POSIX): Ausgabe von Informationen über Betriebssystem und Rechner

C-Entwicklungssystem

  • cc (V7): C-Compiler (POSIX spezifiziert c99 als C-99-kompatiblen Kompiler)
  • gcc (GNU): Die GNU-Variante des C-Compilers
  • make (V7, POSIX): Programmgruppenverwaltung
  • lint (V7): C-Code-Überprüfung
  • as (V7): Assembler
  • ld (V7): Link Loader
  • adb (V7): Debugger
  • gdb (GNU): Der GNU Debugger
  • nm (V7): Symbol Table
  • size (V7): Programmsegmentgrößen
  • prof (V7): Profiler
  • lex (V7, POSIX): Lexical Analyser Generator
  • yacc (V7, POSIX): Parser Generator

Textsatzsystem

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.

  • troff (V7): Makroorientiertes Textsatzsystem für Linotype-Fotosatzmachinen
  • nroff (V7): Makroorientiertes System für Terminal und Zeilendrucker
  • groff (GNU): GNU Version von troff und nroff mit Erweiterungen für die Ansteuerung von grafikfähigen Druckern
  • eqn (V7): Mathematischer Formelsatz für troff (Präprozessor)
  • neqn (V7): Mathematischer Formelsatz für nroff (Präprozessor)
  • tbl (V7): Tabellen für troff und nroff (Präprozessor)
  • pic (V7): Einbinden von Bildern
  • spell (V7): Rechtschreibprüfprogramm

Quellen

  1. LEO Dict: concatenate

Literatur

  • Brian W. Kernighan, Rob Pike: Der UNIX-Werkzeugkasten. Programmieren mit UNIX. Hanser, München 1986, ISBN 3446142738 (deutsche Übersetzung)

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Unix-Kommandos — 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… …   Deutsch Wikipedia

  • Unix Kommandos — 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… …   Deutsch Wikipedia

  • Unix-Befehle — 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… …   Deutsch Wikipedia

  • 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 verschiedenen Systemen voneinander ab. Es existieren die beiden… …   Deutsch Wikipedia

  • UNIX — Ken Thompson und Dennis Ritchie Basisdaten Entwickler …   Deutsch Wikipedia

  • Unix — Kommandozeile (Unix Prompt) Basisdaten Entwickler Ken Thompso …   Deutsch Wikipedia

  • Unix-Shell — Die Unix Shell oder kurz Shell (en. Hülle, Schale) bezeichnet die traditionelle Benutzerschnittstelle unter Unix oder unixoiden Computer Betriebssystemen. Der Benutzer kann in einer Eingabezeile Kommandos eintippen, die der Computer dann sogleich …   Deutsch Wikipedia

  • UNIX-ähnlich — Ein unixoides oder unixähnliches System ist ein Betriebssystem, das versucht die Verhaltensweise von Unix zu implementieren. Die lange Geschichte von Unix hat eine Vielzahl mehr oder minder verschiedenartiger Betriebssysteme hervorgebracht, die… …   Deutsch Wikipedia

  • Unix-artig — Ein unixoides oder unixähnliches System ist ein Betriebssystem, das versucht die Verhaltensweise von Unix zu implementieren. Die lange Geschichte von Unix hat eine Vielzahl mehr oder minder verschiedenartiger Betriebssysteme hervorgebracht, die… …   Deutsch Wikipedia

  • Unix-ähnlich — Ein unixoides oder unixähnliches System ist ein Betriebssystem, das versucht die Verhaltensweise von Unix zu implementieren. Die lange Geschichte von Unix hat eine Vielzahl mehr oder minder verschiedenartiger Betriebssysteme hervorgebracht, die… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”