Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Einführung in die Linuxshell
Die Shell (Terminal, Kommandozeile, Befehlszeile) ist ein Befehlsinterpreter im Linux-System. Befehle werden in Textform eingegeben und durch drücken der ENTER-Taste ausgeführt. Die Linuxshell ist vergleichbar mit der Eingabeaufforderung in Windows, aber weitaus mächtiger als diese. Viele Arbeiten in einem Linuxsystem lassen sich mit der Shell viel effektiver durchführen, als mit grafischen Tools.
Basics
Shell-Prompt
Wenn man die Shell startet, steht vor dem Befehl dass Shell-Prompt, aus dem sich bestimmte Informationen ablesen lassen.
user@linux:~$
- user Nutzername des angemeldeten Nutzers
- @ - „auf“
- linux - Recchnername
- ~ gibt das Verzeichnis an (~ ist eine Abkürzung für das Homeverzeichnis /home/user)
- $ - Es handelt sich um einen ganz normalen Nutzer ohne Administrator-Recchte
Das Shell-Prompt für den Administrator (root) sieht so aus:
root@linux:~#
Kommandos
Kommandos oder Befehle sind ausführbare Dateien (Programme, Scripte). Damit sie ausgeführt werden können müssen sie im Suchpfad liegen bzw. muss man den vollständigen Pfad angeben.
Kommandos können Übergabeparameter und Optionen haben.
Schauen wir uns das Kommando ls an:
ls - listet die Dateien und Ordner in einem Verzeichnis auf
Optionen: -l Langform, -a auch versteckte Dateien werden angezeigt
Parameter: das Verzeichnis
Beispiele:
user@linux:~$ ls [] user@linux:~$ ls -l [] user@linux:~$ ls -a [] user@linux:~$ ls -la [] user@linux:~$ ls -la /home/ []
Um sich alle Optionen des Befehls des Befehls ls anzeigen zu lassen kann man den Befehl man benutzen:
user@linux:~$ man ls
Autovervollständigung
Wenn man nicht genau weiß, wie der Befehl oder ein Pfad heißt, kann man sich mit der Tab-Taste den Befehl vervollständigen lassen.
Aufgabe 1
Teste alle Beispiele!
Suchmuster
In der Shell kann man in den Namen von Parametern einen oder mehrere Zeichen ersetzen. Dadurch erhält man flexible Ausgaben. Der * ersetzt dabei mehrere Zeichen, das ? ein Zeichen.
Beispiele:
user@linux:~$ ls /etc/*tab [] user@linux:~$ ls -l /dev/sd? []
Aufgabe 2
Teste die Beispiele!
History
Alle Befehle, die von einem Benutzer in der Shell ausgeführt werden, werden in der Datei .bash_history
gespeichert. Der Punkt vor dem Dateinamen gibt dabei an, dass es sich um eine versteckte Datei handelt. Mit den Pfeil nach oben bzw Pfeil nach unten Tasten kann man in diesen Befehlen blättern und sie (eventuell in abgeänderter Form) erneut ausführen. Durch den Befehl history
kann man sich alle Befehle anzeigen lassen.
Aufgabe 3
Teste dass blättern und führe den Befeh history
aus!
Hilfe auf der Kommandozeile
In der Shell gibt es vielfältige Möglichkeiten, sich Hilfe zu holen. Das Kommando man
haben wir bereits kennengelernt.
Hilfeoption im Befehl:
Mit
user@linux:~$ befehl -h
bzw.
user@linux:~$ befehl --help
kann man sich die Hilfe zu einen Befehl anzeigen lassen.
Beispiel:
user@linux:~$ ls -h [] user@linux:~$ ls --help []
Manpage
Mit
user@linux:~$ man befehl
ruft man die Manpage eines Befehls auf. Sie ist meistens ausführlicher als die interne Hilfe.
Beispiel:
user@linux:~$ man ls []
Infoseite
Noch ausführlicher als die Manpage ist die Infoseite zu einem Befehl:
user@linux:~$ info befehl
Beispiel:
user@linux:~$ info ls []
Der Befehl apropos
Mit dem Befehl „aprops“ kann man sich alle Befehle anzeigen lassen, die mit einem bestimmten Thema zu tun haben. Im Beispiel werden alle Befehle angezeigt, die mit kopieren zu tun haben.
user@linux:~$ apropos ls []
Der Befehl whatis
Mit whatis
kann man sich die Kurzbeschreibung eines Befehls anzeigen lassen.
Beispiel:
user@linux:~$ whatis ls []
Aufgabe 4
Teste die Beispiele!
Das Linux-Dateisystem
Aufbau
Im Unterschied zu Windows gibt es unter Linux keine Laufwerksbuchstaben. Auf einen Datenträger (z.B. auf einer internen Festplatte) befindet sich das Wurzeldateisystem (root). In dieser Wurzel befinden sich die wichtigsten Systemordner. (Siehe Abbildung!)
Weitere Datenträger (Festplatten, USB-Sticks, DVD-Laufwerke) können in dieses Dateisystem eingehängt (gemountet) werden. Wechseldatenträger erscheinen dabei meist im Ordner /media. Im Ordner /home befinden sich die Nutzerverzeichnisse. In diesen Verzeichnissen haben die Nutzer jeweils alle Rechte. In den Übrigen Verzeichnissen (außer /var und /tmp) darf nur ein Systemadministrator Änderungen vornehmen.
Relative und absolute Pfade
Mit dem Befehl
user@linux:~$ pwd /home/user
kann man sich das aktuelle Verzeichnis Verzeichnis anzeigen lassen.
Der Befehl cd
Mit dem Befehl cd kann man in ein bestimmtes Verzeichnis des Dateisystems wechseln. Dabei sind Abkürzungen möglich.
Beispiele:
user@linux:~$ cd /home/user/Dokumente user@linux:~/Dokumente$ pwd /home/user/Dokumente
Mit diesem Befehl wechselt man ins Verzeichnis /home/user/Dokumente
. Wie man sieht erscheint jetzt am Prompt ~/Dokumente
. Die Tilde ~
ist eine Abkürzung für das Homeverzeichnis des Nutzers.
user@linux:~/Dokumente$ cd ~ user@linux:~$ pwd /home/user
Gehen wir nun in ein anderes Verzeichnis:
user@linux:~$ cd /usr/bin user@linux:/usr/bin$ pwd /usr/bin
Wie man sieht, wird jetzt im Prompt das vollständige Verzeichnis angegeben.
Weitere Abkürzungen für Verzeichnisse sind der Punkt .
für das aktuelle Verzeichnis und zwei Punkte für das übergeordnete Verzeichnis.
user@linux:/usr/bin$ cd .. user@linux:/usr/$ pwd /usr user@linux:/usr/$ cd . user@linux:/usr/$ pwd /usr
Aufgabe 5
Teste die Beispiele! Ersetze user
durch deinem Benutzernamen!
Unter einem Pfad versteht man den Weg von einem Punkt im Dateisystem zu einen anderen. Zu jedem Ort im Dateisystem kommt man, indem man den Pfad von der Wurzel aus angibt. Einen solchen Pfad nennt man einen absoluten Pfad. Wenn man von einem Punkt des Dateisystems in ein Unterverzeichnis dieses Punkts möchte, muss man nicht den vollständigen Pfad angeben. Eine solche Pfadangabe nennt man relativen Pfad.
Beispiel
user@linux:~$ cd /home/user/Dokumente user@linux:~/Dokumente$ pwd /home/user/Dokumente
user@linux:~$ cd Dokumente user@linux:~/Dokumente$ pwd /home/user/Dokumente
In relativen Pfaden kann man auch die Abkürzungen ..
, .
und ~
nutzen.
Beispiel
user@linux:~$ cd ./Dokumente user@linux:~/Dokumente$ pwd /home/user/Dokumente
Aufgabe 6
Teste die Beispiele! Ersetze user
durch deinem Benutzernamen!
Aufgabe 7
Finde mindestens drei Möglichkeiten, um mit dem Befehl cd vom Verzeichnis /home/user
ins Verzeichnis /home/user/Downloads
zu kommen. Ersetze user
durch deinem Benutzernamen!
Erstellen, Löschen und Verschieben von Dateien
Dateien und Verzeichnisse erstellen
mit dem Befehl touch
lässt sich der Zeitstempel einer Datei ändern. Man kann ihn aber auch nutzen, um eine neue Datei anzulegen.
Beispiel:
Zunächst soll mit ls
eine Textdatei angezeigt werden, die noch nicht existiert:
user@linux:~$ ls datei.txt ls: Zugriff auf 'datei.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
Nun wird die Datei mit touch
angelegt und mit ls
angezeigt:
user@linux:~$ touch datei.txt user@linux:~$ ls datei.txt datei.txt
Mit dem Befehl mkdir
kann man Verzeichnisse anlegen. Wenn dass Verzeichnis schon existiert, wird, im Gegensatz zu touch
eine Fehlermeldung angezeigt. (Mit -ld wird der Inhalt des Verzeichnisses in Langform angegeben.)
Beispiel:
user@linux:~$ ls -ld dir ls: Zugriff auf 'dir' nicht möglich: Datei oder Verzeichnis nicht gefunden user@linux:~$ mkdir dir user@linux:~$ ls -ld dir drwxrwxr-x 2 user user 4096 Mär 9 10:50 dir user@linux:~$ mkdir dir mkdir: das Verzeichnis »dir“ kann nicht angelegt werden: Die Datei existiert bereits
Wenn man bei mkdir
die Option -p verwendet, kann man auch verschachtelte Verzeichnisse anlegen.
user@linux:~$ mkdir -p dir1/dir2/dir3 user@linux:~$ ls -ld dir1 drwxrwxr-x 3 user user 4096 Mär 9 12:44 dir1 user@linux:~$ ls -ld dir1/dir2 drwxrwxr-x 3 user user 4096 Mär 9 12:44 dir1/dir2 user@linux:~$ ls -ld dir1/dir2/dir3 drwxrwxr-x 2 user user 4096 Mär 9 12:44 dir1/dir2/dir3
Aufgabe 8
Teste die Beispiele!
Aufgabe 9
Lege in deinem Homeverzeichnis auf der Kommandozeile die folgende Ordnerstruktur an:
Erstelle auf der Kommandozeile im Ordner Deutschland die Datei berlin.txt und im Ordner Frankreich die Datei paris.txt.
Dateien und Verzeichnisse kopieren
Mit dem Kommando cp
kann man Dateien und Ordner kopieren. cp
erfordert mindestens zwei Argumente „Quelle“ und „Ziel“. Wenn man cp
ohne zusätzliche Argumente verwendet, muss die Quelle eine Datei (kein Verzeichnis) sein.
Wenn das Ziel eine Datei ist, entstehen zwei identische Dateien mit unterschiedlichen Namen. Wenn das Ziel ein Verzeichnis ist, wird die Quelldatei unter denselben Namen in dem Verzeichnis abgespeichert.
Beispiele:
user@linux:~$ touch quelldatei.txt user@linux:~$ cp quelldatei.txt zieldatei.txt
$\rightarrow$ Es entsteht eine zur Datei quelldatei.txt identische Datei zieldatei.txt.
user@linux:~$ touch quelldatei.txt user@linux:~$ cp quelldatei.txt Dokumente
$\rightarrow$ Die Datei quelldatei.txt wird in den Ordner Dokumente kopiert, der Name bleibt erhalten.
Wenn man cp
mit mehr als zwei Argumenten ohne Optionen verwendet, muss das letzte Argument ein Verzeichnis sein, alle anderen Argumente müssen Dateien sein. Die Dateien werden dann in das Verzeichnis kopiert. Ihre Namen ändern sich nicht.
Beispiel:
user@linux:~$ touch q1.txt user@linux:~$ touch q2.txt user@linux:~$ touch q3.txt user@linux:~$ cp q1.txt q2.txt q3.txt Dokumente
$\rightarrow$ Die Dateien q1.txt, q2.txt und q3.txt werden in den Ordner Dokumente kopiert.
Wenn man ganze Ordner kopieren möchte, muss man cp
mit der Option -r
aufrufen.
Beispiel:
user@linux:~$ mkdir kopierverzeichnis user@linux:~$ touch kopierverzeichnis/quelldatei.txt user@linux:~$ cp -r kopierverzeichnis Dokumente
$\rightarrow$ Der Ordner kopierverzeichnis wird mit Inhalt in den Ordner Dokumente kopiert.
Aufgabe 10
Arbeite den Abschitt Daateien und Verzeichnisse kopieren durch und teste die Beispiele!
Aufgabe 11
- Kopiere die Datei berlin.txt aus Aufgabe 9 in den Ordner Dokumente!
- Kopiere die Datei berlin.txt aus Aufgabe 9 unter den Namen peking.txt in den Ordner China.
- Kopiere den Ordner Erde mit Inhalt in den Ordner Dokumente.
Löschen von Dateien und Verzeichnissen
Eine einzelne Datei kann man mit dem Befehl rm
löschen. Ein leeres Verzeichnis löscht man mit dem Befehl rmdir
. Ein Verzeichnis mit Inhalt löscht man mit dem Befehl rm -r
.
Beispiele:
user@linux:~$ rm quelldatei.txt user@linux:~$ rmdir dir user@linux:~$ rm -r dir1
Aufgabe 12
Teste die Beispiele! Lösche alle Dateien und Ordner, die du in den Aufgaben 8 bis 11 angelegt und kopiert hast möglichst geschickt.
Weitere wichtige Befehle
find
Mit dem Befehl find
kann man Verzeichnisse nach Dateien durchsuchen. find erwartet als Argument ein Verzeichnis, dass durchsucht werden soll und danch eine Option, was mit der Datei passieren soll.
Mögliche Optionen:
-name
- listet die gefundenen Dateien auf
-delete
- löscht die gefundenen Dateien
-exec
- führt Programme aus, an die die gefundenen Dateinen übergeben werden.
Beispiele:
user@linux:~$ find /etc -name "fs*" ...
grep
grep
filtert einzelne Zeilen aus Textdateien.
Beispiel:
user@linux:~$ grep root /etc/passwd root:x:0:0:root:/root:/bin/bash
less
Das Programm less
gibt Text (z.B. eine Textdatei) seitenweise aus. Dabei kann man in den Text suchen und blättern. Mit q
beendet man die Ausgabe.
user@linux:~$ less /var/log/syslog
head und tail
Das Programm head
gibt standardmäßig die ersten 10 Zeilen einer Textdatei aus. Mit der Option -n
kann man auch eine andere Zeilenanzahl ausgeben.
Das Programm tail
gibt standardmäßig die letzten 10 Zeilen einer Textdatei aus. Mit der Option -n
kann man auch eine andere Zeilenanzahl ausgeben.
Mit der Option -f
ändert sich die Ausgabe in Echtzeit.
user@linux:~$ head -n 5 /etc/passwd ... user@linux:~$ tail -f /var/log/syslog ...
sort
Mit dem Programm sort
kann man Eingaben, Ausgaben oder den Inhalt von Dateien sortiert ausgeben. Standartmäßig wird alphabetisch sortiert. Mit der Option -r
kann man rückwärts sortieren.
Beispiel:
user@linux:~$ sort /etc/passwd ...
cut
Manche Textdateien haben auch einen spaltenartigen Aufbau. Mit dem Programm cut
kann man bestimmte Spalten einer Textdatei ausgeben.
Beispiel:
user@linux:~$ cut -d: -f1 /etc/passwd ...
wc
Das Programm wc
(„word count) kann man zum Zählen von Wörtern (-w
), Zeilen (-l
) und Zeichen(-m
) benutzen.
Beispiel:
user@linux:~$ wc -w /etc/passwd ... user@linux:~$ wc -l /etc/passwd ... user@linux:~$ wc -m /etc/passwd ...
Aufgabe 13
Teste die Beispiele!
Aufgabe 14
Gegeben ist eine Textdatei cbp19cd.zip 1). Lade Sie herunter und entpacke sie!
- a) Gib alle Zeilen der Datei auf der Kommandozeile aus, in denen das Wort Alabama vorkommt.
- b) Lass dir die Datei mit
less
anzeigen! - c) Gib die Datei sortiert aus!
- d) Gib die zweite Spalte der Datei aus! (Trennzeichen ,)
- e) Zähle Wörter, Zeilen und Zeichen der Datei!
Ein- und Ausgabe-Umleitungen
Einige Kommandos können ihre Ausgabe in eine Datei umleiten (>) oder Informationen aus einer Datei einlesen (<). Im folgenden wird die Ausgabe des Kommandos ls
in die Datei test.txt umgeleitet. Anschließend wird die Datei test.txt vom Kommando wc
eingelesen und die Zeichen werden gezählt.
user@linux:~$ ls > test.txt user@linux:~$ wc -m < test.txt ...