bash (Grundlagen)

Bearbeiten

Bash steht für Bourne again shell. Diese Unix-Shell ist Teil des GNU-Projekts. Ihr Name ist ein absichtlich zweideutiges Wortspiel und kann sowohl als "Wiedergeborene (born again) Shell" als auch als "Wieder einmal (eine) Bourne Shell" verstanden werden. Die Bash ist die Standard-Shell unter Linux und wurde auf fast alle Unix-Systeme portiert.

grundlegende Unix-Befehle

Bearbeiten
ls                    listet die Dateien im aktuellen Verzeichnis auf
cd <Verzeichnis>      wechselt das Verzeichnis nach <Verzeichnis>
cp <Quelle> <Ziel>    kopiert eine oder mehrere Dateien (<Quelle>) nach <Ziel>
mv <Quelle> <Ziel>   dieser Befehl ermöglicht das umbenennen/verschieben von Dateien oder Verzeichnissen
passwd                ändert das Passwort des aktuellen Benutzers
cat <Textdatei>       schreibt den Inhalt der <Textdatei> auf die Standardausgabe (Bildschirm)
less <Textdatei>      damit kann man den Inhalt einer Datei bequem im Terminal angezeigt bekommen und 
                      z. B. mit den Pfeiltasten auf und ab scrollen
more                  ist ebenfalls ein Programm, welches ein bequemes Durchblättern einer Datei ermöglicht
pwd                   gibt aktuelles Arbeitsverzeichnis aus
exit | logout         abmelden / Sitzung Beenden
man <Befehl>          zum lesen der "Man-Seite" eines Befehls oder Programms
info <Befehl>         zum Lesen der "Info-Seite" eines Befehls oder Programms
su                    um Administrationsrechte zu erhalten (erfordert natürlich Passwort); 
                      su -c "befehl -parameter" führt nur den angegebenen Befehl aus

Die Nutzung der Tabulator-Taste

Bearbeiten

Die Tabulator-Taste stellt Ihnen einen Mechanismus zur Verfügung, den Sie gar nicht hoch genug einschätzen können: die Vervollständigung von Namen. Es handelt sich hier lediglich um einen Hilfsmechanismus für die Eingabe von Kommandozeilen und nicht etwa um einen mit der sogenannten Dateinamensexpansion verwandten Mechanismus. Sollte der Teufel es wollen, dass Sie von Berufs wegen mit der Kommandozeile arbeiten werden, können wir hier getrost festhalten, dass diese eine Taste ihnen viele Kilometer an Tastatureingaben ersparen wird.

Wozu die bash den begonnenen Namen zu vervollständigen sucht, hängt von Ihrer Eingabe ab. Beginnt die Eingabe mit einem $, versucht sie, einen Variablennamen daraus zu machen. Beginnt die Eingabe mit ~, versucht sie einen Benutzernamen zu bilden. Beginnt sie mit @, versucht sie die Eingabe zu einem Hostnamen zu vervollständigen. Wenn keine dieser Bedingungen zutrifft, sucht die bash nach einem Alias- oder Funktionsnamen. Und last but not least (dies ist tatsächlich der häufigste Fall), bildet die bash einen Pfadnamen aus.

Selbstverständlich muss der Name, zu dem die bash vervollständigt, sei es nun eine Variable, ein Benutzername, ein Hostname, ein Alias, eine Funktion oder ein Pfad, auch wirklich existieren. Wenn Sie mit einigen der genannten Begriffe im Augenblick noch nichts anfangen können, machen Sie sich nichts draus. Alle diese Themen werden wir später noch ausführlich behandeln.

Schlagen alle Versuche, eine passende Vervollständigung zu erreichen, fehl, ertönt ein kurzer Piepton. Wenn Sie die Tabulator-Taste nun noch einmal betätigen, zeigt die bash Ihnen alle möglichen Vervollständigungen an. Sie können dann die Eingabe so weit ergänzen, bis sie eindeutig ist, um den Namen schließlich wieder mit der Tabulator-Taste vervollständigen zu lassen. Wenn es überhaupt keine mögliche Vervollständigung Ihrer Eingabe gibt, quittiert die bash das wiederholte Drücken der Tabulator-Taste mit einem weiteren Piepton.

Die häufigste Anwendung dieses Mechanismus ist sicher das Navigieren im Dateibaum. Erstens kann man auf diese Weise auch lange Pfade in beachtlich kurzer Zeit eingeben (wenn Sie den Mechanismus erst einmal beherrschen, vergleichen Sie dies einmal mit der Klickerei in einem der grafischen Dateimanager). Und zweitens hilft es auch Ihrem Gedächtnis auf die Sprünge, wenn Sie einen Datei- oder Verzeichnisnamen nur noch ungefähr im Kopf haben. Tippen Sie dann einfach die ersten 2 oder 3 Buchstaben, die Sie noch im Kopf haben, und lassen Sie sich dann die möglichen Vervollständigungen anzeigen. Eine hübsche Sache.

Ein Beispiel: mce<tab> /e<tab>/modu<tab> ergibt zB. mcedit /etc/modules.conf (vorausgesetzt mcedit ist vorhanden).

Textverarbeitung mit vim

Bearbeiten

Irgendwann versucht sich jeder einmal an den Konfigurationsdateien und scheitert: Der XServer lässt sich nicht mehr starten und man steht vor einem großen Problem: Wie bekommt man z. B. das vergessene Semikolon, die fehlenden Anführungszeichen o. ä. wieder an den korrekten Platz?

Hier hilft der Kommandozeileneditor vim (vi improved = vi [ein älterer Editor] verbessert).

Die integrierten Funktionen von vim sind endlos, und eine vollständige Dokumentation würde Bücher füllen, aber für die einfache Texteditierung kann man ihn auch missbrauchen.

 vim dateiname

lädt die Datei, die nun dargestellt wird. Man navigiert am Anfang am besten mit den Pfeiltasten, um den Text zu ändern drückt man "i", dann ist es möglich, wie bei einem "normalen" Textverarbeitungsprogramm zu schreiben, löschen etc., um aus dem Editiermodus wieder herauszugelangen ESC, um die Datei zu sichern gibt man ":w" für "write" ein (wenn man nicht im "Insert"-Modus ist), um das Programm zu beenden ":q" für "quit", und um gleichzeitig zu sichern und zu beenden ":wq".

Dateiverwaltung

Bearbeiten

Eine Datei ist die kleinste Einheit in einem Computer, vergleichbar etwa mit einem Kapitel in einem Buch. Jede Datei hat einen eigenen Namen. Beispiel: blaaa.txt

Bei Unix wird die Groß- und Kleinschreibung beachtet. Die Datei Blaaa.txt ist also eine andere als blaaa.txt.

Es gibt verschiedene Arten von Dateien: normale Dateien, Programme und Verzeichnisse.

In den normalen Dateien wird Information gespeichert: meist Texte oder Bilder.

Die Programme sind Dateien, die den Computer dazu bringen, etwas zu tun. Dazu muss der Name des Programms und die Enter-Taste getippt werden. Um zu zeigen, dass der Computer aufnahmebereit ist und auf eine Eingabe wartet, blendet er einen sogenannten Prompt ein. Das ist oft ein $ oder ein %. Manchmal wird auch zusätzliche Information angegeben, so z. B. der Name des jeweiligen Rechners.

Befehle zur Dateiverwaltung

cat Dateien Anhängen/anzeigen
chfn Benutzerinfo für finger, E-Mail usw. ändern
cksum Prüfsumme berechnen
chmod Zugriffsrechte von Dateien/Verzeichnissen ändern
chsh Anmeldeshell ändern
cp Dateien kopieren
csplit Dateien an bestimmten Stellen aufteilen
dd Dateien im Rohformat kopieren
file Den Dateityp bestimmen
head Die ersten Zeilen einer Datei anzeigen
less Dateien bildschirmweise anzeigen
ln Aliasname für Dateinamen erzeugen
ls Dateien/Verzeichnis anzeigen
merge Änderungen in ver. Dateien zusammenführen
mkdir Verzeichnis erstellen
more ähnlich less
mv Dateien/Verzeichnisse verschieben/umbenennen
newgrp Die Aktuelle Gruppe ändern
pwd Arbeitsverzeichnis ausgeben
rcp Dateien auf ein entferntes System kopieren
rm Dateien löschen
rmdir Verzeichnisse löschen
split Dateien gleichmäßig aufteilen
tail Die letzten Zeilen einer Datei ausgeben
wc Zeilen/Wörter/Zeichen zählen

Dateiverwaltung mit Komfort

Für die Rentner unter uns, Sie kennen und vermissen ihn bestimmt, den Norton Commander. Für sie gibt es unter Linux den Midnight-Commander, kurz MC, ein Dateimanager für die Linux-Shell.

Das Programm zeigt den Inhalt zweier Verzeichnisse nebeneinander an. Darunter steht eine Eingabezeile zur Verfügung. Mit der Tab-Taste wechseln Sie von einem Verzeichnisfenster zum anderen. Mit [Einfügen] markieren Sie einzelne Dateien, um sie dann per Knopfdruck auf eine Funktionstaste zu kopieren, verschieben oder zu löschen. Mit an Bord ist auch ein Text-Editor, der mit Syntax-Highlighting beim Programmieren von Scripts hilft.

Der Midnight-Commander ist bei jeder größeren Linux-Distribution als installierbares Paket dabei. Die jeweils neueste Version gibt es im Netz unter http://www.ibiblio.org/mc/

Prozesse

Bearbeiten

Für den Umgang mit Prozessen stehen 2 Befehle auf der Kommandozeile zur Verfügung:

ps (process status) zeigt einen Schnappschuss der derzeitigen Prozesse an. Für root sind besonders die Optionen -AF nützlich. Sie zeigen alle Prozesse in einem ausführlichem Format.

user$ps
  PID TTY          TIME CMD
 16504 pts/3    00:00:00 bash
 16616 pts/3    00:00:00 ps

top erlaubt eine dynamische Ansicht der Prozesse. Diese können nach verschiedenen Kriterien sortiert werden. Auch eine Zusammenfassung der Auslastung des Systems kann angezeigt werden.

user$top
top - 11:30:55 up 18 days, 22:13,  5 users,  load average: 0.02, 0.05, 0.02
Tasks: 143 total,   1 running, 142 sleeping,   0 stopped,   0 zombie
Cpu(s):   0.0% user,   6.5% system,   0.0% nice,  93.5% idle
Mem:    255944k total,   245280k used,    10664k free,    42532k buffers
Swap:   530136k total,   239964k used,   290172k free,    56936k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  Command
16621 user      16   0   924  924  696 R  6.5  0.4   0:00.86 top
    1 root      15   0    84   72   48 S  0.0  0.0   0:05.35 init
    2 root      15   0     0    0    0 S  0.0  0.0   0:00.34 keventd
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd_CPU0
    4 root      15   0     0    0    0 S  0.0  0.0   0:12.43 kswapd
    5 root      15   0     0    0    0 S  0.0  0.0   0:00.06 bdflush
    6 root      15   0     0    0    0 S  0.0  0.0   0:00.05 kupdated
    7 root      15   0     0    0    0 S  0.0  0.0   0:01.54 kinoded
    9 root      25   0     0    0    0 S  0.0  0.0   0:00.00 mdrecoveryd
   12 root      15   0     0    0    0 S  0.0  0.0   0:01.49 kreiserfsd
  150 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 lvm-mpd
  205 root      15   0     0    0    0 S  0.0  0.0   0:00.58 kjournald
  789 root      15   0   256  232  176 S  0.0  0.1   0:03.84 syslogd
  792 root      16   0   948    4    4 S  0.0  0.0   0:00.41 klogd
  852 root      22   0     0    0    0 S  0.0  0.0   0:00.00 khubd
  955 root      15   0    88    4    4 S  0.0  0.0   0:00.01 resmgrd
  980 bin       15   0    76    4    4 S  0.0  0.0   0:00.05 portmap

Ganz oben stehen die von uptime bekannten Werte (Systemzeit, Uptime, angemeldete Benutzer und Auslastung). In der nächsten Zeile kommt die Anzahl der laufenden Prozesse und ihre Zustände. Die dritte Zeile zeigt den prozentualen Anteil an, womit sich der oder die Prozessor(en) in den letzten Sekunden beschäftigt hat oder haben.

   -user:
     Mit user sind Prozesse gemeint, die von den Benutzern des Systems gestartet worden sind.
   -system:
     Hierbei sind sämtliche Prozesse gemeint, die vom System gestartet worden sind.
   -nice:
     Damit sind all die Prozesse gemeint, die nicht mit einem  nice von 0 laufen.
   -idle:
     Mit idle wird die noch zur Verfügung stehende Prozessorlast bezeichnet.
   -Nun kommen noch die von free bekannten Speicherangaben.

Als letztes folgt die Liste mit den ressourcenträchtigsten Prozessen. Im Gegensatz zu ps werden bei top weitere Informationen zu den einzelnen Prozessen ausgegeben:

    -User
     gibt den Namen des Users an, unter welchem der Prozess läuft.
    -PR 
     gibt die Priorität des Prozesses an
    -NI
     gibt den Nice-Wert an. Ein negativer Wert bedeutet eine höhere Priorität, ein positiver Wert eine geringere Priorität.
    -VIRT
     gibt die gesamte Anzahl an Speicher an, den dieser Prozess benötigt, inklusive den Code, den Daten und den geteilten Bibliotheken.
    -RES
     gibt die Belegung des physikalischen Arbeitsspeichers an. Auslagerungen im Swap-Speicher werden hier nicht berücksichtigt.
    -SHR
     gibt die Anzahl des Speichers an Daten an, die auch von anderen Prozessen genutzt werden können.
    -S
     gibt den Status des Prozesses an.
    -%CPU
     gibt an wieviel Prozent von der gesamten Prozessorleistung der Prozess benötigt.
    -%MEM
     gibt dasselbe wie %CPU an, diesmal aber bezogen auf den physikalischen Arbeitsspeicher.

load average: 0.02, 0.05, 0.02
Hier wird die Auslastung deines Rechners ausgegeben. Der erste Wert ist für die letzte Minute, der zweite für die letzten 5 und der dritte für die letzten 15 Minuten. Ein Wert von 1.00 bedeutet, dass im Schnitt ein Prozess dauernd die CPU belastet hat. Es sollte also ein Wert von eher unter 1.00 da stehen, ansonsten bedeutet das, dass Deine Maschine für die Anforderungen etwas unterdimensioniert ist. Wenn das nur temporär auftritt, ist es kein Problem, aber wenn der Wert dauerhaft über 1 ist, sollte man den Rechner überprüfen.

Auch einige andere bekannte Befehle können genutzt werden.

z. B. wenn TOP gestartet ist die Taste: 
    -r für renice
    -m ein Ausblenden der dritten Zeile
    -n Maximum tasks = 0, change to (0 is unlimited)
    -k PID to kill
    -q quit
    -h für help um alle anderen Befehle zu bekommen

Für KDE kann das graphische Gegenstück KTop verwendet werden, welches standardmäßig mittels STRG+ESC aufgerufen werden kann.

Installation von Programmen

Bearbeiten

Was wäre der wackere Anwender nur ohne zusätzliche Programme? Da die meisten Programme unter Linux unter der GPL lizenziert sind, sind sie frei verfügbar. Hier kann man aus einer großen Auswahl an Programmen und Anwendungen auswählen.

Programme von den Quelldateien kompilieren und installieren

Bearbeiten

Dies ist die komplizierteste und zeitaufwändigste Methode Programme zu installieren. In geübten Händen können in den zu installierenden Programmen sonst unübliche Funktionen aktiviert werden oder ungewollte Funktionen deaktiviert werden. Zusätzlich kann das Programm auf die eigene Hardware zugeschnitten werden, was manchmal leichte Geschwindigkeitsboni bringt. Nach dem Download der Quelldateien (meist gepackt in einem .tar.gz Archiv) müssen diese in ein separates Verzeichnis entpackt werden. Mit

 cd /das/verzeichnis/wo/der/quellcode/ist

wechseln wir in das entsprechende Verzeichnis und gucken nach, ob eine "README" oder "INSTALL"-Datei vorhanden ist. Diese enthalten wichtige Informationen für die Konfiguration und die Kompilation.

Meist läuft eine Installation nach folgendem Muster ab:

 su
 ./configure
 ./make
 ./make install
 ./make clear

Per su werden Administrationsrechte erlangt, configure konfiguriert das Kompilierungsskript und testet das System, make kompiliert die Quelldatei, make install installiert das Programm und make clear entfernt nach der Installation unbenötigte Dateien.


Programme unter Debian installieren

Bearbeiten

Sollten Sie Debian als Ihre Distribution gewählt haben, haben Sie es besonders leicht (sofern Sie nicht von einer Quelldatei installieren wollen).

apt-get/aptitude

Bearbeiten

Das Programm apt-get macht es einem besonders leicht: Nehmen wir an, Sie wollten die Desktopumgebung XFCE installieren, so tippen Sie, natürlich mit Administrationsrechten

 apt-get install xfce

ein, warten, bis ggf. die nötigen Dateien herunter geladen, installiert und konfiguriert wurden.

 apt-get remove xfce

entfernt das Paket XFCE wieder.

Als neuere Alternative zu "apt-get" kann ab Debian 3.0 (Sarge) das Programm aptitude benutzt werden, das u. a. Paketabhängigkeiten sauberer auflöst. Die Benutzung ist mit der von apt-get identisch.