Bash

Aus Fedorawiki.de

(Weitergeleitet von Kommandozeile)
Wechseln zu: Navigation, Suche

Bash ist Fedoras Shell.
Immer wieder kommen im Forum, im Wiki oder in Chats zum Thema Linux die Begriffe bash,Terminal, shell, Konsole oder Kommandozeile vor. Gemeint ist damit immer die Kommandozeile, in die man Befehle eintippen kann, vom Prinzip her ähnlich einer DOS-Umgebung. Kern ist der Kommandointerpreter, der z.B. von der Standardeingabe oder aus einer Datei Text zeilenweise einliest und diesen interpretiert und gegebenenfalls Programme ausführt. In diesem Artikel soll die Nutzung der Shell beschrieben werden.

Inhaltsverzeichnis

Wie man dahin kommt

Betriebszustand 5 - X

Um auf eine Kommandozeile zu kommen, gibt es mehrere Möglichkeiten.

Unter GNOME

Um das gnome-terminal auszuführen, gibt es mehrere Möglichkeiten. Die schnellste ist "Rechte Maustaste" >> "Terminal öffnen". Des weiteren findet sich ein Menüeintrag unter "Anwendungen" >> "Systemwerkzeuge" >> "Terminal".

Unter KDE

Mit Alt+F2 kommt man in den "Befehl ausführen" Dialog. Dort gibt man konsole ein und klickt auf Ausführen. Es öffnet sich ein Fenster, in dem die Eingabeaufforderung zu sehen ist.

Alternativ kann man auch den Menüeintrag Konsole anklicken, oder mit der rechten Maustaste auf den Desktop klicken, und dort Konsole anwählen.

Beliebige Windowmanager

Xterm nutzt X Athena Widgets und Intrinsics für die Terminalemulation unter X. Und kann via

[root]# yum install xterm

eingerichtet werden, wenn der gewählte Windowmanager keine passende Terminalemulation bietet.

Neben X

Neben Fedoras grafischer Oberfläche die auf X arbeitet, werden beim Systemstart gleich mehrere virtuelle Terminals gestartet. Diese sind u.A. hilfreich, wenn die grafische Umgebung blockiert wird, und man mit dieser nicht mehr arbeiten kann.

Außerdem stehen diese virtuellen Terminals auch zur Verfügung, wenn man den Rechner in einem Modus ohne grafische Oberfläche startet, Runlevel 1-3.

Erreichen kann man diese virtuellen Terminals über die Tastenkombination Strg + Alt + F2 bis F6. Dort muss man sich dann mit dem Nutzernamen und Passwort anmelden. Zurück auf die grafische Oberfläche kommt man, sofern diese läuft, mit Strg + Alt + F1. Die verschiedenen virtuellen Terminals werden von /dev/tty* referenziert.

In anderen Betriebszuständen

In den Betriebszuständen 1-3 steht ausschließlich die Shell zur Verfügung. Nach dem Start des Rechners wird als erstes Programm das BIOS abgearbeitet. Das BIOS ist keine SHELL. Danach startet ein Programm welches das Betriebssystem lädt, der im Englischen so genannte "Bootloader"; in Fedora ist dies GRUB 2. GRUB bietet eine sehr begrenzte Shell, nicht Bash.

Nutzung der Shell

Ein Vorteil der Kommandozeile ist, dass man sich dort mal eben als root anmelden kann, um systemrelevante Änderungen durchzuführen, die einem als Nutzer nicht gestattet sind. Mehr dazu im Artikel root.

Ein anderer Vorteil der Kommandozeile ergibt sich aus dem prinzipiellen Aufbau von Linux: egal, welche Einstellungen man alle mit grafischen Mitteln erreichen kann, nie kann man in den grafischen Oberflächen all die Möglichkeiten ausreizen, die Programme mit sich bringen. Das geht nur in der Kommandozeile.

Wichtig ist sie ebenfalls, wenn man einen Rechner steuern möchte, der keine grafische Oberfläche mitbringt, wie es z.B. bei vielen Servern der Fall ist oder X aus bestimmten Gründen nicht startet.

Zu guter Letzt nutzen erfahrene Nutzer gerne die Kommandozeile, weil sie vor allen Dingen einfache Aufgaben dadurch deutlich schneller erledigen können, als wenn sie die grafische Oberfläche dazu nehmen würden.

Anwendungsbeispiel

Es ist spät, du bist müde und willst ins Bett. Einen Download hättest du vorher aber noch gerne. Allerdings soll die Möhre nicht die ganze Nacht durchlaufen:

Also, Terminal auf, flux zwei Kommandos eingetippt und pennen gehen.

wget $URL_zum__Download;shutdown -h now

Allgemeine Hilfe zur Shell

Das englische Referenz-Handbuch liegt nach der Einrichtung der BASH im Regelfall auf dem Massenspeicher.

$ info bash

gestattet das Lesen der englischen Beschreibung von Bash im Terminal oder in der Terminalemulation.

Nicht alles was sich auf der Shell abspielt ist Bash! Bash ermöglicht die Ausführung von Programmen und eine damit verbundene Programmierung. Es muss zwischen Bash internen Kommandos und externen Programmen unterschieden werden.

Kommandos

Eine englische Auflistung BASH interner Kommandos mit ihrer Syntax erhält man durch das Kommando:

$ help

Eine Zusammenfassung zum jeweiligen Kommando erhält man durch durch:

$ help <internes Kommando>

z.B.:

$ help local

Alphabetische Liste interner Kommandos

. : [ alias bg bind break builtin caller cd (Verzeichniswechsel) command compgen complete continue declare dirs disown echo enable eval exec exit export fc fg getopts hash help history jobs kill let local logout popd printf pushd pwd read readonly return set shift shopt source suspend test times trap type typeset ulimit umask unalias unset wait.

Eine zum Ausdruck als PDF erstellte Referenz zur Ausgabe 3.2 erhält man unter folgendem URL:

Shell externe Programme

Programme die nicht Bestandteil von Bash sind, aber auf nahezu jedem Linux-System verfügbar sind und durch die Shell ausgeführt werden können, sind die GNU Core Utilities. Des weiteren enthält das Paket util-linux eine Menge nützlicher Programme.
Die im Paket enthaltenen Programme können mittels:

$ rpm -ql $Paketname | grep bin

angesehen werden (siehe RPM). Die meisten Programme bringen 'manpages' mit.

apropos $Begriff
whatis $Dateiname
man $Dateiname
info Dateiname

helfen weiter.

Eine Auswahl externer Programme

cat 
Ausgeben von Dateien direkt in die Shell
chmod 
Ändern der Zugriffsrechte von Dateien/Verzeichnissen
chown 
Ändern des Besitzers von Dateien/Verzeichnissen
cp 
Kopieren von Dateien/Verzeichnissen
find 
Auffinden von bestimmten Dateien
ln 
Anlegen und Bearbeiten von Verknüpfungen
less 
Seitenweise Anzeige von Dateien
ls 
Auflistung des Inhalts eines Verzeichnisses
lsmod 
Anzeigen der geladenen Kernelmodule
lspci 
Anzeige der PCI-Geräte
more 
Seitenweise Anzeige von Dateien
mv 
Verschieben von Dateien/Verzeichnissen
rm 
Löschen von Dateien/Verzeichnissen
top 
Anzeigen der laufenden Prozesse


Skripten

Allgemeines über Skriptsprachen
Grob umschrieben bietet BASH (wie die meistens SHELL's) die Möglichkeit viele Arbeiten am Rechner zu automatisieren. Sie fungiert dabei auch als Bindeglied verschiedenen Programmen, ähnlich D-BUS. Diese Automatisierung erfolgt durch Programmierung. Eine Datenverabeitungsanlage ist kein Orakel und wenn sie nach den Bedürfnissen des Nutzers agieren soll, müssen Entscheidungen im Sinne des Nutzers bekannt sein. Um auf bestimmte Ereignisse oder Ergebnisse reagieren zu können müssen diese Möglichkeiten im Skript bestimmt sein, sonst wird die Automatisierung (Skriptausführung) beendet. Je mehr Arbeiten durch Programmierung im Sinne des Nutzers erledigt werden können, ohne dass der Nutzer selbst agieren muss, desto besser und produktiver ist die Programmierung. Ein Skript wird mit einem Texteditor oder einer Textverarbeitung erstellt, auf einen Datenspeicher gelegt und lässt sich danach automatisch oder manuell ausführen.

Entwicklungsumgebungen für SHELL's

EMACS dient auch als Entwicklungsumgebung für SHELL's, obwohl EMACS grafisch und bedientechnisch den Ansprüchen der meisten Menschen nicht mehr gerecht wird. Viele Experten, Berufler und Profis (Profitler) legen auf das Aussehen viel weniger Wert als Gelegenheitsnutzer, der Funktionsumfang und die Produktivität stehen bei ihnen im Vordergrund. Getreu dem englischen Motto: "Form follows function!" (Das Aussehen ist der Funktion nachrangig) oder dem deutschen Sprichwort: "Die Hauptsache ist der Effekt!". Dem steht nicht entgegen, eine SHELL- insbesondere BASH-Entwicklungsumgebung zu programmieren, die heutigen Ansprüchen genügt, oftmals fehlt entweder die nötige Motivation (z.B. Geld), das nötige Fachwissen oder die nötige Zeit um ein solches Projekt zu vollenden. Die Auswahl des hierzu zu nutzenden Widget-Toolkits ist alleine die Entscheidung des Entwicklers oder der Entwickler. Die Entscheidung kann vorrangig optische Gründe haben.
Auch die Integration einer grafischen Entwicklerumgebung in eine Infrastruktur einer bestehenden grafischen Benutzerumgebung ist die Angelegenheit der Programmierer der Entwicklerumgebung. Der Unterschied zwischen grafischen Programmoberflächen und grafischen Nutzerumgebungen kann in dem Artikel grafische Oberflächen ausgearbeitet werden.

Benutzerskripten: Von Benutzern, für Benutzer

  1. vereinfacht die Installation von fehlenden Multimedia-Funktionen
  2. Regelt per Schieberegler die Helligkeit für nVidia-Katen

Lehrskripten: Beispielskripten zum Lernen

  1. Skript das eine Auswahl aller Dateien im aktuellen Verzeichnis ausgibt
  2. Erzeugt 200 Dateien, Nummerischer Präfix, Alphanummerischer Suffix
  3. Lernskript zum Experimentieren mit positionalen Parametern.

Grafische Dialoge für Skripten

Für X

Visual BASH

Verwendet das KDE Werkzeug Kommander zur Erstellung grafischer Dialogboxen. Die Kommunikation zwischen Dialogboxen und der BASH wird durch das Desktop Communication Protocol DCOP realisiert (ein Protokoll welches die Kommunikation von grafischen (KDE) Programmen untereinander erlaubt).

http://grahams.free-online.co.uk/mediawiki/index.php/Visual_Bash

Zenity

Entstand aus GDialog, der GNOME angepassten Programmvariante von Dialog.
Eine ausführliche Seite zu Zenity findet befindet sich im Wiki.
http://library.gnome.org/users/zenity/stable/

Für die Shell

Dialog
Whiptail

Whiptail kann für die Erzeugung einer grafischen Benutzeroberfläche in der Shell genutzt werden. Der Paketname ist newt.

Tipps und Tricks

Weitere Informationen

Unterschied von Shell und Terminal

Obwohl die Begriffe "Shell" und "Terminal" oft synonym verwendet werden (auch in dieser Einführung), bezeichnen sie genau genommen verschiedene Teile. Die Shell ist dabei das Programm, welches die Kommandos interpretiert, während das Terminal für die Ein- und Ausgabe der Daten zuständig ist. Der Unterschied wird deutlicher, wenn man den Anfang dieses Artikels nochmals betrachtet, wo mit gnome-terminal, konsole, etc. verschiedene Terminals vorgestellt wurden, die allerdings als Shell alle die Bash verwenden (in der Standardeinstellung von Fedora).

Alternative Shells

So wie es also verschiedene Terminals gibt, existieren neben der Bash auch noch andere Shells welche sich in der Notation und den Funktionen zum Teil unterscheiden. Die Login-Shell eines Benutzers lässt sich mit dem Programm chsh (Change Shell) ändern.

POSIX-Shells:

  • ash (Almquist shell)
  • csh/tcsh (The C-Shell)
  • dash (Debian Almquist shell)
  • fish
  • pksh (ksh93t+)(POSIX Korn Shell)
  • pdsh (Parallel distributed Shell)
  • Scsh (The Scheme Shell)
  • zsh

Shells anderer Betriebssysteme

  • Win32/Microsoft-Shells: cmd.exe, 4NT, Windows PowerShell (.NET)
  • DOS-Shells: COMMAND.COM, 4DOS, OS/2 cmd.exe
  • Plan 9, POSIX: rc
  • OpenVMS: VMS DCL

Shells der Programmiersprachen

Projektstatus und Versionen

Die letzte offizielle BASH Veröffentlichung ist die Ausgabe 4.2, vom 13.02.2011. Und 10 Ergänzungen (Patches), die letzte vom 05.03.2011. Diese Ausgabe von Bash ist Fedora 15 eingearbeitet.


Siehe auch


Externe Verweise

IRC-Channel

  • Server: irc.freenode.net (formerly OpenProjects.net) Kanal: #bash (Englisch)
  • Server: irc.freenode.net (formerly OpenProjects.net) Kanal: ##bash-de