Linux-Praxisbuch/ Grundlagen
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.