BernHard's SWE Tutoriumscorner

UNiX Crash Course

Einfhrung

Dieser Crash Course gibt einen ganz kurzen �erblick ber die wichtigsten Unix Shell Kommandos um einen raschen Einstieg zu erm�lichen. Ich habe die wichtigsten Kommandos mit kurzer Beschreibung und eventuell einigen Beispielen aufgelistet.

Jemand, der bis dato noch nicht mit einer Unix Shell gearbeitet hat, wird sich fragen, ob diese Kommandosteuerung ber eine Shell noch zeitgem� ist, und es mag im ersten Moment auch etwas umst�dlich erscheinen. Einer der wesentlichen Unterschiede zwischen Windows und Unix Systemen (unabh�gig ob Solaris, Linux, FreeBSD, AIX, ...) ist, dass s�tliche Funktionen und Schnittstellen des Betriebssystems ber die Shell vollst�dig verfgbar sind und nicht nur ber verschiedene Fenster und Tabs erreicht werden k�nen. Einen der sehr gro�n Vorteile von Unix Betriebssystemen kann man daraus nun leicht ableiten: �ertragung von Textinformationen ber Netzwerke ist sehr einfach und Bandbreiten schonend. Ein Remote Zugriff auf Systeme ist auch bei sehr schlechten Netzwerkverbindungen noch effizient und funktionell, was bei der �ertragung von Grafik und Bildschirm Kopien, wie es fr den Remote Zugriff auf Windows erforderlich ist, nicht der Fall ist. Natrlich gibt es wie immer auch Nachteile. Grafische Userinterfaces sind intuitiv und leichter zu bedienen. Man findet den Weg zum Ziel meist recht einfach, auch wenn man noch nicht genau wei�wie. Ein Commandline Interface kann nicht intuitiv sein, man muss genau wissen, was man m�hte, und wie es geht.

Steuerung

Hat man erst einmal eine Shell (auch als Terminal oder Console bezeichnet) ge�fnet, sieht man den Commandprompt. Das sieht beispielsweise so aus:

[a0109815@almighty ~]

Vor dem '@' Zeichen steht der Username, mit dem man am System eingeloggt ist, in diesem Fall 'a0109815', dahinter der Name des Servers, hier 'almighty', und danach das Directory in dem man sich befindet, das ist in diesem Beispiel '~' (Tilde). Die Tilde steht in der Regel immer als Abkrzung fr das eigene Homedirectory. Der Commandprompt ist jedoch frei konfigurierbar und kann daher anders aussehen.

Kommandos, die man frher eingegeben hat, kann man mit Hilfe der History Funktion einfach wieder aufrufen, in dem man die Cursor Tasten hinauf oder hinunter benutzt.

Kommandos

Die Kommandos zeichnen sich meistens dadurch aus, dass sie besonderss kurz gehalten sind, was etwas Schreibarbeit erspart. H�fig sind es die Anfangsbuchstaben der englischen Bezeichnung des Kommandos.

pwd

Print working directory.Zeigt das aktuelle Directory an, in dem man sich gerade befindet.

cd

Change directory.Wechselt ins eigene Home Directory.

cd ..

Wechselt ins darber liegende Directory.

cd <dir>

Wechselt ins Directory dir.

ls oder ls -l

List directory contents. Listet alle Files und Directories des aktuellen Directories.

ls <dir> oder ls -l <dir>

Listet alle Files und Directories des Directories dir.

cp <src> <dst>

Copy. Kopiert das File oder Directory src auf das File oder in das Directory dst.

mv <src> <dst>

Move. Veschiebt ein File von einem Directory in ein anderes oder benennt das File um. Falls dst ein existierendes Directory ist, wird das File src dorthin verschoben, andernfalls wird das File src auf dst umbenannt.

rm <file>

Remove. L�cht das File file.

rm -r <dir>

L�cht rekursiv das Directory dir samt aller Files. VORSICHT!

mkdir <dir>

Make directory. Erstellt das Directory dir.

rmdir <dir>

Remove directory. L�cht das Directory dir. Es muss vollkommen leer sein, damit es gel�cht werden kann.

cat <file>

Concatenate. Inhalt des Files file anzeigen.

man <cmd>

Manual. Detailierte Beschreibung des Befehls cmd anzeigen.

vi <file>

Visual. �fnet das File file zum editieren (siehe n�hster Absatz).

Editieren

Um Textfiles wie beispielsweise Java Sourcecodes oder Shell Scripts zu bearbeiten, ben�igt man einen Texteditor. Wie auf jedem Windows das einfache Notepad zur Verfgung steht, gibt es unter Unix den vi. Obwohl der vi, was fr visual steht, etwas gew�nungsbedrftig ist, und auch verschiedene andere Editoren wie zum Beispiel der pico existieren, m�hte ich ihn hier vorstellen, da er der am weitesten verbreitete Editor und ausnahmslos auf allen Unixsystemen verfgbar ist.

Hat man den vi mit vi <file> gestart, so sieht man die erste Seite des Files file (sofern das File nicht leer ist) und befindet sich im Normalmodus. Man kann nun mit den Cursortasten oder mit Page up und Page down im File herum fahren. Will man nun Text an einer bestimmten Stelle einfgen, so f�rt man an die entsprechende Position und drckt dann die Taste 'i' fr insert oder 'a' fr append um Text entweder vor oder hinter der Position, auf der man sich befindet, einzufgen. Somit befindet man sich im Insertmodus und alles was man nun schreibt wird eingefgt.
Zurck zum Normalmodus kommt man durch drcken der Escape Taste. Um ganz an den Anfang einer Zeile zu springen drckt man die Taste '^', ganz ans Zeilenende gelangt man mit '$'.
Um eine ganze Zeile zu l�chen drckt man zwei mal hintereinander die Taste 'd', also 'dd'.
Will man den vi verlassen, ohne etwaige �derungen zu speichern, muss man zuerst in den Commandlinemodus wechseln. Das geschieht durch drcken der Taste ':'. Der Cursor springt nun an den linken, unteren Rand des Terminals und steht hinter einem ':'. Danach gibt man das Kommando q! ein, und der vi wird sofort beendet. Genauso wird aus dem Commandlinemodus ein File gespeichert, und zwar durch Eingabe des Kommandos w, oder das File wird gespeichert und anschliessend der vi beendet durch Eingabe des Kommandos x!.
Im vi kann auch nach bestimmten Worten gesucht werden, indem man im Normalmodus die Taste '/' drckt und danach das Wort eingibt. Die Suche nach dem selben Wort kann wiederholt werden, indem wieder '/' und danach Enter gedrckt wird.

Filetransfer

Eine weitere, h�fige Anwendung ist das Kopieren von Files zwischen Computern, die ber ein Netzwerk miteinander verbunden sind. Zum Beispiel k�nte man ein Java Programm in einem komfortablen, grafischen Texteditor auf dem Computer zuhause programmieren, da einem der vi doch etwas zu kompliziert ist um ganze Programme zu schreiben, und danach auf den Server ber das Netzwerk kopieren und testen. Auf jedem, gut gewartetem Unixserver ist heute ein SSL-Paket installiert, wodurch der Filetransfer mittels scp (secure copy) oder eventuell auch sftp (secure file transfer protocol) m�lich ist. Bei beiden Methoden werden die Daten verschlsselt ber das Netzwerk transportiert. Das bis dato weit verbreitetste �ertragungsprotokoll ist das ftp (file transfer protocol), wobei die Daten unverschlsselt bertragen werden. Ftp dominiert nach wie vor im Internet als �ertragungsprotokoll, es sollte jedoch schrittweise durch sftp, aufgrund der Verschlsselung und etwas besseren Protokolleigenschaften ersetzt werden. Die Bedienung des sftp ist dem ftp nachempfunden, wodurch sie fast ident sind und ich hier deshalb auf eine expliziete Erkl�ung von ftp verzichtet habe.

scp, secure copy

Mit scp ist es m�lich Files oder ganze Directories, wie mit dem cp Kommando lokal, ber das Netzwerk von einem Rechner zu einem anderen zu kopieren.

scp RMIServer.java a0109815@almighty.pri.univie.ac.at:public_html

Kopiert das File RMIServer.java von dem Rechner, auf dem man eingeloggt , auf den Rechner almighty.pri.univie.ac.at. Nach dem man sich auf Unix Systeme immer einloggen muss, nachdem man arbeiten kann, ist das auch bei scp notwendig, da man durch das kopieren einen anderen Rechner 'betritt'. In diesem Fall wird für das einloggen der User a0109815 verwendet.

sftp, secure file transfer protocol

Durch Verwendung von sftp ist es möglich interaktiv mit dem remote System zu kommunizieren. Zuerst muss man sich wieder einloggen, das geschieht ähnlich wie bei ssh oder scp mit folgendem Statement:

sftp a0109815@almighty.pri.univie.ac.at

Danach wird man nach dem Passwort des Users a0109815 gefragt. Hat man das erfolgreich eingegeben, so kann man bereits Files transferieren. Eine Anzeige des Directory Inhalts des remote Servers bekommt man wie lokal in der Shell mit ls. Damit kann man kontrollieren, was sich bereits am Server befindet. Nun kann man Files mit get vom remote Server downloaden, beziehungsweise mit put auf den remote Server uploaden.

Fragen

Jederzeit an mich per Email an bf(at)abenteuerland(dot)at.


Letztes Update: 2. April 2003 - 11:30 CEST, Bernhard R. Fiser