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