Linux-Befehlszeile Anleitung

Zur Verfügung gestellt von der statistischen Abteilung der Texas A&M

Typografische Konvention


Im folgenden verwenden wir diese typografischen Konvention:

  • Die Zeichen in Fettschrift sind Befehle, die genauso in die Befehlszeile eingegeben werden.
  • Kursiv geschriebene Zeichen zeigen unspezifische Datei oder Verzeichnisnamen an.
  • Die Wörter in eckigen Klammern [Ctrl] entsprechen zu drückende Tasten.

Ein Beispiel,

$ ls irgendeinVerzeichnis [Eingabe]

bedeutet „am Shellhinweis $, geben Sie ls gefolgt vom Namen irgendeiner Datei oder Verzeichnisses ein und drücken dann die Eingabetaste“

Nicht vergessen, die [Eingabe] Taste zu drücken: Befehle werden sonst nicht ausgeführt.

Anmerkung: Linux unterscheidet Groß- und Kleinschreibung, das heißt LS ist nicht dasselbe wie ls.

Das gilt auch für Dateinamen, also sind myfile.txt, MyFile.txt und MYFILE.TXT drei verschiedene Dateien. Passen Sie daher auf wenn Sie Dateien zu einem PC mit DOS oder Windows kopieren, da diese BS keine Unterscheidung treffen.

Linux-Befehlszeile Einleitung

Diese Lektion betrifft GNU/Linux, ein gebräuchliches Betriebssystem. Mit Betriebssystem beschreiben wir eine Gruppe von Programmen, die den Computer laufen lassen.

KDE (auf X Windows laufend ) liefert eine grafische Schnittstelle zwischen dem Benutzer und Linux. Für Operationen die kein grafisches Programm haben, oder in einer Sitzung ohne Grafik, z.B. ssh, braucht man die Linux-Befehlszeile.

Das GNU/Linux Betriebssystem

Das Betriebssystem GNU/Linux besteht aus drei Teilen; der Kernel (Linux), die Shell (gewöhnlicherweise bash oder tcsh) und die Programme.

Der Kernel

Linux ist der Kernel (der Kern) des Betriebssystems GNU/Linux. Er ist die Basis aller Operationen, ordnet den Programmen Zeit und Speicher zu und handhabt den Filestore und die Kommunikationen der Systemaufrufe.

Als Beschreibung wie die Shell und der Kernel zusammenarbeiten nehmen wir an ein Benutzers gibt ein: rm myfile (Löschen der Datei myfile). Die Shell sucht den filestore nach der Datei, die das Programm rm enthält und bittet dann den Kernel mit einem Systemaufruf das Programm rm auf myfile auszuführen. Wenn der Prozess rm myfile beendet ist zeigt die Shell dem Benutzer mit der Eingabeaufforderung (Prompt) $ an, dass sie weitere Befehle erwartet.

Die Shell

Die Shell, auch Terminal genannt, tritt als eine Schnittstelle zwischen dem Benutzer und dem Kernel auf. Diese Anleitung sollte auf die meisten Shells die Sie laufen lassen können zutreffen. Wenn ein Benutzer sich anmeldet, überprüft das login-Programm den username und das Kennwort und startet dann ein anderes Programm, welches die Shell genannt wird. Die Shell ist ein Befehlszeilen Interpreter (CLI). interpretiert die vom Benutzer eingegebenen Befehle, und ordnet deren Ausführung an. Die Befehle selbst sind Programme: nach deren Abschluss gibt die Shell dem Benutzer eine weitere Eingabeaufforderung ([username@localhost ~] $) in PCLinuxOS.

Der geschickte Benutzer kann seine/ihre Shell anpassen, und die Benutzer können auf der gleichen Maschine verschiedene Shells benutzen. In den GNU/Linux Betriebssystemen ist normalerweise Bash voreingestellt, aber Sie können auch die tcsh Shell laufen lassen.

Shells, wie die tcsh und bash, haben bestimmte Merkmale, die dem Benutzer bei der Befehlseingabe helfen.

Dateiname-Vervollständigung - Wenn Sie den Anfangsteil des Befehls-, Datei-, oder Verzeichnisnamens schreiben und dann die Tabulatortaste [Tab] drücken , komplettiert die Shell den Rest des Namens automatisch. Wenn die Shell mehr als einen Namen mit dem eingegebenen Namensanfang findet, piept sie und fordert sie zur Eingabe weiterer Zeichen auf bevor Sie die Tabulatortaste erneut drücken.

History - die Shell führt eine Liste der zuletzt eingegebenen Befehle. Wenn Sie einen Befehl wiederholen müssen, verwenden Sie die Cursortasten (hoch und runter Pfeile) um in der Liste hoch und runter zu gehen oder verwenden Sie den history Befehl um diese Liste anzuzeigen.

Dateien und Prozesse

In Linux ist alles entweder eine Datei oder ein Prozess.

Ein Prozess ist ein ausführbares Programm, das durch einen eindeutigen PID gekennzeichnet wird (Prozesskennung - Process Identifier).

Eine Datei ist eine Ansammlung von Daten. Sie werden von den Benutzern hergestellt, die Texteditoren verwenden oder Compiler laufen lassen, etc.

Dateibeispiele:

  • ein Dokument (Report, Geschichte, etc.)
  • der Text eines in irgendeiner höheren Programmiersprachegeschrieben Programms
  • Maschinenverständliche Anweisungen die einem normalen Benutzer unverständlich erscheinen, zum Beispiel eine Ansammlung von Binärziffern (eine ausführbare oder Binärdatei)
  • ein Verzeichnis, Informationen über seinen Inhalt enthaltend, welches eine Mischung aus anderen Verzeichnisse (Unterverzeichnisse) und gewöhnlichen Dateien sein kann

Die Verzeichnis-Struktur

Alle Dateien werden in der Verzeichnisstruktur zusammen gruppiert. Das Dateisystem ist, wie ein umgekehrter Baum, in einer hierarchischen Struktur angeordnet. Die Basis dieser Hierarchie wird traditionsgemäß Wurzel genannt.

Die Linuxdateistruktur


Im obigen Diagramm sehen wir, dass das Verzeichnis ee51ab das Unterverzeichnis unixstuff und eine Datei proj.txt enthält.

Starten einer Shell

Um eine Shell zu starten, klicken Sie auf die Konsole-Terminalikone auf Ihrer Arbeitsfläche oder aus dem Startmenü:

Start -> System -> Terminals

Ein Konsole Fenster mit einem Prompt erscheint und wartet darauf, dass Sie beginnen, Befehle wie den folgenden eingeben:


ls (auflisten - list)

Nach dem ersten Login ist Ihr Basisverzeichnis das aktuelle Arbeitsverzeichnis. Ihr Basisverzeichnis hat den gleichen Namen wie Ihr username, z.B. yourname und es ist das Verzeichnis, wo Ihre persönlichen Dateien und Unterverzeichnisse gesichert werden.

Um herauszufinden was in Ihrem Basisverzeichnis ist, schreiben Sie:

$ ls

Der ls Befehl zeigt den Inhalt Ihres aktuellen Dateiverzeichnisses in einer Liste an.

Es kann sein, dass Sie keine Dateien in Ihrem Basisverzeichnis haben und in diesem Fall wird nur ein neues Prompt in der Shell angezeigt. Möglicherweise können bereits einige Dateien, die vom Systemverwalter bei Ihrer Kontoerstellung erzeugt wurden, angezeigt werden.

Tatsächlich zeigt ls nicht alle Dateien in Ihrem Basisverzeichnis an, sondern nur die deren Name nicht mit einem Punkt anfängt (.) Dateien, die mit einem Punkt anfangen (.) sind als versteckte Dateien bekannt und enthalten normalerweise wichtige Programmkonfigurationsinformationen. Sie werden versteckt, weil Sie nicht ändern sollten, bis Sie mit Linux etwas vertrauter sind, und sogar dann ist es sinnvoll erst einmal ein Backup zu erstellen!

Um alle Dateien in Ihrem Basisverzeichnis, einschließlich der Namen, die mit einem Punkt anfangen, auszudrucken, geben Sie ein:

$ ls - a

ls ist ein Beispiel eines Befehls, der mit Optionen verwendet werden kann: -a ist ein Beispiel einer Option. Die Optionen ändern das Verhalten des Befehls. Im Linuxsystem gibt es für jeden Befehl eine Bedienungsanleitung, die Ihnen erklärt, welche Optionen ein bestimmter Befehl annehmen kann und wie diese Optionen das Verhalten des Befehls ändern. (Wir werden das später sehen)

Erstellung von Verzeichnissen

mkdir (Verzeichnis bilden - make directory)

Wir erstellen jetzt ein Unterverzeichnis in Ihrem Basisverzeichnis, welches die im Verlauf dieser Anleitung zu erstellenden Dateien enthält. Um im aktuellen Dateiverzeichnisses ein Unterverzeichnis namens unixstuff zu bilden geben Sie ein:

$ mkdir unixstuff

Um das gerade erstellte Verzeichnis zu sehen, geben Sie ein:

$ ls

In ein anderes Verzeichnis wechseln

cd (Verzeichniswechsel - change directory)

Der Befehl cd Verzeichnis bedeutet wechsele vom aktuellen Dateiverzeichnis zu „Verzeichnis“. Das aktuelle Dateiverzeichnis ist das indem Sie sich gerade befinden, d.h. Ihre aktuelle Position im Dateisystembaum.

Um in das gerade erstellte Verzeichnis zu gehen geben Sie ein:

$ cd unixstuff

Geben Sie ls ein, um dessen Inhalt (der leer sein sollte) anzuzeigen

Übung 1a

Erstellen Sie innerhalb des Verzeichnisses unixstuff ein anderes Verzeichnis mit dem Namen backups.

Die Verzeichnisse .

Im Verzeichnis unixstuff geben Sie ein:

$ ls -a

Wie Sie sehen können, gibt es im unixstuff Verzeichnis (und in allen anderen Verzeichnissen) zwei spezielle Verzeichnisse genannt (.) und (..)

Im Linux bedeutet (.) das aktuelle Verzeichnis und daher bedeutet:

$ cd .

ANMERKUNG: es gibt ein Leerzeichen zwischen cd und dem Punkt

das Sie dort bleiben wo Sie gerade sind (das unixstuff Verzeichnis).

Dieses kann zuerst wenig nützlich erscheinen, aber (.) als den Namen des aktuellen Verzeichnisses zu benutzen kann, wie wir später sehen werden, viel Schreiben sparen.

(..) bedeutet das Oberverzeichnis des aktuellen Verzeichnisses und die Eingabe von:

$ cd ..

bringt Sie in der Verzeichnishierarchie eine Ebene weiter nach oben (in unserem Fall zurück zu Ihrem Basisverzeichnis). Versuchen Sie es jetzt einmal.

Anmerkung: Wenn Sie cd ohne Argument schreiben kehren Sie immer zu Ihrem Basisverzeichnis zurück. Dieses ist sehr nützlich, wenn Sie sich im Dateisystem verloren haben sollten.

Pfadnamen

pwd (das aktuelles Verzeichnis anzeigen - print working directory)

Pfadnamen zeigen Ihnen die aktuelle Position innerhalb des Dateisystems an. Um beispielsweise den absoluten Pfadnamen Ihres Basisverzeichnisses (home directory) herauszufinden, geben Sie cd um in Ihr Basisverzeichnis zurück zu gelangen ein und dann schreiben Sie:

$ pwd

Der vollständige Pfadname sieht etwa so aus:

/home/yourname

welches bedeutet, dass yourname (Ihr Basisverzeichnis) ein Unterverzeichnis des Verzeichnisses /home ist.

Übung 1b

Verwenden Sie die Befehle ls, pwd und cd zur Erforschung des Dateisystems.

(Zur Erinnerung: wenn Sie sich verloren haben reicht die Eingabe von cd, um zu Ihrem Basisverzeichnis zurückzugehen)

Mehr über Verzeichnisse und Pfadnamen

Pfadnamen verstehen

Zuerst geben Sie cd zur Rückkehr in Ihr Basisverzeichnis ein und schreiben dann:

$ ls unixstuff

zur Ausgabe des Inhalts Ihres unixstuff Verzeichnisses.

Jetzt geben Sie ein:

$ ls backups

Sie erhalten eine solche Meldung:

backups: Keine solche Datei oder Verzeichnis

Der Grund ist, dass das Verzeichnis backups nicht in Ihrem aktuellen Dateiverzeichnis ist. Zur Anwendung eines Befehls auf eine Datei (oder ein Verzeichnis) welches nicht im aktuellen Dateiverzeichnis (das Verzeichnis in dem Sie sich im Moment befinden) ist, müssen Sie entweder zuerst mit cd zum korrekten Verzeichnis wechseln, oder seinen vollständigen Pfadnamen spezifizieren. Um den Inhalt Ihres Verzeichnisses backups auszudrucken, müssen Sie schreiben:

$ ls unixstuff/backups

~ (Ihr Basisverzeichnis - /home/youname)

Basisverzeichnisse können auch durch das Tilde ~ Zeichen angesprochen werden. Es kann verwendet werden, um die Pfade die an Ihrem Basisverzeichnis beginnen zu spezifizieren. Also druckt der Befehl:

$ ls ~/unixstuff

den Inhalt Ihres unixstuff Verzeichnisses aus, egal wo Sie aktuell im Dateisystem sind.

Was glauben Sie was

$ ls ~

ausdrucken würde?

Was denken Sie was

$ ls ~/..

ausdrucken würde?

Zusammenfassung

ls

Auflisten von Dateien und Verzeichnissen

ls -a

alle Dateien und Verzeichnisse ausdrucken

mkdir

ein Verzeichnis erstellen

cd Verzeichnis

zu dem benanntem Verzeichnis wechseln

cd

zum Basisverzeichnis gehen

cd ~

zum Basisverzeichnis gehen

cd ..

zum nächst höheren Verzeichnis gehen

pwd

den Pfad des aktuellen Verzeichnisses anzeigen

Kopieren von Dateien

cp (kopieren - copy)

cp Datei1 Datei2 ist der Befehl, der ein Kopie von Datei1 im aktuellen Dateiverzeichnis erstellt und es Datei2 nennt.

Speichern Sie eine Kopie der Datei science.txt in Ihrem Basisverzeichnis.

Wir verwenden nun den Befehl cp und kopieren eine Datei aus Ihrem Basisverzeichnis in Ihr unixstuff Verzeichnis.

Am Shell Prompt geben Sie das Folgende ein, um sicherzustellen, dass Sie in Ihrem Basisverzeichnis sind:

$ cd

Jetzt geben Sie ein:

$ cp science.txt unixstuff

Andererseits hätten Sie im unixstuff Verzeichnis beginnen können und dort geschrieben haben:

$ cp ../science.txt .

Den Punkt (.) am Ende der Eingabe nicht vergessen, Sie erinnern sich, der Punkt steht in Linux stellvertretend für das aktuelle Verzeichnis. Der oben genannte Befehl bedeutet: kopiere die Datei science.txt (welches im Oberverzeichnis des aktuellen Verzeichnis liegt) zum aktuellen Verzeichnis unter Beibehaltung des Namens.

Übung 2a

Erstellen Sie ein Backup Ihrer science.txt Datei, indem Sie es zu einer Datei kopieren, die science.bak genannt wird.

Verschieben von Dateien

mv (verschieben - move)

mv Datei1 Datei2 verschiebt (oder umbenennt) Datei auf Datei2.

Verwenden Sie den Befehl mv zur Verschiebung einer Datei von einem Platz auf einen anderen. Im Gegensatz zum Kopieren verschiebt dieser Befehl die Datei und danach haben Sie also nur eine anstatt zwei Dateien.

Man kann mv auch zur Umbenennung einer Datei verwenden, indem man die Datei im gleichen Verzeichnis, aber mit anderem Namen verschiebt.

Wir verschieben jetzt die Datei science.bak in Ihr Verzeichnis backups.

Zuerst wechseln Sie zu Ihrem unixstuff Verzeichnis (Sie wissen noch wie?). Dann innerhalb des unixstuff Verzeichnisses, geben Sie ein:

$ mv science.bak backups

Geben Sie ls und ls backups ein, um zu sehen ob es funktioniert hat.

Löschen von Dateien und Verzeichnissen

rm (löschen - remove), rmdir (Verzeichnis löschen - remove directory)

Verwenden Sie den Befehl rm zum Löschen einer Datei. Als Beispiel werden wir eine Kopie der science.txt Datei erstellen und anschließend löschen wir sie.

Innerhalb Ihres unixstuff Verzeichnisses geben Sie ein:

$ cp science.txt tempfile.txt
$ ls # zur Überprüfung ob die Datei erstellt wurde
$ rm tempfile.txt
$ ls # zur Überprüfen ob die Datei gelöscht wurde

Sie können mit dem rmdir Befehl versuchen, ein Verzeichnis zu löschen (zuerst sicherstellen, dass es leer ist). Nun versuchen Sie das Verzeichnis backups zu löschen. Das geht nicht, da Linux Ihnen auf diese Weise nicht erlaubt ein Verzeichnis mit Inhalt zu löschen (Jedoch können Sie mit rm und der Option -r ein nicht leeres Verzeichnisses löschen).

In der Shell werden alle Einträge nach dem Kommentarzeichen # ignoriert .

Übung 2b

Erstellen Sie unter Verwendung des Befehls mkdir ein Verzeichnis namens tempstuff und löschen Sie es anschließend mit dem Befehl rmdir.

Den Dateiinhalt im Terminalfenster anzeigen

clear (die Ausgaben im Terminalfenster löschen - clear screen)

Bevor Sie das folgende Kapitel beginnen, löschen Sie im Terminalfenster die Ausgaben der vorhergehenden Befehlen, damit die Ausgaben der folgenden Befehle besser verstanden werden können.

Nach dem Prompt geben Sie ein:

$ clear

Dieses löscht allen Text und belässt nur das $ Prompt an der Oberseite des Fensters.

cat (verketten - concatenate)

Der Befehl cat kann zur Ausgabe des Dateiinhalts im Terminalfenster benutzt werden. Geben Sie ein:

$ cat science.txt

Wie Sie sehen können, ist die Datei länger als die Größe des Fensters. Der Text läuft durch und ist so schlecht lesbar.

less

Der Befehl less gibt den Dateiinhalt im Terminalfenster Seite für Seite an. Geben Sie ein:

$ less science.txt

Betätigen Sie die [Leertaste] (oder die Pfeiltasten) wenn Sie eine andere Seite sehen möchten, und die Taste [q] wenn Sie das Lesen beenden möchten. Wie Sie sehen können, ist für lange Dateien less besser als cat.

head

Der Befehl head gibt die ersten 10 Zeilen einer Datei im Terminalfenster aus.

Zuerst leeren Sie das Terminalfenster und geben dann ein:

$ head science.txt

Dann geben Sie ein:

$ head -5 science.txt

Welchen Unterschied hat der Zusatz -5 bewirkt?

tail

Der Befehl tail gibt die letzten 10 Zeilen einer Datei im Terminalfenster aus.

Zuerst leeren Sie das Terminalfenster und geben dann ein:

$ tail science.txt

Wie können Sie die letzten 15 Zeilen der Datei ansehen?

Durchsuchen des Dateiinhalts

Einfaches Suchen mit less

Mit less können Sie eine Textdatei nach einem Schlüsselwort (Muster) absuchen. Zum Beispiel, um die Datei science.txt nach dem Wort „science“ zu durchsuchen geben Sie ein:

$ less science.txt

dann, weiterhin in less (d.h. nicht [q] betätigen um es zu beenden), einen Vorwärtsschrägstrich [/] gefolgt vom gesuchten Wort schreiben.

/science

Wie Sie sehen können, findet und markiert less das gesuchte Schlüsselwort. Drücken Sie die [n]-Taste um nach weiteren Vorkommen des Wortes zu suchen.

grep (nicht fragen, warum es grep genannt wird)

grep ist eins von vielen Standard Linux Hilfsprogrammen. Es sucht Dateien nach spezifizierten Wörtern oder Mustern ab. Zuerst löschen Sie den Inhalt des Terminalfensters und geben dann ein:

$ grep science science.txt

Wie Sie sehen können, hat grep jede Zeile ausgedruckt, die das Wort science enthält.

Hat es das wirklich????

Versuchsweise geben Sie ein

$ grep Science science.txt

Der Befehl grep beachtet Groß- und Kleinschreibung; er unterscheidet zwischen Science und science.

Um dies zu ignorieren, verwenden Sie die Option -i, d.h. geben Sie ein:

$ grep - i science science.txt

Um nach einen Ausdruck oder einem Muster zu suchen, müssen Sie es in einfachen Anführungsstrichen einschließen. Um beispielsweise nach spinning top zu suchen, geben Sie ein:

$ grep - i 'spinning top' science.txt

Einige der anderen Optionen von grep sind:

-v die NICHT passenden Zeilen anzeigen
-n die Zeilennummer vor jeder passenden Zeile angeben
-c nur die Anzahl der passenden Zeilen angeben

Versuchen Sie einige dieser Optionen und sehen Sie sich die verschiedenen Resultate an. Sie können die Optionen auch kombinieren, zum Beispiel für die Anzahl der Zeilen ohne die Wörter science oder Science geben Sie ein

$ grep - ivc science science.txt

wc (Wortanzahl - word count)

Der Befehl wc ist ein handliches kleines Hilfsprogramm und für unsere Datei science.txt gebenSie ein:

$ wc -w science.txt

Um herauszufinden wieviele Zeilen die Datei hat, geben Sie ein:

$ wc -l science.txt

Zusammenfassung

cp Datei1 Datei2

kopiert Datei1 und nennt es Datei2

mv Datei1 Datei2

verschiebt oder umbenennt Datei1 zu Datei2

rm Datei

löscht Datei

rmdir Verzeichnis

löscht Verzeichnis

cat Datei

eine Datei anzeigen

less Datei

eine Datei komplett anzeigen

head Datei

die ersten Zeilen einer Datei anzeigen

tail Datei

die letzten Zeilen einer Datei anzeigen

grep 'Schlüsselwort' Datei

eine Datei nach Schlüsselwörtern durchsuchen

wc Datei

Zeilenl/Wörter/Zeichen Anzahl einer Datei ausgeben


Andere nützliche Linuxbefehle

quota

Allen Kursteilnehmern wird eine bestimmte Menge an Speicherplatz für ihre persönlichen Dateien zugeordnet. Zur Überprüfung Ihrer aktuelle Quote und wie viel Sie bereits davon verwendet haben, geben Sie ein:

$ quota -v

df (disk free)

Der Befehl df gint Ihnen eine Übersicht des Speicherplatz auf Ihrem Dateisystem. Wenn Sie beispielsweise herausfinden wollen wie viel Platz auf Ihrem Wurzelverzeichnis belegt bzw. frei ist geben Sie ein:

$ df .

du (disk use)

Der Befehl du gibt die Grösse jedes Unterverzeichnis in Kilobytes aus. Dies kann nützlich sein, wenn Sie über Ihre Quote hinausgegangen sind und Sie möchten herausfinden, welches Verzeichnis die meisten Dateien hat. Geben Sie in Ihrem Basisverzeichnis ein:

$ du

gzip

Dieses verringert die Größe einer Datei und gibt so wertvollen Speicherplatz frei. Zur Komprimierung der Datei science.txt mittels zip geben Sie ein:

$ gzip science.txt

Dies komprimiert die Datei und legt sie in der neuen Datei science.txt.gz ab.

Zur Ausgabe der Größe Änderung benutzen wir wieder den Befehl ls -l

Zum Auspacken der Datei verwenden Sie den Befehl gunzip

$ gunzip science.txt.gz

file

Der Befehl file gibt Auskunft über den Dateityp, z.B. ASCII (Text), Abbildungen, komprimierte Daten, etc. Um über alle Dateien in Ihrem Basisverzeichnis zu berichten, geben Sie ein:

$ file *

history

Die Shell führt Buch über aller von Ihnen eingegebenen Befehle. Jeder Befehl wird sequentiell gespeichert.

$ history # (die vorherigen Befehle anzeigen)

Sie können das Ausrufezeichen (!) zum Wiederaufrufen von Befehlen benutzen.

$ !! # den letzten Befehl ausführen

$ !- 3 # den drittletzten Befehl ausführen

$ !grep # den letzten mit grep beginnenden Befehl ausführen

Sie können die Buffergröße erhöhen, indem Sie schreiben:

$ set history=100

Und hier endet unsere Streifzug durch die Linux Befehlszeile (cli). Hoffentlich können wir auch in der Zukunft einige kurze Befehlszeilenanleitungen zusammenstellen und Ihnen so das wahre Linux Potential näherbringen. Die daran interessierten Leser können sich gerne mit mir in Verbindung setzen, bitte schreiben Sie an papawoob@pclosmag.com

Reklameanzeige

Seitenanfang