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