Linux Kommandozeile - Ubuntu

Heutzutage wartet man nach dem Einschalten des Computers meist darauf, dass sich eine grafische Oberfläche wie Gnome oder KDE meldet. Dann kann man mit der Maus loslegen. Aber wenn man etwas machen möchte, was nicht von den Programmierern der grafischen Oberfläche vorgesehen ist, dann muss man wieder zur Kommandozeile zurück.

Ganz ehrlich, so schlimm finde ich das gar nicht. Denn ein wenig Spielerei oder auch Arbeit mit der Kommandozeile, ist nur am Anfang etwas ungewohnt. Viele Dinge lassen sich über die Kommandozeile schneller oder überhaupt nur über die Kommandozeile erledigen.

Was ist das überhaupt -- diese Kommandozeile? Also, früher war es einfach. Da war es der schwarze, blaue oder grüne Bildschirm, der sich meldete, nachdem man den Computer eingeschaltet hatte. Es wartete ein (oft blinkender) Cursor, auf die Eingabe eines Befehls. Und wenn man keinen Befehl wusste, dann stand man blöd vor diesem Ding und wusste nicht was man damit anfangen soll. :-) Ja, so ging es mir auch, als ich an einem Weihnachtsabend meinen Commodore 128 vom Christkindl bekahm.

Und so kann ich es mir auch vorstellen, wie es sich für jemanden anfühlt, wenn ich den Rat gebe, mal kurz das Terminal zu öffnen und dort einen Befehl einzugeben.

Da hat man ein schwarzes (heutzutage leider auch ein weißes) Fenster vor sich das auf eine Eingabe wartet. Woher soll man wissen, was man mit dem Ding machen kann? Was kann man eingeben? Was will das Ding überhaupt? Muss man Einstein sein, um damit überhaupt etwas anfangen zu können?

Ein Einstein zu sein hilft sicher auch. ;-) Aber es genügt, wenn man sich ein wenig damit beschäftigt und die Möglichkeiten erforscht. Aber dazu etwas später.

Jetzt möchte ich noch darauf eingehen, was man denn alles so als Kommandozeile bezeichnen kann. Also, es gibt zuerst mal die Konsole, die sich bei manchen Linux-Distributionen während dem Booten des Computers meldet. Oft ist es so, dass die Konsole mit einem Bild mit Laufbalken überdeckt wird -- man will ja die neuen Benutzer nicht mit dem komplizierten Bootvorgang erschrecken.

Aber auch wenn das Betriebssystem gebootet und sich Gnome oder KDE gemeldet hat, kann man immer noch zu einer oder mehreren Konsolen wechseln und sich dort anmelden. Drückt man die Tastenkombination STRG+ALT+F1, dann kommt man zur Konsole 1. Mit der Tastenkombination STRG+ALT+F2 kommt man zur Konsole 2, usw. Und mit STRG+ALT+F7 kommt man wieder zu Gnome zurück. Also, gleich mal ausprobieren. :-)

Es gibt auch andere Kommandozeilen. Man nennt sie oft Terminal Programme oder Terminal Emulatoren. Eines davon ist das Gnome-Terminal. Es gibt mehrere von diesen Programmen, auf die ich aber nicht weiter eingehen möchte. Es genügt, wenn man eines davon kennt.

Was kann man damit machen?

Die Antwort ist sehr einfach und -- wenn man mehr darüber nachdenkt -- auch etwas komplex. Man kann in solchen Terminals oder Konsolen, Programme ausführen. Man kann große und kleine Programme ausführen. Man kann diese Programme miteinander kombinieren. Man kann sie nacheinander ausführen lassen und man kann bestimmen, dass in einigen Fällen das eine und in anderen Fällen das andere Programm ausgeführt werden soll.

Man kann in eine Textdatei hineinschreiben welche Programme hintereinander ausgeführt werden sollen. Solche Textdateien sind dann auch wieder kleine Programme.

Es gibt viele kleine Programme, die auf etwas spezialisiert sind. Diese kleinen Programme kann man miteinander verknüpfen, indem man die Ausgabe des einen Programmes an ein anderes Programm übergibt.

Wie man unschwer erkennen kann, eröffnet das ziemlich viele Möglichkeiten, mit dem Computer und seinen Programmen zu interagieren.

Gnome-Terminal und Bash

Ubuntu liefert das Gnome-Terminal mit, welches man über das Menü Anwendungen -> Zubehör -> Terminal starten kann.

gnome_terminal_nach_dem_start.png

Nach dem Start meldet sich (leider) ein weißes Fenster mit Menü und -- wie soll es auch anders sein -- ein Cursor, der freudig vor sich hin blinkt und auf eine Eingabe wartet. ;-)

Das Gnome-Terminal ist eigentlich nur das Fenster -- ein Container -- in dem ein Programm läuft das auf eine Eingabe wartet. Das Gnome-Terminal kümmert sich darum, dass Text angezeigt wird und man Text eingeben kann. Dieser Text wird an das eingebettete Programm weitergegeben. Man könnte theoretisch einstellen, welches Programm im Terminal gestartet wird. Üblicherweise meldet sich "Bash" (GNU Bourne-Again SHell).

Bash ist (ich nenne es einfach mal so) ein Kommandozeileninterpreter, der auf Befehle wartet und diese abarbeitet. Diese Befehle werden direkt eingegeben. Sie können aber auch von einer Textdatei gelesen werden.

Bash kann nicht nur Programme starten, es bietet auch die Möglichkeit, Daten in Variablen abzulegen und später wieder zu verwenden. Aber auf die vielen Möglichkeiten von Bash möchte ich nicht eingehen. Es geht mir vielmehr darum, dir aufzuzeigen, dass dieses Bash ein Werkzeug ist, mit dem man viel mehr tun kann als es am Anfang scheint.

Noch ein Hinweis: Oft liest man in anderen Seiten das Wort "Shell". Damit ist normalerweise Bash gemeint.

Farbe und Menü

Für mich muss ein Terminal schwarz sein -- mit weißer Schrift. Warum? Weil ich mich im Laufe der Zeit einfach so daran gewöhnt habe.

Schwarzer Text auf weißem Hintergrund signalisiert mir, dass es sich um einen statischen Text oder den Quellcode eines Programmes handelt. Aber als Hinweis für mich, dass ich es mit einem Terminal zu tun habe, welches direkt auf meine Eingabe reagiert, stelle ich mir das Gnome-Terminal immer so ein, dass der Hintergrund schwarz und die Schrift weiß ist. Das kann man über das Menü Bearbeiten -> Profileinstellungen erledigen.

gnome_terminal_schwarz_wie_die_nacht.png

Gleichzeitig schalte ich auch das Menü des Terminals aus. Das Menü reagiert auf die Taste F10. Und F10 brauche ich oft im Midnight Commander, einem Programm, welches im Terminal ausgeführt werden kann. Falls ich das Menü wieder brauche, kann ich es über das Kontextmenü (rechte Maustaste) wieder einblenden.

Prompt

Der Prompt verrät uns, je nach Einstellung, mit welchem Benutzernamen man auf welchem Computer angemeldet ist. Und er Zeigt uns an, welcher Ordner im Moment unser Arbeitsordner ist. Der Prompt ist das was links vom blinkenden Cursor angezeigt wird, sofort nachdem man Gnome-Terminal gestartet hat. Bei mir sieht der Prompt im Moment so aus:

gerold@gerold-ubuntu:~$

"gerold" ist der Name mit dem ich mich angemeldet habe. "gerold-ubuntu" ist der Name des Computers. "~" (die Dilde) zeigt an, dass ich mich in meinem "Persönlichen Ordner", meinem Home-Ordner befinde. Und "$" zeigt mir, dass ich ein normaler Benutzer bin.

Pfadfinder

Linux verwaltet die Dateien in einem Ordnerbaum. Man sagt auch Verzeichnisbaum oder Dateiverzeichnis dazu. Deshalb der englische Ausdruck "Directory". Wenn ich im weiteren Verlauf "Ordner" oder "Verzeichnis" schreibe, dann meine ich damit immer das gleiche.

Der Ordner, in dem alle anderen Ordner und Dateien zu finden sind, ist der Wurzelordner. Man nennt ihn oft auch Wurzelverzeichnis oder Root-Ordner. Dieser Root-Ordner wird mit einem Slash (/) gekennzeichnet. Unterhalb dieses Root-Ordners gibt es Dateien und Unterordner -- in denen natürlich auch wieder Unterordner und Dateien zu finden sind.

Es gibt einen Befehl, mit dem man sich in diesem Ordnerbaum bewegen kann. Wechselt man mit diesem Befehl von einem Ordner in den anderen, dann wechselt man damit das aktuelle Arbeitsverzeichnis. Dieser Befehl heißt cd.

cd steht für "change directory"

Dann gibt es noch einen Befehl, mit dem man sich den Inhalt des aktuellen Arbeitsordners anzeigen lassen kann. Dieser Befehl heißt ls.

ls steht für "list directory contents"

Nach einem Befehl drückt man die Return- oder Enter-Taste. Das signalisiert Bash, dass jetzt etwas getan werden soll.

Gleich mal ausprobieren...

gerold@gerold-ubuntu:~$ ls
Bilder  Desktop  Dokumente  Musik  Videos  Vorlagen
gerold@gerold-ubuntu:~$

Hier werden mir die Ordner aufgelistet, die sich unterhalb meines aktuellen Arbeitsordners befinden. Derzeit befinde ich mich in meinem "Persönlichen Ordner". Deshalb wird mir der Inhalt dieses Ordners angezeigt.

An den Befehl ls, kann man auch Parameter übergeben. Damit kann man z.B. steuern, wie ls den Ordnerinhalt anzeigen soll.

Der Befehl ls -l (=kleines L), zeigt die Dateien und Ordner untereinander an. Zusätzlich werden noch Informationen über die Dateien/Ordner angezeigt:

gerold@gerold-ubuntu:~$ ls -l
insgesamt 24
drwxr-xr-x 2 gerold gerold 4096 2009-10-16 20:24 Bilder
drwxr-xr-x 3 gerold gerold 4096 2009-10-16 23:15 Desktop
drwxr-xr-x 2 gerold gerold 4096 2009-09-29 20:41 Dokumente
-rw-r--r-- 1 gerold gerold    0 2009-10-17 10:59 hallowelt.txt
drwxr-xr-x 2 gerold gerold 4096 2009-09-29 20:41 Musik
drwxr-xr-x 2 gerold gerold 4096 2009-09-29 20:41 Videos
drwxr-xr-x 2 gerold gerold 4096 2009-09-29 20:41 Vorlagen
gerold@gerold-ubuntu:~$

Man sieht...

Mit Hilfe der beiden Befehle cd und ls kann man sich also schon durch den Verzeichnisbaum bewegen und sich ansehen, was sich in einem Verzeichnis befindet.

Beispiel: In den Wurzelordner springen und den Inhalt auflisten:

gerold@gerold-ubuntu:~$ cd /
gerold@gerold-ubuntu:/$ ls -l
insgesamt 92
drwxr-xr-x   2 root root  4096 2009-10-15 20:10 bin
drwxr-xr-x   3 root root  4096 2009-10-15 20:17 boot
lrwxrwxrwx   1 root root    11 2009-09-29 20:25 cdrom -> media/cdrom
drwxr-xr-x  15 root root  3580 2009-10-17 09:48 dev
drwxr-xr-x 140 root root 12288 2009-10-17 09:48 etc
drwxr-xr-x   3 root root  4096 2009-09-29 20:31 home
lrwxrwxrwx   1 root root    33 2009-10-15 20:14 initrd.img -> boot/initrd.img-2.6.31-14-generic
lrwxrwxrwx   1 root root    33 2009-10-13 21:43 initrd.img.old -> boot/initrd.img-2.6.31-13-generic
drwxr-xr-x  18 root root 12288 2009-10-15 20:55 lib
drwx------   2 root root 16384 2009-09-29 20:25 lost+found
drwxr-xr-x   4 root root  4096 2009-10-15 19:56 media
drwxr-xr-x   2 root root  4096 2009-07-14 04:36 mnt
drwxr-xr-x   2 root root  4096 2009-09-29 12:14 opt
dr-xr-xr-x 144 root root     0 2009-10-17 11:48 proc
drwx------  18 root root  4096 2009-10-16 20:12 root
drwxr-xr-x   2 root root  4096 2009-10-15 20:24 sbin
drwxr-xr-x   2 root root  4096 2009-08-25 13:06 selinux
drwxr-xr-x   2 root root  4096 2009-09-29 12:14 srv
drwxr-xr-x  12 root root     0 2009-10-17 11:48 sys
drwxrwxrwt  12 root root  4096 2009-10-17 10:51 tmp
drwxr-xr-x  11 root root  4096 2009-10-15 20:46 usr
drwxr-xr-x  15 root root  4096 2009-09-29 12:21 var
lrwxrwxrwx   1 root root    30 2009-10-15 20:14 vmlinuz -> boot/vmlinuz-2.6.31-14-generic
lrwxrwxrwx   1 root root    30 2009-10-13 21:43 vmlinuz.old -> boot/vmlinuz-2.6.31-13-generic
gerold@gerold-ubuntu:/$

Beispiel: In den /home-Ordner wechseln und den Inhalt auflisten:

gerold@gerold-ubuntu:/$ cd home
gerold@gerold-ubuntu:/home$ ls -l
insgesamt 4
drwxr-xr-x 44 gerold gerold 4096 2009-10-17 10:59 gerold
gerold@gerold-ubuntu:/home$

Wiederholungen

Oft braucht man einen Befehl mehrmals. Bash merkt sich, welche Befehle eingegeben wurden. Mit der Pfeil nach oben-Taste, kann man die letzten Befehle dieser "History" durchwandern. Mit der "Pfeil nach unten"-Taste, wandert man wieder zurück. Bitte gleich ausprobieren.

Mit dem Befehl history, kann man sich die letzten Befehle auflisten lassen:

gerold@gerold-ubuntu:/home$ history
    1  sudo su -
    2  exit
    3  sudo su -
    ...
  102  cd home
  103  clear
  104  history
gerold@gerold-ubuntu:/home$

Will man z.B. den Befehl mit der Nummer 103 wiederholen, dann muss man nur die Zahl, geführt von einem Rufezeichen eingeben und Return drücken:

...
  103  clear
  104  history
gerold@gerold-ubuntu:/home$ !103
clear

gerold@gerold-ubuntu:/home$

Automatische Ergänzung von Namen

Bash bietet eine sehr große Hilfe an. Mit Hilfe der Tabulatortaste, werden Dateiname oder auch andere Namen ergänzt. Wie das genau funktioniert, haben andere bereits besser formuliert, als ich das könnte. Deshalb hier zwei interessante Links: