Medien & Phantastik > Linux/Unix

[Tipp] Die Befehlszeile

(1/9) > >>

Bitpicker:
*Düstere Akkorde* :ctlu:

Der Alptraum der meisten Umsteiger heißt 'Befehlszeile'. Leicht entsteht der Eindruck, dass man bei Linux unglaublich viel von Hand machen muss, indem man obskure Befehle auf einer spartanischen Befehlszeile eingibt. Das schreckt manchen ab.

Zunächst mal sollte man sich vor Augen halten, dass das bei Windows früher nicht anders war. Bis Win ME einschließlich war Windows nur eine grafische Oberfläche für MS DOS - alte Hasen erinnern sich. Daran änderte auch die Tatsache nichts, dass man ab Win95 die grafische Oberfläche automatisch vorgesetzt bekam und sie nicht erst über die Eingabe von win.com an der Befehlszeile starten musste. Wer damals schon keine Befehlszeile brauchte, schrieb win.com einfach als letzte Zeile in seine autoexcec.bat und bekam die Oberfläche ebenfalls beim Booten automatisch.

Die Befehlszeile hat aber durchaus ihren Sinn, selbst unter Windows. Da heißt das Ding 'DOS Box' oder 'Eingabeaufforderung' und fristet sein Dasein irgendwo im Zubehör, läuft in einem kleinen Fensterchen und ist generell meist so bedeutungsvoll für die tägliche Arbeit wie Blinddarm und Mandeln für den Körper. Wie diese hat aber auch die Windows-Befehlszeile noch einen gewissen Sinn, wie wohl jeder nachvollziehen kann, der schon mal einen Rechner angepingt hat oder über ipconfig seine Netzwerkverbindung überprüft hat. Es würde mich zwar nicht wundern, wenn selbst für ping eine grafische Oberfläche existiert, aber nötig ist sie nicht.

Unter Linux ist die Befehlszeile wesentlich mächtiger und bedeutungsvoller. Es gibt fast nichts, was man damit nicht tun kann. Wenn man zum Beispiel eine CD mit Daten brennen will, kann man das mit dem Befehl cdrecord tun - wenn man Lust hat, drei Zeilen Parameter hinten dran zu hängen. In diesem Fall ist es natürlich einfacher, zu einem Programm wie xcdroast oder k3b zu greifen, die aus der grafischen Oberfläche heraus CDs brennen; aber sie tun das, indem sie cdrecord aufrufen. Die Oberflächen sind nichts anderes als grafische Eingabeformulare für die Befehlszeilenparameter, die man sonst von Hand eingegeben hätte; im Hintergrund sorgt das Befehlszeilenprogramm dafür, dass die CD tatsächlich gebrannt wird.

Es gibt also kein Linux ohne Befehlszeile; aber es gibt ein Leben mit Linux ohne Befehlszeile. Allen Unkenrufen zum Trotz glaube ich, dass ein Normalanwender täglich mit Linux arbeiten kann, ohne je eine Befehlszeile benutzen zu müssen. Aber es ist schön zu wissen, dass sie immer da ist und im Notfall benutzt werden kann. Manche Dinge gehen auf der Befehlszeile auch schneller; aber da treffen Geschwindigkeit und persönlicher Geschmack schon mal aufeinander.

Ein großer Vorteil der Befehlszeile ist ihre Verlässlichkeit. Wenn ein Linuxanwender ein Problem hat, weil irgend etwas nicht funktioniert, dann fragt er in einschlägigen Foren (oder nicht ganz so einschlägigen wie diesem) nach. Oft erhält er eine Antwort, die mit der Befehlszeile zu tun hat. Das liegt daran, dass man sich auf das Vorhandensein der Befehlszeile verlassen kann. Die grafischen Oberflächen können sich beträchtlich unterscheiden, ebenso die Distributionenund vor allem deren Konfigurations- und Software-Installationsprogramme. Ich kann einem SuSE-Benutzer nicht erklären, was mit seinem Yast falsch läuft, weil es Yast nur unter SuSE gibt; aber ich kann ihm erklären, wie er die Software, die er haben will, auf der Befehlszeile selbst kompiliert. Ich weiß vielleicht nicht genau, wie man einen Drucker unter KDE einrichtet, aber an der Befehlszeile kriege ich es womöglich hin.

Wenn bei normalen Distributionen von der Befehlszeile die Rede ist, dann ist das meist die bash. Bash heißt 'Bourne Again Shell', was ein Wortspiel ist, da es sich um einen Nachbau der altehrwürdigen und kostenpflichtigen Bourne-Shell handelt, die seinerzeit unter Unix eingesetzt wurde. 'Shell' bedeutet zunächst einmal 'Befehlsumgebung'. Unter DOS war das früher command.com. Dieser Befehl wurde automatisch gestartet und stellt solche Befehle wie copy zur Verfügung. Es gab unter DOS kein copy.com, copy war ein interner Befehl der Shell command.com. In der Bash heißt der gleiche Befehl cp. Unter DOS gab es auch externe Befehle, wie zum Beispiel xcopy.com. Auch für Linuxsysteme gibt es viele externe Befehle, die von der Shell ausgeführt werden können.

Ich sage 'es ist meist die Bash', weil das nicht sein muss. Es gibt sicher noch ein gutes Dutzend weitere Shells mit solchen namen wie csh, zsh usw., die sich für bestimmte Aufgaben besser eignen mögen als die bash; aber die meisten Distris, die keine Spezialaufgaben haben, verwenden bash, und viele Informationen für die eine Shell gelten auch auf anderen.

Dazu gleich mehr.

Monkey McPants:
Sehr interessant. Irgendwie lustig das sich mein persönliches Interesse an Linux (das erst in den letzten Wochen so richtig angefangen hat) zeitlich so gut mit dem kollektiven Interesse einiger GroFaFoler trifft. ;D

Ich lese in diesem Channell auf jeden Fall gespannt weiter. ;)

M

Bitpicker:
Wie kommt man jetzt zur Befehlszeile?

Die meisten Distributionen booten heutzutage in einen grafischen Loginmanager. Dort gibt man Benutzernamen und Passwort ein und ist in seiner grafischen Oberfläche. Das muss aber nicht sein; ich selbst verzichte z.B. auf grafische Loginmanager und boote immer erst auf eine Befehlszeile, von der aus ich den Desktop auswähle, der meiner Tagesform entspricht, sofern ich überhaupt einen brauche. Aber es führen noch andere Wege zur Befehlszeile.

Zunächst einmal ist Linux, da auf Unix basierend, schon immer ein Mehrbenutzersystem mit umfassender Netzwerkunterstützung gewesen. Ein Relikt aus der Zeit, als mehrere Benutzer mit Teletype-Geräten (http://en.wikipedia.org/wiki/Teletype) sich einen Rechner mit Prozessor teilten, ist die Konsole. Damals hingen eben mehrere dieser Tele-Schreibmaschinen an einem Unix-Rechner, jeweils an einer Konsole. An Monitore war da noch gar nicht gedacht. Diese Konsolen existieren bis heute: bei gebootetem Linux mit grafischer Oberfläche, drückt doch einfach mal Strg+Alt+F2 (oder F3, F4... F6) und ihr seht, wie die grafische Oberfläche verschwindet und durch eine Befehlszeile ersetzt wird, an der ein Login blinkt. Das ist eine Konsole, die folgerichtig als tty2, tty3 usw. bezeichnet wird. Keine Panik, mit Strg + F7 (selten F8, je nach Distri - Achtung, kein Alt notwendig beim Wechsel weg von Text-Konsolen) kommt ihr wieder zurück zur grafischen Oberfläche; die läuft nämlich in der Regel auf Konsole 7. Auf Konsole 1 (Strg+Alt+F1 aus der grafischen Oberfläche, sonst Strg+F1) findet ihr die Ausgaben eures X-Servers; von dieser Konsole aus wurde die grafische Oberfläche gestartet. Auf Konsolen 8 und höher findet ihr je nach Distri noch weitere Ausgaben.

Diese verschiedenen tty-Konsolen können jederzeit auch von verschiedenen Benutzern verwendet werden, selbst übers Netzwerk, und es ist auch möglich, weitere grafische Oberflächen von diesen Konsolen aus wiederum auf weiteren Konsolen zu starten, so dass man z.B. zwischen einer KDE- und einer Gnomeoberfläche im laufenden Betrieb hin und her wechseln kann.

Das wäre die erste Möglichkeit, an eine Konsole zu kommen, und ist auch ein schöner Rettungsanker, wenn die grafische Oberfläche einfriert; das sollte zwar eigentlich nicht passieren, aber es ist möglich, insbesondere, wenn man mit experimenteller Software wie 3D-Desktops rumspielt. Von einer Konsole aus kann ich ein grafisches Programm, das in meiner grafischen Oberfläche läuft und diese blockiert, mittels des kill-Befehls abschießen. Wenn ich dann auf die grafische Oberfläche zurückkehre, ist in der Regel alles wieder normal.

Natürlich gibt es auch Befehlszeilen im Fenster, sogenannte Terminals. (Ich will hier mal 'Konsole' und 'Terminal' in dieser Art trennen, obwohl tty eigentlich 'teletype terminal' heißen soll und die Befehlszeile im Fenster unter KDE 'Konsole' heißt. Die Begriffe sind austauschbar, aber hier trenne ich mal künstlich.)

Terminals sind, im Gegensatz zu den Konsolen, keine Funktionen des Betriebssystems, sondern eigenständige Programme. Wie meist unter Linux gibt es nicht nur eins, sondern ziemlich viele. Praktisch auf jedem System vorhanden ist xterm. Das ist das grundlegende Terminal, viele andere setzen sogar auf diesem auf und motzen es nur durch konfigurierende Startparameter auf. Es gibt aber noch eine Reihe weiterer Befehlszeilenprogramme wie das genannte 'Konsole' von KDE, das ähnlich prosaisch benannte 'Terminal' von XFce oder solche netten Spielereien wie quadkonsole, ein Programm, das gleich ein Carré aus vier Terminals öffnet, so dass man mit mehreren Befehlszeilen gleichzeitig rumspielen kann. Ja, so Leute gibt es... Mich zum Beispiel. Manche Terminals lassen auch den Betrieb mehrerer Befehlszeilen in unterschiedlichen Registern oder Tabs zu. Manche lassen sich leicht transparent schalten und ohne Fensterränder darstellen, so dass die Eingabezeile gleich auf den Desktop liegt. Es ist für jeden etwas dabei.

Gleich: jetzt habe ich das Ding, was mach ich jetzt damit?

Robin

Bitpicker:
So, da prangt sie nun vor dir, die Befehlszeile. Da steht vorne dein Benutzername, daneben steht noch mehr Zeuch, und ein frecher Cursor blinkt da. Was nun?

Zunächst einmal eine frohe Botschaft: man kann sich das Lernen vieler Befehlszeilenprogramme sparen, wenn man den Midnight Commander benutzt. Aufgerufen wird er durch den Befehl mc, wenn er installiert ist, ansonsten würde ich empfehlen, das schnell nachzuholen. Allerdings weiß ich leider gerade bei Ubuntu nicht, wo er sich im Paketmanagement versteckt - aber das finde ich noch heraus. Bei anderen Distris sollte das kein Problem sein.

Der Midnight Commander ist ein Klon des alten Norton Commander, den der eine oder die andere vielleicht noch aus DOS-Zeiten kennt. Natürlich hat er mehr Funktionen, die man unter DOS nicht brauchte, z.B. zum Manipulieren von Benutzerinformationen. Ich benutze mc auch als Dateimanager, weil ich die Explorer-ähnlichen Dinger, die es sonst so gibt, eher lästig als nützlich finde, besonders beim Kopieren von Daten.

Der Midnight Commander kann mit tar.gz und bz2 Dateien umgehen, als wären es Verzeichnisse. Es ist also nicht notwendig, sich die Parameter für Befehle wie tar zu merken, die man braucht, um solche Archive zu benutzen. Man geht einfach auf einer Seite in das Archiv und markiert dort die auszupackenden Dateien, auf der anderen in das Zielverzeichnis, drückt die Funktionstaste für Kopieren, und schon werden die Dateien rüberkopiert. Markiert wird übrigens entweder durch die Einfügen-Taste, wenn die zu markierende Datei unterlegt ist, wodurch diese heller und fetter wird; oder durch die Plus-Taste auf dem Ziffernblock, wo eine Maske eingegeben werden kann. * steht hier für alle Dateien, */ für alle Verzeichnisse.

Der Midnight Commander kann natürlich auch Dateien verschieben, kopieren, löschen, umbennen (fürs Verschieben wird Umbenennen benutzt) usw. Er kann auch Dateiberechtigungen ändern, was das Erlernen von chmod unnötig macht, sowie Dateien und Verzeichnisse anderen Benutzern zuweisen (chown), was hilfreich ist, wenn man in seinem Heimatverzeichnis mal wieder irrtümlich als Root ein Verzeichnis angelegt hat und sich nun wundert, warum man damit nix mehr machen kann. (mc als Root starten, übers Menü Besitzer ändern, fertig).

Der Midnight Commander hat auch Editor-Funktionen, wenn auch nur einfache, aber für das Ändern von Einträgen in Konfigurationsdateien ist das völlig ausreichend. Kein Mensch muss sich mit vi, vim oder emacs rumschlagen, was m.E. die Hölle ist, wenn es nur darum geht, eine falsche Zeile in einer Konfigurationsdatei zu ändern.

Wer mit dem mc umgehen kann, dürfte um eine ganze Menge von Befehlszeilenberührungen herumkommen. Da es aber doch gelegentlich unvermeidlich ist, gleich mehr zu den Befehlen.

Dr.Boomslang:
Sehr interessant. Das ist das tolle an Linux: Es ist das totale Chaos! ;D Jeder macht irgendwas oder sogar alles anders. Es ist schon interessant zu sehen wie andere damit arbeiten. Das mit dem Midnight Commander muss ich mal ausprobieren.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln