Linux-Crashkurs : Die Grundlagen

SuSE Logo © SuSE Linux

Während 'Windows' heutezutage absoluter Standard für Betriebssysteme ist, wird auch die Alternative 'Linux' allmählich recht populär. Fast alle Rechner des internen Netzes unserer Abteilung laufen unter Linux - vor allem, weil es ein für Netzwerke äußerst stabiles und leistungsfähiges Betriebssystem ist und zudem viele wissenschaftliche Programme mittlerweile bevorzugt oder ausschließlich für Linux geschrieben werden.

Diejenigen unter Euch, die Linux noch nicht kennen, bekommen hier die grundlegendsten Befehle anhand von Beispielen erklärt, die auch nachvollzogen werden können bzw. sollten - es wird davon ausgegangen, daß dieses Tutorial von einem unserer Rechner aus benutzt wird.

Das Terminal

Der für den Benutzer wichtigste Unterschied zu Windows besteht darin, daß zur Eingabe von Kommandos - z. B. zum Aufrufen von Programmen oder zur Dateibearbeitung - normalerweise nicht mit der Maus auf Symbole der Benutzeroberfläche geklickt wird, sondern daß Befehle in ein eigenes Textfenster, das Terminal, geschrieben werden. Diese Eingabemethode und auch die Namen einiger Kommandos erinnern sicher manche von Euch an das alte MS-DOS.

Vielleicht ist auf Eurem Bildschirm neben dem Netscape-Fenster schon ein Terminal geöffnet. Auch wenn das der Fall ist, öffnet bitte ein neues Terminal. Klickt dazu mit der Maus auf das Symbol 'Terminal- Öffnen' auf der unteren Leiste des Bildschirms, es sieht so aus:

oder

Das Terminal-Fenster als solches kann im wesentlichen so manipuliert werden, wie Ihr es von Windows her kennt, also z. B. durch Anklicken rechts oben verkleinert werden - es sollte dann als Schaltfläche auf der oberen Bilschirm-Leiste erscheinen und durch Klicken darauf wieder hergestellt werden.

Anmerkung: Obwohl es eigentlich nicht nötig ist, könnt Ihr während der Projekte mit mehr als einem Terminal arbeiten.

Im Terminal-Text findet sich zunächst stets die Eingabeaufforderung ('Prompt'), z. B. pg1@stan:~ >

Dieser Prompt enthält bereits einige Informationen:

Vor dem @ steht das Kürzel des Benutzers, d. h. welcher Account gerade benutzt wird. pg1 ist der Account 'Projektgruppe 1', der für Projekte eingerichtet wurde.

Welcher Account in einem neu geöffneten Terminal erscheint, hängt davon ab, welchem 'Besitzer' die komplette Benutzeroberfläche gerade gehört. Sollte in Eurem Terminal ein anderer Benutzer als 'pg1' aktiv sein, braucht Ihr aber nicht die Benutzeroberfläche neu zu starten, Ihr könnt Euch auch innerhalb des Terminals anmelden, dazu später mehr.

Nach dem @ steht der Name des Rechners, den Ihr gerade über das Terminal steuert. Normalerweise ist dies der Rechner, an dem Ihr auch sitzt - bei einem neu geöffneten Terminal ist dies in jedem Fall so.

Der Grund für diese Angabe und der Grund für uns, den Rechnern überhaupt Namen zu geben, ist das Netzwerk. Es ist nämlich möglich, über das Terminal auf einen anderen Rechner des Netzes zuzugreifen (an dem womöglich schon jemand sitzt), um dort ein Programm laufen zu lassen, das z. B. auf dem 'eigenen' Rechner zu langsam rechnen würde.

Nach dem Doppelpunkt des Prompts steht die Angabe des aktuellen Verzeichnisses, die im nächsten Absatz erklärt wird. Nach dem Pfeil > kann dann der Benutzer schließlich seine Befehle eintippen.

Verzeichnisstruktur

Wie in jedem Betriebssystem sind auch unter Linux Daten jeglicher Art in Dateien gespeichert, die wiederum in Verzeichnissen organisiert sind. Die komplette 'Adresse' eines bestimmtem Verzeichnisses innerhalb der Struktur nennt man Pfad. In Linux werden Pfade etwa so wie im Internet angegeben, d.h. von links nach rechts in der Angabe geht man von den übergeordneten zu den untergeordneten Verzeichnissen, die Trennung erfolgt mittels /. Die komplette Angabe für das Home-Verzeichnis des Accounts 'Projektgruppe 1' ist /net/home/pg1.

Es gibt allerdings für das jeweilige Home-Verzeichnis des aktuellen Benutzers/Accounts eine Abkürzung, nämlich die 'Tilde' ~. Diese Angabe findet sich auch stets im ersten Prompt eines neuen Terminals (siehe oben).

Alle Home-Verzeichnisse unseres Netzwerks sind Unterverzeichnisse von /net. Das Netz-Stammverzeichnis befindet sich auf Festplatten des Servers, und jeder einzelne Rechner kann gleichermaßen darauf zugreifen.
Bevor die Linux-Grundbefehle erklärt werden, sollen noch zwei weitere Verzeichnis-Abkürzungen genannt werden:

 .  bezeichnet das Verzeichnis, in dem man sich gerade befindet.
 .. bezeichnet das jeweils übergeordnete Verzeichnis.

Stünde also . für /net/home/pg1/projekte/tutorial, dann wäre .. die Bezeichnung für /net/home/pg1/projekte.

Die Befehle

Nun geht es mehr in die Praxis: Wir kommen zur Anwendung der Linux-Kommandos - zumindest der paar für die Projekte nötigen und nützlichen. Von Euch zu tippende Befehle sind fortan mit grün gekennzeichnet und etwas grösser geschrieben, andere Bildschirm-Meldungen oder Beispiele sind wie gehabt rot .

Als erstes soll das Verzeichnis gewechselt werden, denn Ihr befindet Euch jetzt zwar im Home-Verzeichnis für 'Gäste', aber noch nicht in den Projekt-Verzeichnissen:

> cd tutorial

cd steht für 'Change Directory' und führt den Benutzer in das jeweilige Ziel-Verzeichnis des angegebenen Pfades. Wie man sieht, brauchen Pfade nicht komplett angegeben zu werden, sondern nur ab dem ersten Unterverzeichnis des alten Verzeichnisses.

Da Ihr mit Eurem Befehl gleich zwei Verzeichnisse tiefer gesprungen seid, befindet Ihr Euch jetzt hier:
pg1@name:~/tutorial >
Dies ist das Verzeichnis, in dem sich unter anderem alle HTML-Dateien und Bilder dieses Tutorials befinden. Bisher kamen Dateien als eigentliche Daten-Einheiten noch nicht zur Sprache. Schaut Euch nun erstmal den Inhalt des Verzeichnisses an:

>ls

ls steht für 'List' und listet also den Inhalt des aktuellen Verzeichnisses auf. Die Verwendung einer Pfad-Angabe nach ls zeigt entsprechend den Inhalt des jeweiligen angegebenen Verzeichnisses (ohne dorthin zu wechseln).

Unterverzeichnisse werden normalerweise in blau aufgelistet, Dateien normalerweise in schwarz (manchmal auch grün oder rot). Ihr erkennt Dateien außerdem daran, daß sie meistens eine Endung aufweisen, z. B. index.html für eine HTML-Datei. Dateiendungen sind recht wichtig für die Verwendung der Projekt-Programme, wie Ihr in den anderen Tutorial-Kapiteln sehen werdet.
Wollt Ihr etwas mehr Information haben, variiert den 'List'-Befehl:

> ls -lrt

Das zusätzliche Befehlsargument -lrt läßt die 'List'-Funktion die Dateistati, ihre Größe in Byte und ihr Erstellungs- bzw. letztes Bearbeitungsdatum angeben. Außerdem sind die Dateien nach Aktualität geordnet, die zuletzt bearbeiteten stehen unten in der Liste.

~/tutorial hat seinerseits zwei Unterverzeichnisse:
user ist das Verzeichnis, in dem Ihr zur 'Übung' arbeiten könnt - sowohl, um Linux-Befehle zu testen, als auch für den Fall, daß Ihr die Beispiel-Strukturbestimmung der Kapitel 1-5 nochmal selber nachvollziehen wollt.
save enthält alle Dateien der einzelnen Schritte des Tutorial-Beispiels zum Nachschauen - diese Dateien können nicht gelöscht oder editiert werden, es kann auch keine neue Datei in dieses Verzeichnis geschrieben oder kopiert werden.

Geht jetzt in das 'User'-Verzeichnis und zeigt den Inhalt an:

> cd user
>ls

Es befindet sich nur eine Datei, momo-new-unmerged.hkl, im Verzeichnis. Von dieser HKL-Röntgendaten-Datei ausgehend kann das Tutorial (1-5) nachgearbeitet werden. Hier aber stehen andere Aufgaben auf dem Programm: Es kommen nun die Befehle an die Reihe, die wirklich etwas an der Datenstruktur auf der Festplatte ändern: Das Kopieren, Umbenennen und Verschieben von Dateien sowie die Erzeugung neuer Unterverzeichnisse. Zunächst kopieren wir die HKL-Datei:

>cp momo-new-unmerged.hkl test.hkl

cp steht für 'Copy' und kopiert die als erstes Argument angegebene Datei:

  1. in dasselbe Verzeichnis unter einem neuen Namen (zweites Argument = Dateiname)
  2. in ein anderes Verzeichnis unter dem alten Namen (zweites Argument = Pfad)
  3. in ein anderes Verzeichnis unter neuem Namen (zweites Argument = Pfad/neuer_Name)

Ihr habt gerade Variante a) angewandt - wie Ihr mit ls sehen könnt, befindet sich nun auch test.hkl im selben Verzeichnis. Anmerkung: Zwei Dateien in demselben Verzeichnis können nicht denselben Namen haben.

Nun benennt die neue Datei um, ohne sie zu kopieren:

> mv test.hkl probe.hkl

mv steht für 'Move' und bewirkt folgendes für die als erstes Argument angegebene Datei:

  1. Änderung des Namens (zweites Argument = neuer Name)
  2. Verschieben der Datei in ein anderes Verzeichnis unter altem Namen (zweites Argument = Pfad)
  3. wie 2. aber unter Umbenennung (zweites Argument = Pfad/neuer_Name)

test.hkl heißt jetzt also probe.hkl. Nun soll ein neues Unterverzeichnis erstellt werden, in das probe.hkl unter Beibehaltung des Namens kopiert wird:

>mkdir temp

mkdir steht für 'Make Directory' und erstellt in dem aktuellen Verzeichnis ein Unterverzeichnis des angegebenen Namens.

> cp probe.hkl ./temp

Dies ist die Variante 2.) des Copy-Befehls, bei der das Zielverzeichnis angegeben wird. Auch in ~/tutorial/user/temp befindet sich nun eine Datei probe.hkl, wie Ihr (wenn Ihr wollt) mit den schon bekannten Befehlen überprüfen könnt.

Schließlich soll die neue Datei in temp wieder in das übergeordnete Verzeichnis user - in dem Ihr Euch (noch) befinden solltet - zurückgeschoben werden:

pg1@name:~/tutorial/user >mv ./temp/probe.hkl .

Hierbei wird die Abkürzung . für das Zielverzeichnis user verwendet, weil dies ja das aktuelle Verzeichnis ist. Solltet Ihr Euch dagegen im Verzeichnis temp befinden, erreicht Ihr dasselbe mittels:

pg1@name:~/tutorial/user/temp >mv probe.hkl ..

mit .. als Abkürzung für das übergeordnete Verzeichnis.

WICHTIG: Bei der letzten Operation wurde die Datei probe.hkl im Verzeichnis user von Ihrer Kopie überschrieben. Generell werden in Linux durch 'Copy' und 'Move' stets Dateien gleichen Namens überschrieben, wenn man nicht auf eine Vermeidung doppelter Namen achtet, denn normalerweise sind Dateien nicht schreibgeschützt und Linux gibt (im Gegensatz zu Windows) keine Warnungen aus !

Abschließend sollte ein wenig Aufräum-Arbeit betrieben werden. Stellt den ursprünglichen Zustand von user wieder her, indem Ihr erst die Datei probe.hkl , dann das Unterverzeichnis temp löscht.

> rm probe.hkl
> rmdir temp

rm steht für 'Remove' und löscht angegebene Dateien.
rmdir steht für 'Remove Directory' und löscht angegebene Verzeichnisse, vorausgesetzt, das jeweilige Verzeichnis ist leer.

Es sei noch erwähnt, daß auch Linux Platzhalter für bestimmte Textmuster kennt. Wolltet Ihr beispielsweise in einem Verzeichnis alle Dateien mit der Endung .txt löschen, könntet Ihr rm *.txt eingeben. Der Stern * ist ein globaler Platzhalter, er ist längen-unabhängig und umschreibt alles, was vor (bzw. nach) einem Suchmuster kommt. Dagegen ist das Fragezeichen ? ein spezifischer Platzhalter, der für nur ein einzelnes Zeichen an spezieller Position steht, wie z. B. in rm test-?.txt möglicherweise für Zahlen von 0 bis 9.

Das Benutzen von Programmen

Programme sind zunächst einmal besondere Dateien, nämlich solche, die von selbst durch Angabe ihres Namens ausführbar sind. Man erkennt sie in der Regel daran, daß sie keine Dateiendung aufweisen (im Gegensatz zu DOS/Windows, wo sie auf .exe enden). Die Programme, die Ihr im Rahmen des Tutorials und der Projekte verwendet, könnt Ihr aufrufen, ohne daß sie sich selber im einem Eurer aktuellen Verzeichnisse befinden. Das liegt daran, daß das Betriebssystem so konfiguriert ist, daß es die Namen vieler gängigen Programme anhand von Suchpfaden selber finden kann. Es gibt Programme, die alleine mit Ihrem Namen aufgerufen werden können und solche, die zusätzlich den Namen einer Datei benötigen, mit der sie arbeiten sollen.
Um dies zu veranschaulichen, soll der Texteditor kate verwendet werden. Würdet Ihr nur den Namen selber eintippen, könnte das Programm sehr wohl starten, allerdings mit einem leeren Bearbeitungs-Fenster. Gebt stattdessen ein:

>pg1@name:~/tutorial/user > kate momo-new-unmerged.hkl

Die HKL-Datei wird geöffnet und kann im kate-Fenster betrachtet (und bei Bedarf editiert) werden. Mit Texteditoren sind - der Name sagt es schon - nur Textdateien und keine binären Dateien lesbar. Was es mit dem Inhalt der HKL-Datei auf sich hat, wird im Tutorial, Kapitel Eins erklärt. Im übrigen läßt sich kate fast wie der Windows-Editor 'Notepad' benutzen - nur besser :-). Deswegen sollte es der Texteditor der Wahl für Benutzer sein, die sich mit Linux noch nicht auskennen. (Für neuere Versionen von SuSe-Linux gibt es mit kedit einen alternativen, gleichwertigen Editor)

Schließt nun das Programm mittels des Menüpunkts 'File'->'Close' oder des Schließen-Symbols am Fenster. Vielleicht habt Ihr bemerkt, daß während der Verwendung von kate das Terminal nicht benutzbar war, weil kein neuer Prompt erschienen ist, wie nach normalen Linux-Operationen. Das lag daran, daß das Programm im Vordergrund gelaufen ist. Man kann aber über Linux-Terminals auch Programme im Hintergrund laufen lassen, so daß das Terminal wieder für neue Befehle frei ist. Gebt dazu bitte ein:

>kate momo-new-unmerged.hkl &

Das 'Und-Zeichen' & läßt Programme im Hintergrund laufen. Das macht aber nur für solche Programme Sinn, die in einem eigenen Fenster laufen und nicht selber Text in das Terminal ausgeben.

Damit endet der kurze 'Linux-Crashkurs'. Einige Punkte der Projekt-Tutorials (1-5) erwähnen ebenfalls Linux-Befehle, vor allem wird dort, wo die kristallographischen Programme erklärt werden, auch stets angegeben, auf welche Weise und mit welchen Angaben man diese Programme startet.


Last modified: Thu Apr 29, 2010 01:26PM