Humboldt-Universität zu Berlin - Mathematisch-Naturwissen­schaft­liche Fakultät - Institut für Physik

Einführung in Unix

Zur Notation

Die vorgeschriebenen Teile der Befehle werden hier geschrieben wie command. Was von Fall zu Fall angepasst werden muss, ist kursiv gesetzt. Optionale Teile sind in [ ] eingeschlossen.
Das Unix-Prompt wird dargestellt durch prompt> , wie es im Einzelfall aussieht, hängt von der lokalen Konfiguration ab.

Benutzer-Verwaltung

Jede(r) BenutzerIn bekommmt bei der Registrierung auf einem Unix-System einen Login-Namen (username) und ein Passwort (password). Das Passwort kann (und muss regelmäßig) geändert werden. Der dafür unter Unix übliche Befehl passwd geht bei uns nicht, weil unsere Benutzerverwaltung zentralisiert ist. Stattdessen ruft man die Webseite https://pass.physik.hu-berlin.de auf.

Gute Passwörter sind eine wichtige Sicherheitsmaßnahme, sie sollten mindestens 7 Zeichen enthalten, möglichst den ganzen Zeichensatz (Groß/Kleinbuchstaben, Ziffern, Sonderzeichen - aber keine Umlaute und ß) ausnutzen und nicht aus (deutschen oder englischen) Wörtern oder Namen bestehen, wie man sie in Wörterbüchern finden kann.

Jede(r) BenutzerIn bekommt ein "Home-Verzeichnis", das (bei geeigneter Wahl der Zugriffsrechte) nur er/sie selbst lesen und beschreiben kann - vom Administrator ("root") abgesehen.

Neben dem Benutzernamen wird noch eine Gruppe zugewiesen, sie spielt bei den Zugriffsrechten eine Rolle. Die Zuordnung kann man mit dem Befehl id anzeigen.

Graphische Oberfläche

Unix-Systeme laufen mit einer graphischen Oberfläche, dem X-Window-System, auch kurz X oder X11 genannt. Zunächst erscheint ein Anmeldefenster, danach startet eine graphische Sitzung (session), die eine bequeme Bedienung des Systems über Fenster und Menüs erlaubt. Unter Linux ist es meist KDE, es kommen auch Fvwm, WindowMaker, Gnome u.a. in Frage.

Zur Abgabe von Befehlen auf der Kommandozeile öffnet man ein Terminal-Fenster, z.B. XTerm oder die KDE-Konsole. Es erscheint ein prompt und wartet auf...

Unix-Befehle

Unix unterscheidet zwischen Groß- und Kleinschreibung!
Unix-Befehle bestehen i.a. aus einem Befehlswort, gefolgt von Optionen und Parametern. Kurze Optionen beginnen mit - , lange mit -- . Mehrere Kurzoptionen können oft zusammengezogen werden: ls -l -a ist dasselbe wie ls -la .
Befehle werden mit <ENTER> "abgeschickt". Die Eingabe von Daten beendet man mit <CTRL><D> , ein harter Abbruch wird ggf. mit <CTRL><C> erreicht.
Beim Eintippen von Befehlsfolgen ist der Befehlspuffer nützlich: mit den Pfeiltasten kann man senkrecht eine Liste der letzten Befehle durchlaufen, waagerecht die Schreibmarke in der Befehlszeile bewegen, den Befehl ggf. verändern und dann (mit <ENTER>) nochmals abschicken. Außerdem hilft die Taste <TAB> bei der Vervollständigung von Befehls- und Dateinamen.
Und noch ein Trick: ein Befehl, der einen länger laufenden Vorgang startet (Editor, Browser etc), würde das Terminalfenster blockieren. Ein angehängtes "&" lässt das Programm in Hintergrund laufen und gibt das Prompt sofort zurück.

Zum Verständnis: das Systemprogramm, das diesen Dialog mit dem Benutzer führt, nennt man eine Shell. Unter Linux ist es meist die bash. Schon beim Einloggen wird eine solche Shell für den Benutzer geöffnet, die eine persönliche, konfigurierbare Arbeitsumgebung darstellt. Erst darüber baut sich die grafische Oberfläche auf.

Hilfe

Hilfe ist unter Unix ein schwieriges Thema. Im allgemeinen wird sie durch den Befehl man (manual) aufgerufen. Wenn man den fraglichen Befehl oder ein naheliegendes Stichwort kennt, sagt man
prompt> man befehl
prompt> man -k stichwort
Die Antwort ist aber oft schwer verständlich (nicht nur für Unix-Neulinge!).

Dateisystem

Das Dateisystem ist hierarchisch gegliedert (Baumstruktur), angefangen mit / , Unterverzeichnisse werden mit weiteren / angefügt. Das Homeverzeichnis lautet z.B.
/users/stud/username
und kann durch ~ abkürzt werden. Außerdem steht "." für das aktuelle und ".." für das übergeordnete Verzeichnis.
Datei- und Verzeichnisnamen unterscheiden zwischen Groß- und Kleinschreibung. Man sollte Leerzeichen und länderspezifische Zeichen (Umlaute, ß) vermeiden.
In bestimmten Situationen kann man Gruppen von Dateien und Verzeichnissen mit Jokerzeichen (wildcards) ansprechen: "*" für steht irgendeine Zeichenfolge (auch leer) und "?" für genau ein Zeichen.

Wichtige Befehle im Dateisystem:

pwd aktuelles Verzeichnis (print working directory)
ls Liste der Dateien (list)
ls -l ausführliche Liste (long)
ls -a vollständige Liste (all)
cd verz Verzeichnis wechseln (change directory)
cp [-i] von nach Datei kopieren (copy)
mv [-i] von nach Datei umbenennen (move)
rm [-i] datei Datei löschen (remove)
mkdir verz neues Verzeichnis anlegen (make directory)
rmdir verz leeres Verzeichnis löschen (remove directory)

Unter Unix gibt es keine einfache Möglichkeit, gelöschte Dateien oder Verzeichnisse wieder herzustellen, also Vorsicht, insbesondere im Gebrauch von Jokern! Bei einigen der obigen Befehle hilft die Option -i : es wird jedesmal nachgefragt, bevor etwas gelöscht oder überschrieben wird.
Mit cp und mv kann man auch mehrere Dateien zugleich kopieren bzw. umbenennen, das Ziel muss dann ein Verzeichnis sein, z.B.
cp datei1 datei2 .. verz

Zugriffsrechte

Die Zugriffsrechte auf Dateien und Verzeichnisse werden auf drei Ebenen kontrolliert: Benutzer u (user), Gruppe g (group) und sonstige o (others). Dort wird jeweils unterschieden zwischen dem Recht zum Lesen r (read), Schreiben w (write) und Ausführen x (execute), x wird auch bei Verzeichnissen gebraucht. Die gesetzten Rechte werden mit ls -l angezeigt, und zwar (von links nach rechts) ein d (directory), wenn es sich um ein Verzeichnis handelt, dann die Rechte für u,g,o als Dreiergruppen. Beispiele:

drwxrwxrwx Verzeichnis mit vollem Zugriff für alle
-rw-r----- Datei mit Lese/Schreibrecht für den Benutzer und Leserecht für die Gruppe
drwxr-xr-x Verzeichnis, in dem nur der Benutzer schreiben (d.h. neue Dateien anlegen) darf

Zum Ändern der Rechte dient chmod:

chmod g+rx verz verz für Gruppe lesbar
chmod go+r datei datei für Gruppe und andere lesbar
chmod g-w,o-rw datei datei für Gruppe nicht schreibbar
und für andere nicht lesbar/schreibbar

Die Zugriffsrechte neu erzeugter Dateien und Verzeichnisse werden über die Umask (user mask) kontrolliert. Das ist ein Bitmuster, das bestimmte Rechte unterdrückt. Für u,g,o wird jeweils addiert: r=4, w=2, x=1, die so entstehenden Ziffern 0..7 werden dann (von links nach rechts) zu einer Oktalzahl zusammengestellt. So bedeutet 022, dass für g und o der Schreibzugriff (w=2) verweigert wird, d.h. es entstehen z.B. Dateien mit -rw-r--r-- und Verzeichnisse mit drwxr-xr-x. Die Umask 027 dagegen sperrt für g den Schreibzugriff und für o alle Zugriffe (4+2+1=7).

umask Maske anzeigen
umask maske Maske setzen

Dateien Anzeigen

Wichtige Befehle:

cat datei
more datei
less datei
grep zeichenkette datei

cat bringt die Datei unmittelbar auf den Schirm, more erlaubt es, seitenweise vorwärts zu blättern (mit der Leertaste, die Taste <q> bricht es ab). Mit less kann man sich in beiden Richtungen durch den Text bewegen. more und less erlauben es auch, interaktiv (durch Eingabe von /) nach einem Textfragment zu suchen. Mit grep zeigt man selektiv alle Zeilen einer Datei an, die eine bestimmte Zeichenkette enthalten.
Schließlich kann man more, less, grep auch mit | an einen anderen Befehl anhängen, um die Ausgabe zu kontrollieren, z.B.
prompt> ls -l | more

Text-Editor

Unter den vielen verfügbaren Editoren sei hier xedit genannt, der auf den meisten Unix-Systemen installiert ist. Unter KDE bietet sich auch kwrite als Alternative an. Ein solcher graphischer Editor öffnet ein eigenes Fenster und ist intuitiv mit Maus und Tastatur zu bedienen.
Aufruf:
prompt> xedit datei &
Wenn man das & vergessen hat und deshalb das Prompt nicht mehr zurückbekommt, kann man den Editor stoppen und mit dem Befehl bg (background) von Hand in den Hintergrund schicken:
prompt> xedit datei
   <CTRL><Z>
prompt> bg
prompt>

Umgebungsvariablen

Die Arbeit unter einer Unix-Shell wird durch eine Reihe von Umgebungsvariablen kontrolliert. Ihre Namen bestehen üblicherweise aus Großbuchstaben. Will man ihren Wert abrufen, dann stellt man dem Namen ein $ voran. Eine Liste aller gerade gesetzten Umgebungsvariablen zeigt set .
Besonders zu erwähnen sind hier HOME und PATH. HOME enthält den vollen Pfadnamen des Home-Verzeichnisses, man kann ihn durch
echo $HOME
anzeigen. PATH speichert den Suchpfad für Befehle als Liste von Verzeichnissen, getrennt durch ":". Wenn man (wie üblich) einen Befehl ohne Pfad eingibt, dann werden nacheinander die in PATH aufgeführten Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Mit
which befehl
kann man sich anzeigen lassen, was dabei ggf. gefunden wird (ohne es tatsächlich aufzurufen).

Drucken

Der Befehl lpr schickt eine Datei auf den Standard-Drucker.

lpr datei Datei Drucken (line printer)
lpr -P drucker datei    Datei auf angegebenen Drucker schicken
lpq -a Warteschlangen anzeigen (queue)
lpstat -o
lpstat -a Druckerstatus anzeigen
lprm job# Druckauftrag löschen (remove)
job# aus lpq oder lpstat

letzte Änderung: B Bunk, 24.02.2012