Grundlagen zu Unix

UNIX ist ein verbreitetes Betriebssystem (OS, Operating System). Sowohl Linux-Systeme wie zum Beispiel hier am Physik-Institut als auch Appels OSX sind Unix-basiert. Ein Betriebssystem ist das Set von Programmen welches einen Computer überhaupt erst nützlich macht.

Moderne Computer bieten üblicherweise eine graphische Benutzeroberfläche (GUI, Graphical User Interface). Diese sind aber nicht notwendig und viele Dinge lassen sich ohne graphischen Programme viel einfacher erledigen. Es ist deshalb wichtig, sich auch ohne GUI zurecht zu finden.

Das UNIX Betriebssystem

Das UNIX Betriebssystem besteht aus drei Teilen: dem Kernel, der Shell und den Programmen.

Der Kernel

Der Kernel ist das Herz des Betriebssystems: es verwaltet den CPU und den Arbeitsspeicher, ermöglicht den Zugriff auf Datei und kümmert sich ganz allgemein um die Kommunikation mit der Hardware.

Hier ein Beispiel, wie die Shell und der Kernel zusammenarbeiten: Nehmen wir an, der Benutzer tippt cat myfile (das gibt den Inhalt von myfile aus). Die Shell sucht im Dateisystem nach der Datei mit dem Programm cat, und verlangt vom Kernel durch einen sogenannten system call, das Programm cat auf myfile auszuführen. Wenn cat myfile abgeschlossen ist, übergibt der Kernel den Output der Shell und die Shell zeigt diesen auf dem Bildschirm an. Anschliessend zeigt die Shell dem User erneut den Prompt > und wartet auf den nächsten Befehl.

Die Shell

Wie wir im Beispiel gesehen haben, ist die Shell ein Interface zwischen Benutzer und Kernel. Wenn sich ein User am Computer anmeldet, kontrolliert das login-Programm Benutzername und Passwort und startet dann ein weiteres Programm, die login-Shell. Die Shell ist ein command line interpreter (CLI). Sie interpretiert die Befehle, die der Nutzer eintippt und sorgt dafür, dass sie ausgeführt werden. Die Befehle selbst sind ebenfalls Programme. Wenn sie abgeschlossen sind, gibt die Shell dem Nutzer einen neuen Prompt. (bei uns user@host:~>)

Unix-Nutzer sind tippfaul. Die Shell bietet deshalb verschiedene Hilfsmittel für die Befehlseingabe.

Auto-Completion – Wenn du während der Eingabe eines Befehls, eines Datei- oder Verzeichnisnamens die Tabulator-Taste ([Tab]) drückst, so vervollständigt die Shell den Namen automatisch. Gibt es mehrere Namen die mit den eingegebenen Buchstaben beginnen, so wird eine Auswahl angezeigt. Tippe ein paar weitere Buchstaben ein und drücke dann [Tab] erneut.

Command History – Die Shell speichert eine Liste aller eingetippten Befehle. Wenn du einen Befehl wiederholen möchtest, so kannst du mit den Auf/Ab Pfeiltasten durch diese Liste navigieren. Der Befehl history zeigt dir die gesamte Liste an.

Die UNIX Philosophie

Um UNIX zu verstehen, lohnt es sich ein kurzer Exkurs zur Philospohie von Unix. Um mit UNIX ein komplexes Problem zu lösen, gibt es meist nicht ein einzelnes Programm, dass genau zum Problem passt. Unix besteht aus vielen kleinen Programmen, von denen jedes für eine simple Aufgabe gedacht ist. Um komplexe Probleme zu werden diese einfachen Programme dann mit einander verknüpft.

Eine Folge dieser Philosophie ist es auch, dass für eine Aufgabe oft mehrere Programme zur Verfügung stehen. So kannst du zum Beispiel deine Shell aus einer ganzen Reihe von Programmen wählen. Auf den Computern den Physik-Institut findest du zum Beispiel zsh (der Standard), bash, csh und tcsh. Auch für die graphische Oberfläche stehen dir mehrere Möglichkeiten offen. Für unerfahrene Benutzer empfiehlt es sich aber bei den Standard-Programmen zu bleiben.

Dateien und Prozesse

Alles in UNIX ist entweder eine Datei oder ein Prozess.

Ein Prozess ist ein Programm das ausgeführt wird. Jeder Prozess wird durch eine eindeutige PID (process identifier) identifiziert.

Eine Datei ist eine Sammlung von Daten. Sie werden von Benutzern zum Beispiel mit Hilfe eines Text-Editors oder eines anderen Programms erstellt.

Beispiele für Dateien:

Die Verzeichnisstruktur

Alle Dateien sind in einer Verzeichnisstruktur zusammengefasst. Das Dateisystem bildet eine hierarchische Struktur, wie ein nach unten wachsender Baum. Der oberste Ausgangspunkt dieser Struktur wird entsprechend root (Wurzel) genannt. (In Pfaden wird dieser Punkt durch / bezeichnet.)

Verzeichnisstruktur

Eine XTerminal Session starten

Um innerhalb der graphischen Benutzeroberfläche Befehle in eine Shell eintippen zu können, musst du ein Terminal-Programm starten. Klick dafür auf das Konsole Icon im KDE Menu.

Ein Terminal starten

 

Dies öffnet ein neues Fenster, zeigt den Prompt und wartet darauf, dass du Befehle eintippst. Wenn du das erste Mal das Terminal startest, kommt wirst du noch nach deiner .zshrc gefragt. Du kannst da 0 wählen, um eine Standard-Datei anzulegen.

Das Terminal-Fenster mit Prompt

Dein Passwort ändern

Falls du dein Passwort noch nicht geändert hast, solltest du das jetzt machen. Dafür tippst du nun passwd ein und drückst [Enter]. Du wirst nun zuerst nach deinem alten Passwort und dann zwei Mal nach dem neuen gefragt. Dabei seht ihr nicht, dass ihr etwas eintippt. Das verhindert, dass jemand euer Passwort mitlesen kann.

Aufgabe

Lies zuerst die gesamte Aufgabe durch. Sonst findest du vielleicht den Rückweg nicht mehr.

Wie du eben gelernt hast, kannst du Computer mit Linux auch ohne graphische Oberfläche benutzen. Die meisten Computer starten die graphische Oberfläche aber automatisch. Trotzdem kannst du aber auch direkt in der Shell arbeiten. Drücke dazu [CTRL]+[ALT]+[F1]. Du wechselst damit in ein Text-Terminal. Dort kannst du dich mit deinem Benutzernamen und Passwort anmelden und dann in der Shell arbeiten. Wenn du zum Beispiel ls eintippst, siehst du den Inhalt deines Home-Directorys. Meist möchtest du aber wohl mit der graphischen Oberfläche arbeiten. Mit exit kannst du dich wieder abmelden. Anschliessend kommst zu mit [CTRL]+[ALT]+[F7] zurück zur graphischen Oberfläche.