next up previous contents
Nächste Seite: Anhänge Aufwärts: Vortragsreihe der LUG Dresden Vorherige Seite: Inhalt   Inhalt

Unterabschnitte

Shell

Die Bash Syntax

Auf einem heutigen Linux kann man wochenlang arbeiten ohne auch nur ein einziges Mal die Shell zu Gesicht zu bekommen. Ebenso, wie man jahrelang Socken tragen kann, ohne zu wissen, wie man sie stopft. Nur irgendwann wird man sehr viele Löcher haben...

...und dann kommt die Shell ins Spiel.

Exemplarisch wird hier die heute wohl am weitesten verbreitete Shell, die Bash vorgestellt. Jedoch kann hier keine vollständige Abhandlung der Fähigkeiten dieser Shell erfolgen, dazu ist die einfach zu flexibel und komplex.

Shell/Bash an sich

Die Funktionsweise der Bash ist im Ansatz sehr einfach: direkt nach dem sog. Prompt kann man ein Kommando und danach keine bis sehr viele Parameter angeben. Ein Kommando ist meistens ein ausführbares Programm, das irgendwo im System abgelegt ist. Meistens, weil es auch noch Aliase, Built-In-Kommandos und Funktionen gibt, zu denen wir aber spter kommen.

Die Bash hat zwei unterschiedliche Eingabe-Modi: vi und emacs. (Standard ist der emacs-Modus.) Die vi-Fans mögen mir bitte vergeben, dass ich mich hier auf die Tasten-Kombinationen der emacs-Variante beschränke:

Taste(n) Funktion
Ctrl-B, $\leftarrow$ Cursor nach links
Ctrl-F, $\rightarrow$ Cursor nach rechts
Ctrl-A Cursor zum Anfang der Zeile
Ctrl-E Cursor zum Ende der Zeile
Esc-F Cursor zum nächsten Wort
Esc-B Cursor zum verherigen Wort
Backspace Zeichen links vom Cursor löschen
Ctrl-D Zeichen unter dem Cursor löschen
  (auf einigen Terminals geht auch Del/Entf)
Ctrl-_ letzte Änderung rückgängig machen
Ctrl-K vom Cursor bis zum Zeilenende löschen
Ctrl-U vom Cursor bis zum Zeilenanfang löschen
Esc-D vom Cursor bis zum Wortende löschen
Ctrl-P, $\uparrow$ vorherige Zeile aus dem Kommandopuffer anzeigen
Ctrl-N, $\downarrow$ nächste Zeile aus dem Kommandopuffer anzeigen
Tabulator einen angefangenen Befehl oder Dateinamen vervollständigen
  2-mal: alle passenden Befehle/Dateinamen anzeigen

``Quoting''

Wie die meisten Unix-Shells ist die Bash in der Lage Parameter recht flexibel zu handhaben. Dazu sollte man verstehen, wie Programmaufrufe auf Unix/Linux funktionieren. Aus Sicht eines Unix/Linux-Kernels besteht ein Programmaufruf aus drei Teilen: dem Pfad des Programmes, den Parametern und den Umgebungsvariablen. Parameter sind einzelne Zeichenketten (sog. Null-terminierte Strings), die beliebige Werte annehmen können, die dann jeweils von dem Programm selbst interpretiert werden müssen. In der Regel beinhaltet der erste Parameter den Namen des Programmes (in Ausnahmefällen kann auch ein anderer Wert darin stehen, z.B. ist Login-Shells ein ``-'' vorangestellt). Daraus ergibt sich auch, dass jedes Programm selbst entscheidet welche Werte für Umgebungsvariablen an von ihm aufgerufene Programme weitergegeben werden (i.d.R. entscheidet sich ein Programm die eigenen Werte unverändert weiterzugeben).

Damit eine Befehlszeile in Parameter aufgeteilt werden kann benutzt Bash einfach Whitespace (also Leerzeichen und Tabulatoren) als Trennzeichen.

Damit ein Whitespace nicht als Trennzeichen interpretiert wird hat man mehrere Möglichkeiten des sog. ``quoting''.

Mit Backslash ($\backslash$) kann die Bedeutung eines anderen Sonderzeichens aufgehoben werden. Damit wird ein Leerzeichen nicht mehr als Trennzeichen interpretiert und ein ``*'' unverändert an das Programm weitergegeben.

In doppelte Anführungszeichen (") eingeschlossene Zeichenketten werden zu einem einzigen Parameter zusammengefasst, auch wenn Leerzeichen dazwischen vorkommen. Sonderzeichen werden aber weiterhin interpretiert.

In einfache Anführungszeichen (')eingeschlossener Text wird ebenfalls zusammengefasst, zusätzlich unterbleibt aber auch die Interpretation von Sonderzeichen (ausser ' selbst).

Schräggestellte Anführungszeichen (`) ersetzen das Kommando dazwischen durch die Ausgabe des Kommandos:
bash> echo Die aktuelle Zeit in Greenwich ist: `date -u`
Die aktuelle Zeit in Greenwich ist: Sun Jan 7 11:15:10 UTC 2001
bash>

Wenn ein Kommando sich auf mehrere Dateien beziehen soll kann man sogenannte Wildcards einsetzen: ``?'' ersetzt ein einzelnes Zeichen, ``*'' ersetzt beliebig viele (oder null) Zeichen.

Homeverzeichnisse können mit Tilde (~) abgekürzt werden. Eine einfache Tilde (~) bezeichnet dabei das eigene Homeverzeichnis, eine Tilde gefolgt von einem Nutzernamen (~dilbert) bezeichnet das Homeverzeichnis dieses Nutzers:
bash> echo ~
/home/dogbert
bash> echo ~dilbert
/home/dilbert

Dateiumleitung

Jedes Programm (bis auf wenige Ausnahmen) hat drei offene Dateideskriptoren wenn es gestartet wird: ``standard in'' (Deskriptor 0), ``standard out'' (1) und ``standard error'' (2). Normalerweise verweisen sie alle auf das Terminal auf dem das Programm läuft, i.d.R. ist ``standard in'' also mit einer Tastatur und ``standard out'' und ``standard error'' mit dem Bildschirm verbunden (meist liegen aber noch einige Schichten von Treibern und Programmen dazwischen). Man kann jedoch jeden dieser Kanäle einzeln auf ein anderes Programm oder eine Datei umleiten.

cat <datei
 
leitet den Inhalt von datei in ``standard in'' von cat um.

ls >datei
 
leitet die Ausgaben (``standard out'') von ls in datei um, wenn datei schon existiert wird es überschrieben.

ls »datei
 
hängt die Ausgaben von ls an datei an.

ls 2>datei
 
leitet die Fehlermeldungen (``standard error'') von ls in datei um.

ls 2»datei
 
hängt die Fehlermeldungen von ls an datei an.

ls |less
 
leitet die Ausgaben von ls in ``standard in'' von less um.

ls 2>&1 |less
 
leitet die Fehlermeldungen von ls auf den selben Kanal, wie die normalen Ausgaben um und leitet die Ausgaben an less weiter. less bekommt also sowohl normale Ausgaben, als auch Fehlermeldungen von ls.

scaryprogram 3<datei1 4>datei2
 
erzeugt zwei zusätzliche Dateideskriptoren (3 und 4) und öffnet auf ihnen datei1 lesend und datei2 schreibend. Ob das Programm diese Deskriptoren beachtet kommt ganz auf den Programmierer an, normalerweise tut es das nicht.

Klammersalat

Wie fängt man einen virtuellen Elefanten? Ein guter Hacker baut einen Wald aus Klammern und hofft, dass sich der Elefant darin verläuft und steckenbleibt. Damit man sich aber nicht selbst darin verfängt gibt es hier ein paar Tipps, was die Klammern bedeuten.

Man unterscheidet im allgemeinen zwischen drei unterschiedlichen Klammertypen: runden ``( )'', eckigen ``[ ]'' und geschweiften ``{ }''. Diese Klammertypen können nun dazu benutzt werden verschiedene Aktionen auszuführen.

Einfache Klammern grenzen die Wirkung einer Kette von Befehlen lokal ein, d.h. wenn die Klammern verlassen werden haben die darin ausgeführten Aktionen (z.B. das Setzen von Variablen oder eines anderen Pfades) ihre Wirkung verloren:
bash> echo `pwd` $x;(x=y;cd ..;echo `pwd` $x);echo `pwd` $x
/home/dogbert
/home y
/home/dogbert

Diese Konstruktion kann auch verwendet werden, um die Ausgabe mehrerer Kommandos in eine gemeinsame Datei umzulenken:
bash> (echo x ; echo y ) >datei
bash> cat datei
x
y

Ein ähnlicher Effekt lässt sich mit geschweiften Klammern erzeugen:
bash> echo `pwd` $x; { x=y; cd ..; echo `pwd` $x ; } ;echo `pwd` $x
/home/dogbert
/home y
/home y

Der Unterschied ist, dass hier die Kommandos nur gruppiert werden, die Kommandos innerhalb der Klammern haben auch über die Klammern hinaus eine Wirkung.

Aber geschweifte Klammern sind noch für andere Effekte gut. So kann man damit sehr einfach Werte erzeugen, die einen gemeinsamen und einen unterschiedlichen Teil haben:
bash> echo a{1,2,3}
a1 a2 a3

Die Konstruktion $( ) kann dazu verwendet werden die Ausgabe eines Kommandos einem anderen Kommando als Parameter zu übergeben. Dies ist eine Alternative zu den schräggestellten Anführungszeichen (`).

Interessanter ist dann schon $[ ]. Damit kann man mathematische Ausdrücke auswerten. Erlaubt ist (nahezu) alles, was auch in C geht:
bash> echo $[1+2]
3
bash> echo $[true && false]
0
bash> x=1; y=4; echo $[x + $y]
5
bash> echo $[$x + $y || 1]
1

Noch mehr Klammern für noch mehr ungewöhnliche Anwendungen finden sich in der man-page zu bash. Hier soll dies aber erst einmal genug sein.

Variablen

Unfaiererweise habe ich ein sehr wichtiges Element jeder Shell bereits eingesetzt, aber noch nicht vorgestellt: Variablen. Das wird jetzt nachgeholt.

Variablen sind nichts weiter, als etwas Speicherplatz, der beliebigen Text enthalten kann und einen Namen hat. Über den Namen einer Varablen kann man ihren Inhalt erhalten. Als Variablennamen müssen mit einem Buchstaben (nicht Ä, Ö oder Ü) beginnen und dürfen Buchstaben, Zahlen und Underscore (_) enthalten.

Variablen zuzuweisen ist sehr einfach:
bash> var=wert
Damit enthält die Variable ``var'' die Zeichenkette ``wert''. Wenn der Wert der Variablen Leerzeichen enthalten soll werden einfach Anführungszeichen um den Wert herum gesetzt. Es sind auch alle Konstruktionen mit Klammern erlaubt.

Bisher haben wir eine Variable ``var'', die innerhalb dieser Shell gilt. Was jedoch, wenn wir sie an eine andere Shell oder ein anderes Programm weitergeben wollen? Man muss der Shell lediglich sagen, dass sie die Variable ``exportieren'', also weitergeben soll:
bash> export var

Um eine Variable wieder zu löschen ruft man das Kommando ``unset'' auf:
bash> unset var
bash> echo $var

bash>

Die Länge einer Variablen kann man so herausfinden:
bash> x=abcd
bash> echo ${#x}
4

Prozesskontrolle

Ein laufendes Programm kann mit der Tastenkombination Ctrl-Z unterbrochen werden. Um es fortzusetzen benutzt man das Kommando ``fg''. Um es in den Hintergrund zu legen ``bg'' -- Kommandos, die im Hintergrund laufen blockieren nicht die Shell, man kann also weitere Kommandos eingeben. Wenn ein solches Kommando Ein- oder Ausgaben will wird es automatisch wieder angehalten. Man kann ein Kommando von Anfang an im Hintergrund laufen lassen, indem man ein Ampersand (&) anhängt.

Wenn mehrere Programme im Hintergrund einer Shell laufen kann man sie sich mit dem Kommando ``jobs'' anzeigen lassen. Mit ``wait'' kann man auf ein Hintergrund-kommando warten (wait liefert zusätzlich den Beendigungs-status des Kommandos).

All diese Befehle (fg, bg, jobs und wait) können optional die Nummer eines spezifischen Jobs/Hintergrundkommandos übergeben bekommen, auf das sie angewendet werden sollen.

Start-Skripte

Die Bash kennt drei Modi in denen sie laufen kann: Login, interaktiv und nicht-interaktiv. Eine interaktive Bash erwartet vom Nutzer Eingaben, erlaubt Korrekturen, gibt den Prompt aus und benutzt den Befehlspuffer, während eine nicht-interaktive Bash arbeitet einfach alle Kommandos ab, die an ``standard in'' anliegen. Eine Login-Bash ist ebenfalls eine interaktive Bash, liest aber eine andere Konfiguration ein.

Die Konfigurations-Skripte der Bash können jedes normale Kommando der Bash enthalten.

Die Login-Bash liest die Datei /etc/profile ein, diese enthlt die systemweite Konfiguration für alle Bourne-Shell-verwandten Shells, also auch die Korn-Shell und die Bash. Danach wird nach den Dateien ~/.bash_profile, ~/.bashlogin und ~/.profile gesucht und die erste gefundene ausgeführt. Wenn eine Login-Bash beendet wird, wird die Datei ~/.bash_logout (wenn vorhanden) ausgeführt.

Eine interaktive Bash führt das Skript ~/.bashrc aus. Normalerweise enthält .profile ein Kommando wie . ~/.bashrc, um diese Befehle in einer Login-Bash ebenfalls auszuführen. Eine .bashrc sollte keine Ausgaben machen, da das einige Skripte durcheinander bringen kann, die über telnet, rsh oder ssh auf entfernte Rechner zugreifen.

Existiert die Variable $ENV, dann wird das darin aufgeführte Skript ausgeführt, wenn eine nicht-interaktive Shell aufgerufen wird (also ein anderes Skript ausgeführt wird).

Eigene Skripte

Ein Skript ist nichts weiter als eine Sammlung von Kommandos in einer Datei. Also sollte es recht einfach sein es auszuführen. Es gibt dazu zwei Möglichkeiten. Zunächst kann man Bash beim Aufruf einfach einen Dateinamen übergeben, dessen Inhalt ausgeführt werden soll:
bash> bash somescript.sh
Die Endung .sh ist nur eine Konvention, der Name der Datei kann beliebig gewählt werden. Die zweite Möglichkeit ist es in der Datei zu vermerken, welche Shell dafür zuständig ist, der Unix/Linux-Kern kann diese dann automatisch laden, wenn das Skript ausgeführt wird:
bash> cat >somescript.sh
#!/bin/bash
echo ich bin ein Skript
Ctrl-D

bash> chmod +x somescript.sh
bash> ./somescript.sh
ich bin ein Skript

Die Sequenz #! wird dabei von Kernel so interpretiert, dass das in dieser Zeile angegebene Programm gestartet werden soll, dieses Programm selbst wird diese Sequenz jedoch ignorieren (zumindest, wenn es eine Shell oder einer der üblichen Skript-Interpreter ist (z.B. tclsh, perl, php)). Was einfach nur daran liegt, dass normalerweise das Symbol # benutzt wird, um Kommentare einzuleiten.

Da ein Skript nichts weiter als eine Sammlung von normalen Kommandos ist, gibt es nichts, was nur in Skripten und nicht in einer interaktiven Bash erlaubt ist. Aber es gibt einige Konstrukte, die meistens nur in Skripten sinnvoll sind.

Man kann einem Shell-Skript (also auch einem Bash-Skript) ebenso wie anderen Programmen Parameter übergeben. Diese werden in den Variablen $1 bis $9 gespeichert. Wenn man die Parameter danach ebenfalls nutzen will kann man die Parameterliste mit ``shift'' verschieben. Nach einem shift 2 enthält $1 also den Wert, der vorher in $3 stand usw.

Alle Parameter zusammen sind in $* gespeichert, die Anzahl der Parameter in $#.

Funktionen sind in einem Skript so etwas wie Subskripte, die von mehreren Stellen aus aufgerufen werden können:

func() {
echo das ist eine Funktion
echo ---------------------
}
func
Dies ist der einfachste Fall einer Funktion: eine Kette von Kommandos, die immer dann aufgerufen wird, wenn der Name der Funktion als Kommando im Skript auftaucht.

func() {
echo das ist noch eine: \$1 \$2
}
func angezeigter Parameter
func nr1 nr2 "nr3 wird nicht mehr angezeigt"
Hier werden der Funktion Parameter übergeben, ob sie diese benutzt bleibt ihr selbst überlassen.

Man kann die Ausführung eines Kommandos vom Ergebnis anderer Kommandos abhängig machen. Jedes Programm liefert einen numerischen Code zurück, wenn es sich beendet. Der Wert 0 bedeutet dabei Erfolg, jeder andere Wert einen Fehler. Dafür gibt es unterschiedliche Möglichkeiten:

kommando1 && echo 'das wird nur angezeigt, wenn kommando1 erfolgreich war'
kommando2 || echo 'und das, wenn kommando2 fehlschlug'
if kommando1 ; then 
        echo 'erfolgreich'
else
        echo 'daneben gegangen'
fi

Meistens wird man bei if das Kommando ``test'' einsetzen, da es eine Reihe von Möglichkeiten bietet nach Dateien zu suchen oder Variablen auszuwerten. Da ``test'' so häufig eingesetzt wird gibt es eine Kurzform:

if test 1 = 1 ; then
        echo 'das ist identisch zu...'
fi
if [1 = 1] ; then
	echo '...dieser Version'
fi

Die Konstruktion wird kompliziert, wenn man mehr als nur eine Möglichkeit prüfen will. Dazu wird die Anweisung case verwendet:

case $var in
   wert1)
         echo Reaktion 1
	 ;;
  wert2)
         echo Reaktion 2
	 ;;
  wert3|wert4)
  	echo eine Reaktion auf wert3 und wert4
	;;
  *)
        echo Reaktion auf alles andere: $var
	;;
esac
Der Ausdruck ``;;'' beendet jeweils eine Reaktion, ``esac'' beendet das ganze Statement.

Viele Operationen müssen mehrfach ausgeführt werden. Die Bash bietet dafür mehrere Schleifentypen:

for file in * ; do
        echo Datei: $file
done
var=1
while test $var -lt 100 ; do
        echo $var
	var=$[$var +1]
done
echo $var
Die erste Schleife geht alle Dateien (*) im aktuellen Verzeichnis durch und gibt sie aus. Die zweite Schleife zählt die Variable var von 1 bis 100 und gibt sie aus.

Es ist recht aufwändig grosse Texte mit dem Kommando ``echo'' zeilenweise auszugeben und andererseits ist es meist nicht wünschenswert eine zusätzliche Datei anzulegen, die mit ``cat'' ausgegeben werden kann. Man kann den Text, der an ``standard in'' eines Programmes anliegen soll auch direkt im Skript ablegen:

cat <<EOF
Dieser ganze Text hier wird an cat weitergereicht und 
nicht von der Shell interpretiert. Wichtig ist dabei "<<" 
und ein beliebiges Wort, das als Ende-Marke benutzt wird 
(EOF ist üblich aber nicht zwingend). Taucht dieses Wort 
allein auf einer  Zeile auf, ist die Umleitung beendet: 
EOF
echo "dies bekommt wieder die Shell zu sehen"

Built-In und Co.

Die Bash verwendet einige Variablen intern um ihre eigenen Reaktionen zu konfigurieren:

HOME

enthlt das Home-Verzeichnis des Nutzers.

PATH

enthält alle Verzeichnisse, in denen ausführbare Programme gesucht werden. Einzelne Verzeichnisse werden durch ``:'' getrennt.

IGNOREEOF

wenn diese Variable existiert kann die Shell nicht mit Ctrl-D beendet werden.

PWD

enthält den aktuellen Pfad.

OLDPWD

enthält den vorhergehenden Pfad.

RANDOM

gibt einen Zufallswert zurück.

SECONDS

gibt die Anzahl der Sekunden zurück seit der diese Shell läuft.

TMOUT

wenn diese Variable auf einen Wert >0 gesetzt wird beendet sich die Shell nach entsprechend vielen Sekunden ohne Eingabe.

PPID

enthält die Prozess-ID des Vaterprozesses dieser Shell.

UID, EUID

User-ID und Effektive User-ID dieser Shell. Die UID gibt dabei an, wer die Shell aufgerufen hat, die EUID mit wessen Rechten sie läuft.

ENV

enthlt diese Variable den Namen eines Shell-Scriptes, dann wird es zur Initialisierung aufgerufen, wenn ein anderes Shell-Script ausgeführt wird.

HISTSIZE

gibt an wieviele Befehls-Zeilen gespeichert werden.

HISTFILE

gibt an in welcher Datei Befehls-Zeilen gespeichert werden (i.d.R. ~/.bash_history).

HISTFILESIZE

gibt an wieviele Zeilen in dieser Datei gespeichert werden.

PROMPT_COMMAND

kann ein Kommando enthalten, das jeweils ausgeführt wird bevor eine Eingabeaufforderung (Prompt) ausgegeben wird.

FIGNORE

die hier angegebenen Dateiendungen werden bei der automatischen Erweiterung von Dateinamen ignoriert. (Mehrere Endungen können durch ``:'' getrennt werden.)

PS1 und PS2

legen fest, wie der Prompt der bash aussieht. PS1 enthält dabei den normalen Prompt und PS2 den Prompt für den Fall, dass ein Kommando über mehrere Zeilen geht. Mit Backslash ($\backslash$) können zusätzliche Sequenzen eingefügt werden, die durch bestimmte Werte ersetzt werden:

Sequenz Wert
$\backslash$t aktuelle Uhrzeit
$\backslash$d aktuelles Datum
$\backslash$n Zeilenumbruch
$\backslash$s Name der laufenden Shell
$\backslash$w aktuelles Verzeichnis
$\backslash$W aktuelles Verzeichnis ohne Pfad
$\backslash$u Nutzername
$\backslash$h Rechnername
$\backslash$! Nummer des aktuellen Kommandos im Befehlspuffer
$\backslash$$ $ für normale Benutzer, # für root
$\backslash$$\backslash$ ein normaler Backslash ($\backslash$)

Damit nicht genug: die Bash beherrscht einige eingebaute Kommandos, die teilweise schnellere Varianten ``echter'' Unix-Kommandos sind und teilweise das Verhalten der Bash selbst steuern.

alias

definiert ein neues Kommando, dass aus anderen Kommandos und Optionen für dieses Bestehen kann. Normalerweise werden damit Abkürzungen für häufig gebrauchte Kommandos definiert. Beispiel: alias ll='ls -l' definiert das Kommando ll als Abkürzung für ls -l.

unalias

löscht ein Alias wieder.

pushd

wechselt das Verzeichnis und speichert das alte Verzeichnis in einem internen Stack.

popd

wechselt zu dem zuvor mit pushd gespeicherten Verzeichnis zurück.

dirs

zeigt alle mit pushd gespeicherten Verzeichnisse an.

pwd

gibt das aktuelle Verzeichnis zurück.

let

ist eine weitere Möglichkeit arithmetische Ausdrücke auszuwerten:
bash> let summe=13+5
bash> echo $summe
18

! und ^

können vorangegangene Befehle nocheinmal ausführen:
bash> echo xyz
xyz
bash> !!
echo xyz
xyz
bash> ^xyz^abc
echo abc
abc
bash> history 3
423 echo xyz
424 echo abc
425 history 3
bash> !424
echo abc
abc

history

zeigt alle gespeicherten Befehle an, die dann mit ``!'' nocheinmal ausgeführt werden können (siehe vorhergehenden Abschnitt).

fc

ist eine weitere Möglichkeit neben history und ! vorangegangene Befehle anzuzeigen und auszuführen. Genaueres dazu findet sich in der Manual-Page zu fc bzw. via help fc.

source

führt ein Shell-Script in dieser Shell aus anstatt eine neue Shell dafür zu öffnen. Eine andere Möglichkeit ist das Kommando ``.''.
bash> cat >script.sh
dummy=xy
Ctrl-D

bash> . script.sh
bash> echo $dummy
xy

logout und exit

beenden die Shell.

builtin

ruft ein eingebautes Kommando anstatt eines gleichnamigen Unix-Kommandos oder Funktion auf:
bash> pwd() { echo daneben ; }
bash> pwd
daneben bash> builtin pwd
/home/dogbert

command

ruft einen eingebauten Befehl oder ein Unix-Kommando anstatt einer Funktion auf.

enable

aktiviert oder deaktiviert einen eingebauten Befehl (enable aktiviert, enable -n deaktiviert den Befehl).

declare und typeset

weisen Variablen bestimmte Eigenschaften zu. Zum Beispiel verhindert declare -r somevar, dass somevar überschrieben werden kann (declare +r somevar macht diese Aktion rückgängig).

help

gibt Hilfestellung zu eingebauten Kommandos.

local

definiert eine Variable als lokal bezüglich einer Funktion, d.h. ausserhalb der Funktion ist sie nicht sichtbar.
bash> func() { local some; some=any; }
bash> func
bash> echo $some

bash>

ulimit

setzt Grenzen für bestimmte Systemparameter (Größe von core-files, Stack-größe u.ä.). Der Parameter -a zeigt die aktuellen Grenzen an.

Querfeldein durch /usr/bin

Ein funktionierendes Linux beherbergt einige hundert Befehle (Ausnahme sind z.B. Firewalls, die nicht einmal ein dutzend Programme beinhalten sollten). Nicht unbedingt die wichtigsten und besten sollen hier vorgestellt werden, sondern die vielen kleinen Helferlein, auf die man nicht ganz so schnell kommt.

/bin

Im Verzeichnis /bin sind alle die Befehle, die für den Nutzer nützlich, aber für den sauberen Start des Systems auch unbedingt nötig sind. Hier also gleich mal der Aufruf an alle Hobby-Programmierer: nur ganz wenige Programme werden für den Systemstart gebraucht und die sind schon da drin, alles andere gehört in /usr/bin oder /usr/X11/bin oder gar nicht in ein globales Verzeichnis.

Die Kommandos von Unix-artigen Systemen sind sehr mächtig, das bedeutet sie haben sehr viele Optionen, um alle möglichen Fälle abzudecken. Da Linux traditionell die GNU-Varianten der Befehle einsetzt ist die Menge der Optionen gleich nocheinmal größer. Im Allgemeinen bezeichnen Hacker es als sehr bedenklich wenn ein Programm noch mehr Optionen hat als ls... Ich beschränke mich daher auf die allerwichtigsten Optionen, wer seine Kommandos weiter ``tunen'' möchte möge bitte in die man-Pages schauen.

bash
die Standard Shell von Linux, sie hat ein eigenes Kapitel, also verzichte ich hier auf weitere Erläuterungen.

cat
ist die Abkürzung von ``concatenate''. Es interpretiert alle Parameter als Dateinamen und gibt den Inhalt dieser Dateien einfach hintereinander aus (egal ob Text oder Binärdaten). Wenn kein Parameter angegeben ist erwartet es Eingaben von standard in, die dann einfach auf standard out wiederholt werden.

chgrp
ändert die Gruppenzugehörigkeit einer Datei. Man kann dies mit eigenen Dateien innerhalb all der Gruppen tun, in denen man selbst ist; es sei denn man ist root, dann darf man tun, was man will. Der Parameter -R lässt das Kommando rekursiv durch die (Unter-)Verzeichnisse gehen.
chgrp [-R] neue-gruppe datei[en]

chmod
ändert die Zugriffsrechte einer Datei. Man kann die Zugriffsrechte sowohl numerisch, als auch symbolisch angeben:
chmod [-R] rechte datei[en]
-R löst wieder Rekursion aus. Die Rechte können als Oktalzahl angegeben werden, die Stelle am weitesten rechts gibt die Rechte aller Nutzer, die Stelle daneben die der Gruppe und die Dritte die des Besitzers an. Dabei ist 4 das Leserecht, 2 das Schreibrecht und 1 das Ausführrecht, Kombinationen kann man durch Addition erzeugen. Um zum Beispiel dem Besitzer alle Rechte, der Gruppe Lese- und Ausführrecht und allen anderen kein Recht zu geben benutzt man diese Kommandozeile:
chmod 750 dateiname
Wenn eine 4. Stelle angegeben wird kann man einige zusätzliche Bits setzen: 4 ist das SUID Bit (wenn das Programm ausgeführt wird wird es immer mit den Rechten des Besitzers ausgeführt), das SGID Bit (...mit den Rechten der Gruppe) und das Sticky Bit (bei normalen Dateien nicht von Bedeutung). Man kann diese Rechte auch symbolisch ausdrücken, dazu werden diese Abkürzungen verwendet: a - alle, u - user (Besitzer), g - Gruppe, o - others (alle anderen), r - read (Leserecht), w - write (Schreibrecht), x - eXecute (Ausführrecht), s - S*ID Bit und t - sTicky Bit. Mit einem - wird das Recht entfern, mit einem + gesetzt und mit einem = werden exakt diese Rechte gesetzt und alle anderen entfernt. So zum Beispiel gibt man dem Besitzer Ausführrecht, setzt das SUID-Bit und nimmt ``others'', also allern ausserhalb der Gruppe, alle Rechte:
chmod u+xs,o-rwx dateiname
Bei Verzeichnissen bekommen diese Rechte andere Bedeutungen: Leserecht heisst hier, man darf den Inhalt des Verzeichnisses auflisten, Schreibrecht: man darf Dateien anlegen, umbenennen oder löschen (Vorsicht: das ist von den Rechten der Datei unabhängig, man darf dann auch Dateien löschen, die einem nicht einmal gehören!). Ausführrecht bedeutet, man darf in das Verzeichnis hineinwechseln und Dateien daraus benutzen. SUID hat keine Wirkung. SGID setzt bei jeder neu angelegten Datei die selbe Gruppe (egal, ob man ihr angehört oder nicht). Das sticky Bit verhindert, dass man Dateien löschen darf, die einem nicht gehören (es ist normalerweise in den Spool-Verzeichnissen der Drucker und Mailer und in /tmp gesetzt).

chown
darf nur von root ausgeführt werden. Es ändert den Besitzer einer Datei (funktioniert sonst wie chgrp).

cp
kopiert eine oder mehrere Dateien. In der einfachsten Form sind zwei Dateinamen angegeben, dann wird die erste Datei auf die zweite kopiert. Sind mehr Dateinamen angegeben, dann muss der letzte ein Verzeichnisname sein, in dieses Verzeichnis werden dann die Dateien kopiert. Mit -a kann man cp anweisen so akkurat zu arbeiten, wie möglich, also alle Rechte und Beziehungen zu übernehmen. Mit -r kann man cp rekursiv arbeiten lassen, also ganze Verzeichnisse samt Inhalt kopieren. -f zwingt cp alle durchführbaren Aktionen durchzuführen und Fehler zu ignorieren (nützlich für Skripte).

cpio
ist ein Archivierungsprogramm. Ausserhalb einiger Spezialanwendungen wird es allerdings kaum noch eingesetzt (RPM ist hier die grosse Ausnahme, rpm-Dateien enthalten cpio-Archive). Die Anzahl der Optionen ist ziemlich groß. Grundsätzlich funktioniert es so:
ls dateien.* | cpio -o >archiv.cpio
erzeugt ein Archiv. (ls, weil ein Dateiname pro Zeile stehen soll)
cpio -i <archiv.cpio
entpackt das Archiv wieder.

csh
ist die C-Shell. Ihre Syntax ist der Sprache C ähnlich.

date
zeigt das aktuelle Datum und die aktuelle Zeit an. Man kann es so aufrufen, dass es eine andere Zeit neu formatiert ausgibt oder die Zeit einer anderen Zeitzone ausgibt.
sh> date
Sun Jan 7 21:56:58 CET 2001
sh> date -u ''+%Y-%m-%d''
2001-01-07

dd
oder auch disk-to-disk-copy kann unter anderem benutzt werden, um Datenträger zu kopieren. Im Grunde kopiert es ebenso wie ein einfaches cat den Inhalt von standard in nach standard out, jedoch kann man es so aufrufen, dass es dazu eine bestimmte Blockgröße, Modus und eine bestimmte Anzahl von Blöcken abarbeitet. Eine Diskette kann man z.B. so kopieren (zwischen den beiden Kommandos wird die Diskette gewechselt):
sh> dd if=/dev/fd0 of=backup bs=512
2880 blocks in
2880 blocks out
sh> dd if=backup of=/dev/fd0 bs=512
2880 blocks in
2880 blocks out

df
alias ``(space on) disk free'' - listet den freien Speicher der gemounteten Dateisysteme auf. (Nützlich ist -h, damit wird der Output besser lesbar.)

dmesg
listet die letzten Kernelmeldungen auf.

dnsdomainname
gibt den die DNS-Domäne aus, in der sich dieser Host befindet. Heißt der Host zum Beispiel rechner.irgendwo.net, dann gibt dnsdomainname irgendwo.net zurück.

echo
wiederholt (daher der Name) seine Parameter auf standard out. Interessant sind die beiden Flags -n, verhindert den Zeilenumbruch, und -e, das Backslash-Sequenzen interpretiert ($\backslash$a gibt zum Beispiel einen Piepton von sich).

ed
alter Editor, der Kommandos der Form ,s/alt/neu/g. Ich empfehle ihn all denen, denen vi noch nicht masochistisch genug ist. ;-)

egrep
grep -E

false
ein Programm, das immer fehlschlägt (Code 1). Besonders gerne als Login-Shell für gesperrte Nutzer eingesetzt.

fgrep
grep -F

fuser
listet all die Prozesse auf, die die angegebene Datei benutzen. Mit -k kann man diese Prozesse auch gleich ``meucheln'' und damit zum Beispiel dafür sorgen, dass eine Disk wieder freigegeben wird:
fuser -k /cdrom
würde zum Beispiel alle Prozesse beseitigen, die gerade auf dem CD-Rom-Laufwerk arbeiten (vorausgesetzt die CD ist auf /cdrom gemountet).

grep
durchsucht eine oder mehrere Dateien nach einem angegebenen Muster:
grep muster datei
 
durchsucht datei nach der Zeichenkette ``muster''
grep -i muster datei
 
sucht auch nach ``Muster'', ``MUSTER'' usw.
grep -n muster datei
 
gibt die Zeilennummern mit aus
grep -E 'mu*ster' datei
 
interpretiert das Muster als ``regular expression'', in diesem Fall passen auch ``mster'', ``muuster'' und ``muuuuuuster'' usw.
grep -F `echo -e 'muster$\backslash$npattern'` datei
 
such sowohl nach muster, als auch nach pattern (das eingeschobene echo sorgt nur für einen Zeilenumbruch)

gunzip
entpackt eine mit gzip gepackte Datei.

gzip
(GNU Zip) ist eine relativ guter Packalgorithmus, mit dem einzelne Dateien gepackt werden können. In der einfachen Variante (gzip datei) wird datei in datei.gz eingepackt und datei danach gelöscht. In der Variante ohne Parameter erwartet es den Input an standard in und gibt den gepackten Output an standard out ab. Man kann noch die Qualität des Packalgorithmus steuern: -1 ist sehr schnell aber ineffektiv, -9 ist langsam aber sehr effektiv, normalerweise wird -6 genommen.

hostname
gibt den Namen des Rechners aus. Mit -f kann der komplette Name (incl. Domain) ausgegeben werden. Mit -i die IP-Adresse(n) des Rechners.

kill
ist wahrscheinlich einer der Gründe warum Anfänger unberechtigte Angst vor erfahrenen Unix-Administratoren haben. Aber ``I will kill you'' bezieht sich hier eher darauf, dass man lediglich aus dem System geworfen wird. kill kann eine beliebige Anzahl von Prozess-ID's (siehe ps) als Parameter bekommen, denen schickt es standardmäßig das Signal SIGTERM, was diese Programme normalerweise veranlasst sich sofort zu beenden. Mit einer Option kann man das gesendete Signal ändern. Z.B. -9 sendet das Kill-Signal, dass den Prozessen keine Chance lässt und sie sofort beendet. Man kann die Signale auch symbolisch angeben (in diesem Fall -KILL oder -SIGKILL). Hier einige wichtige Signale:
-1, -HUP
``hang up'', wird gesendet, wenn das Terminal des Prozesses geschlossen wurde, bei Daemonen (System-Prozesse) kann man es benutzen, um die Konfiguration erneut laden zu lassen.
-9, -KILL
beendet einen Prozess sofort, er bekommt keine Chance sich sauber zu beenden, es sollte also nur im Notfall benutzt werden.
-10, -USR1 und -12, -USR2
sind frei belegbare Signale, die jedes Programm selbst belegen darf (wird von einigen Daemonen wie -HUP verwendet).
-11, -SEGV
``segmentation violation'' oder auch Speicherzugriffsfehler, eine äußerst gemeine Art Programmierfehler vorzutäuschen, wenn man es per kill sendet.
-15, -TERM
das normale Signal für das Beenden.
-17, -CHLD
wird immer dann gesendet, wenn sich ein Kindprozess eines Prozesses beendet, nur in Ausnahmefällen für Nutzer interessant.
-18, -CONT
wird von der Bash bei fg und bg gesendet, setzt einen angehaltenen Prozess fort.
-19, -STOP; -20, -TSTP; -21, -TTIN und -22, -TTOU
halten Prozesse an. (Das T am Anfang bedeutet ``vom Terminal gesendet''.)
Eine komplette Liste gibt kill -l aus.

ln
erstellt eine neue Referenz (link) auf eine Datei. ln datei1 datei2 erstellt für datei1 den zweiten Dateinamen datei2, tatsächlich handelt es sich danach um die selbe Datei, sie hat nur 2 Namen. Mit Verzeichnissen ist dies nicht möglich, da das zu sehr seltsamen Effekten im Dateisystem führen könnte. ln -s datei1 datei2 erstellt datei2 als symbolischen Link auf datei1, d.h. datei2 ist eine eigene Datei, die aber bei Zugriffen auf datei1 umgeleitet wird (ein symbolischer Link speichert einen Dateinamen, auf den das System automatisch umleitet, wenn darauf zugegriffen wird). Symbolische Links dürfen beliebigen Text enthalten, jedoch sind nur reale Datei- oder Verzeichnisnamen sinnvoll. Symbolische Links dürfen daher auch Verzeichnisse und Dateien auf anderen Platten referenzieren.

loadkeys
(nur Console, nicht X: siehe ``man xmodmap'') lädt eine neue Tastaturtabelle (zu finden bei Debian unter /usr/share/keymaps).

login
beginnt eine Session, wird eigentlich nie vom User selbst aufgerufen.

ls
``list files'' hielt lange Zeit den Rekord an Optionen (wurde von mkisofs gebrochen, die Implementation von ACL's sollte dies aber wieder zu Gunsten von ls ausgleichen). Die beiden wichtigsten Optionen sind -l (long, gibt Rechte, Besitzer, Größe, Modifikationszeit aus) und -a (all, gibt auch Dateien aus, die mit ``.'' beginnen aus).

mkdir
erstellt Verzeichnisse. Einfach den Verzeichnisnamen angeben: mkdir neues/verzeichnis, gibt man noch -p an werden auch alle Verzeichnisse dazwischen aufgebaut (vorrausgesetzt sie existieren noch nicht).

mknod
nur für root: erstellt Gerätedateien. Für alle: mknod nodename p legt eine named-Pipe an. Eine named-Pipe ist etwas ähnliches, wie ``|'' in echo test | cat, hat aber einen Namen (daher ``named'') und kann daher von anderen Programmen geöffnet werden. Ein Skript könnte damit zum Beispiel auf Ereignisse vom Nutzer warten.

mktemp
kann in Skripten benutzt werden, um temporäre Dateien anzulegen:
TMPFILE=`mktemp /tmp/myskript.XXXXXX`
dosomething with $TMPFILE

Die X'e werden dabei durch eine eindeutige ID ersetzt.

more
kann benutzt werden, um sich eine Datei oder die Ausgabe eines Programmes in Ruhe seitenweise anzusehen:
cat /really/big/file |more
less ist aber meistens eine bessere Idee.

mount
bindet ein Blockgerät (meistens irgendeine Form von Disk) an ein Verzeichnis. Ohne Parameter gibt es alle ``gemounteten'' Disks aus. Nur root darf die flexible Variante nutzen:
mount [-t type] [-o options] /dev/XX /mountpoint
type ist der Dateisystemtyp auf der Disk (DOS-Floppies: msdos, Win95: vfat, CDRom: iso9660, Linux-Platten: ext2 oder reiserfs, Linux-Floppy: meist minix), meistens wird der Typ jedoch schon automatisch erkannt. Mit -o kann man dem Dateisystem-Treiber Optionen übergeben (genaueres in der Man-Page zu mount), XX wird durch den Namen der Gerätedatei ersetzt (z.B. hda1 für die erste Primäre Partition auf der ersten IDE-Platte), mountpoint ist ein Verzeichnis an das die Disk angebunden werden soll (bei dieser Eingabe meistens /mnt).
Als normaler Nutzer darf man nur die ``kleine'' Variante von mount einsetzen:
mount /mountpoint
Wobei /mountpoint in /etc/fstab für Nutzer freigegeben sein muss.

mv
verschiebt eine Datei oder ein ganzes Verzeichnis:
mv quelle ziel

netstat
listet alle aktiven Netzwerk- und lokalen Socket-Verbindungen auf. Mit Parameter läßt sich noch mehr oder auch weniger Output herauskitzeln. Damit läßt sich auch recht gut aufstöbern, ob da jemand Sicherheitslöcher ins Netz schneidet.

ping
versucht den angegebenen Rechner (IP oder Name) zu erreichen, indem sogenannte ``ping-request'' Pakete gesendet werden, der Host wird (wenn die Pakete ihn erreichen) dann mit ``ping-echo'' antworten und man bekommt eine hübsche Statistik angezeigt. Bekommt man nichts angezeigt kann man mit traceroute nach der durchtrennten Leitung weitersuchen. Ping hat seinen Namen nach dem ``Ping'' Geräusch eines U-Boot-Sonars.

ps
listet laufende Prozesse auf. ps x listet alle Prozesse des aufrufenden Nutzers auf, ps a die Prozesse aller Nutzer, ps ax dann alle Prozesse aller Nutzer. Und so weiter, man kann sich nahezu alle Systemparameter der Prozesse ansehen (CPU-Belastung, Speicher, Elternprozess, Terminal, usw.).

pwd
``pring working directory'' gibt das aktuelle Verzeichnis aus.

readlink
gibt aus wohin ein symbolischer Link zeigt.

rm
``remove'' löscht die angegebenen Dateien (im Falle von mehrfach referenzierten Dateien betrifft das nur den angegebenen Dateinamen. Mit -i fragt rm vor jeder Datei nach (so nervtötent wie DOS). Mit -f zwingt man rm einfach zu löschen, wenn es kann und Fehler zu ignorieren (in Skripten unbedingt angeben!). Mit -r bringt man es dazu rekursiv Verzeichnisse zu löschen.

rmdir
lösch Verzeichnisse (allerdings nur wenn sie leer sind).

sed
``stream editor'', sowas wie ed aber auf Pipes spezialisiert. Hat im Makefile dieses Artikels recht gute Arbeit geleistet, ist aber zu komplex, um es hier ``abzuhaken''.

setserial
initialisiert serielle Ports, da heutige Systeme das recht gut von alleine tun wird man nur selten damit in Berührung kommen und dann hilft man weiter... ;-)

sh
ist immer eine Bourne-Shell-kompatible Shell, bei Linux meistens die Bash.

sleep
blockiert für eine angegebene Anzahl von Sekunden. Kann benutzt werden, um in Schleifen auf Ereignisse zu warten.

stty
kann das Terminal umkonfigurieren (wer merkt sich schon ESC-Sequenzen für die vielen verschiedenen Terminalarten). Interessant ist sicherlich stty echo, um seine eigenen Tastaturaktionen (wieder) beobachten zu können. (Siehe auch reset.)

su
``switch user'' wechselt den Nutzer. Beispiele:
su nutzer
wechselt (nach Passworteingabe) auf den Nutzer ``nutzer'', behält aber sonst die Umgebung bei.
su - nutzer
welchselt in eine Login-Shell von nutzer (so als hätte er sich am Login-Prompt angemeldet)
su nutzer -c ¨kommando parameter¨
führt kommando mit den Rechten von nutzer aus (ich compiliere z.B. grundsätzlich als normaler Nutzer und rufe dann -c ''make install'' auf)
Wird der Nutzername weggelassen wird er automatisch auf root gesetzt. Diese beiden Kommandos sind also äquivalent:
su - root
su -

sync
gibt dem System den Befehl so schnell wie möglich alle gepufferten Dateien auf die Platten zu synchronisieren (sollte man vor Operationen machen, die nicht unterbrochen werden dürfen, wie das Überspielen langer Aufnahmen über die Soundkarte).

tar
``tape archiver'' sichert mehrere Dateien/Verzeichnisse in eine Datei (die auch gerne eine Gerätedatei, wie ein Band, sein darf). Bei den Parametern von tar darf man sich aussuchen, ob man ``-'' davor schreibt oder nicht. Beispiele:
tar c dateien... >datei.tar
packt die Dateien zusammen auf standard out (was hier auf datei.tar umgelenkt wird)
tar x <datei.tar
packt alle Dateien im Archiv auf standard in aus (standard in hier: datei.tar)
tar cf datei.tar dateien....
f steht für file, danach kommt also der Name der Archivdatei
tar cvf datei.tar dateien...
v ist verbose, es wird etwas mehr darüber gesagt, was getan wird
tar xvfz datei.tar.gz
z sagt tar, dass das Archiv mit gzip/gunzip gepackt/entpackt werden soll
tar xvfI datei.tar.bz2
I ist das selbe mit bzip2/bunzip2

tempfile
erstellt eine temporäre Datei (es braucht keinen Parameter, wie mktemp, gibt den Namen aber auch auf standard out aus).

touch
setzt die Modifizierungszeit einer Datei (oder erstellt die Datei, wenn sie noch nicht existiert). Mit -t kann man eine alternative Zeit angeben.

true
ein Programm, das immer funktioniert, also den Status 0 zurückliefert. Wird oft bei while-Schleifen eingesetzt, um Endlos-Schleifen programmieren zu können. (Auch als Shell für gesperrte Nutzer beliebt.)

umount
macht eine mount-Operation rückgängig, als Parameter kann man entweder die Gerätedatei oder den Mountpoint angeben.

uname
gibt Name, System, Kernelversion usw. des Hosts aus (-a: alle Parameter, -m Hostname, -s Systemname).

uncompress
compress ist ein alter Unix-Packalgorithmus, dies ist der Entpacker dazu (siehe gzip).

zcat
zcat datei.gz ist äquivalent zu gunzip <datei.gz.

/usr/bin

Das Verzeichnis /usr/bin enthält all jene Programme, die nicht zum Start des Systems notwendig sind, aber auch nicht dem X-Window-System zuzuordnen sind (die sind unter /usr/X11/bin).

Hier landen auch die Programme von größeren Paketen (wenn sie nicht aus Versehen in /usr/local/bin abgelegt werden), wie LATEX und KDE. Ich beschränke mich hier auf all die kleineren Programme, die die nächsten Seiten schon zur Genüge füllen werden. Auch werde ich meistens nur erwähnen wofür das Programm gut ist, die Fülle an Optionen kann in den man-Pages nachgelesen werden. Es gibt einfach zu viele Programme für Unix/Linux, um hier eine vollständige Referenz wiederzugeben.

Wer ein wichtiges Kommando vermissen sollte schreibe bitte einen Bug-Report in das Bugtracking-System auf http://sourceforge.net/projects/lugddlect mit dem Namen des Programms und einer Beschreibung.

822-date
gibt die aktuelle Zeit im Format des RFC 822 aus (822: Formatierung von eMails).

a2p
verwandelt AWK-Skripte in Perl-Skripte

a2ps
verwandelt ASCII-Text in PostScript a2ps -2 textfile gibt textfile auf dem Standarddrucker aus und formatiert je 2 ASCII-Seiten auf eine physische Seite (ein A4-Blatt wird in 2 A5 Hälften unterteilt). Mit weiteren Parametern kann man beeinflussen, wie der Text formatiert werden soll, welche Daten sonst noch auf die Seite gelangen (z.B. Username, Datum) oder ob der Output in eine Datei statt auf den Drucker umgelenkt werden soll (-o). A2PS beherrscht sogar Syntax-Highlighting in Dokumenten.

access
testet, ob eine Datei ein bestimmtes Zugriffsrecht gesetzt hat (access -r file testet ob file lesbar ist). Siehe auch test.

alien
kann Paketdateien der verschiedenen Distributoren ineinander umwandeln (beispielsweise RPM nach DEB: alien -todeb source.rpm).

anytopnm
wandelt eine beliebige Bilddatei in das PNM Format um.

apropos
kann man Stichworte übergeben, die es dann in man-pages zu finden versucht. Such man z.B. nach einem Befehl, der Prozesse auflistet, kann man mit apropos process alle Befehle auflisten, die etwas mit Prozessen zu tun haben, darunter auch ps.

asciitopgm
verwandelt eine ASCII-Grafik in eine PGM-Datei (Graustufen).

at
merkt sich ein Shell-Skript für die Ausführung zu einem späteren Zeitpunkt vor. (Siehe auch atq, atrm, und batch)

atktopbm
wandelt Raster-Dateien aus dem Andrew Toolkit in PBM's (Portable BitMap).

atq
listet alle at-jobs des Nutzers auf, die noch nicht gelaufen sind. (Siehe at)

atrm
löscht einen at-job. (siehe at)

aumix
ist ein Mixer auf dem Terminal, er kennt zwei Modi: im interaktiven Modus kann man die Regler mit Pfeiltasten und einigen anderen Tasten bedienen, im Kommando-Modus steuert man die Regler mit Parametern auf der Befehlszeile. Aumix kann z.B. in Skripten eingesetzt werden, um nach dem Laden der Sound-Module ein Anfangs-Level für alle Regler zu setzen.

awk
kann über eine recht komplexe Syntax Texte bearbeiten und auswerten. (siehe auch sed)

basename
gibt den Anteil nach dem letzten / eines Dateinamens aus. self=`basename $0` kann in Skripten benutzt werden, um den Namen des Skriptes ohne den Pfad zu bekommen, z.B. bei Skripten, die unter mehreren Namen existieren und je nach Name unterschiedlich reagieren.

batch
merkt sich ein Skript als at-job, führt es jedoch aus, sobald die Belastung des Systems niedrig genug ist (normalerweise: Load-Average<1,5)

bc
Kommandozeilen-Rechner, der sehr nützlich ist, um z.B. nachzurechnen, ob ein Image noch auf die CD passt oder wieviel Geld gerade durch die Modemleitung geflossen ist. Unterstützt auch Variablen.

bdftops
konvertiert BDF-Schriften in PostScript-Schriften.

bioradtopgm
konvertiert (konfokale) Biorad-Bilder in PGM.

bmptoppm
wandelt Windows-Bitmaps in PPM (Portable PixMap).

brushtopbm
wandelt ein Xerox doodle brush Bild in PBM.

buildhash
Hilfsprogramm für ISpell.

bunzip2
entpackt bzip2-Dateien (siehe gunzip). BZip2 ist ein besonders bei großen Dateien effektiverer Algorithmus als GZip.

bzcat
gibt eine mit bzip2 gepackte (Text-)Datei direkt auf standard out aus.

bzip2
packt eine Datei. Mit Parametern läßt sich steuern, wie effektiv der Algorithmus arbeiten soll.

bzip2recover
kann zumindest Teile von fehlerhaften Dateien, die mit BZip2 gepackt wurden, retten. BZip2 packt in Blöcken von 100-900kB, dieses Programm spaltet eine BZip2-Datei in diese Blöcke auf, die unbeschädigten können danach entpackt werden.

c2ph
kann die Debugger-Tabellen des gcc in Listings von C-Symbolen und Adressen verwandeln.

c89
ruft gcc so auf, dass es nach den Standards von ANSI-C 89 compiliert.

cal
gibt einen bestimmten Monat oder ein Jahr als ASCII-Kalender aus. Ohne Parameter: der aktuelle Monat; 1 Parameter: das angebene Jahr (Vorsicht: cal 2 gibt das Jahr 2 n. Chr. aus, nicht Februar oder das Jahr 2002); 2 Parameter geben einen bestimmten Monat eines Jahres aus (cal 2 2001 gibt Februar 2001 aus).

calendar
gibt die Ereignisse des Tages aus. Es kann über eine Datei .calendar konfiguriert werden.

cancel
wenn LPRng als Drucksystem verwendet wird kann man damit Druckaufträge löschen.

captoinfo
wandelt eine TermCap-Datei in eine TermInfo-Datei um. Beide werden verwendet, um das Verhalten von Terminals zu beschreiben (wird von Programmen benötigt, die Dialoge auf dem Terminal anbieten, z.B. mc).

cc
Alias für gcc.

chage
ändert die Informationen, die entscheiden, wann das Passwort eines Nutzers ausläuft (also, wie lange es gültig ist, wann gewarnt werden soll, etc.).

charset
ändert den Zeichensatz auf einer Textkonsole.

chattr
ändert die zusätzlichen Attribute von Dateien auf einem ext2-Dateisystem (z.B. append-only, immutable).

chfn
ändert die Informationen über den vollen Namen eines Nutzers in /etc/passwd (kann auch von dem Nutzer selbst aufgerufen werden).

chkdupexe
durchsucht $PATH nach Programmen, die mehrmals existieren und beschwert sich über symbolische Links, die nirgendwohin zeigen.

chsh
ändert die Login-Shell eines Nutzers (kann auch von ihm selbst aufgerufen werden).

chvt
schaltet zwischen Terminals um. chvt 4 schaltet von jeder beliebigen Konsole auf Konsole 4 (wie Alt-F4).

ci
Checkin-Programm von RCS (siehe rcs und co).

cjpeg
wandelt eine beliebige Bilddatei (PPM, PGM, BMP, Targa, RLE) in eine JPEG-Datei um.

cksum
bildet eine Checksumme einer Datei und gibt die Größe und die Checksumme aus.

clear
löscht den Inhalt des aktuellen Terminals.

cmp
vergleicht zwei Dateien (siehe diff).

cmuwmtopbm
wandelt BitMaps des CMU-WindowManagers in PBM-Bilder.

co
Checkout-Programm von RCS, co datei packt die neueste Version von datei aus der RCS Datei datei,v aus.

col
filtert aus standard in alle ``reverse linefeeds'' aus. Dies sind Anweisungen an das Terminal (oder den Drucker) eine Zeile höher zu gehen.

colcrt
wandelt den Output von nroff so um, dass er auf Terminals angezeigt werden kann.

colrm
entfernt Spalten aus einer Datei.

column
formatiert Text so um, dass er in mehreren Spalten steht.

comm
vergleicht zwei sortierte Dateien zeilenweise (siehe diff).

consolechars
lädt einen Font für die Textkonsole.

crontab
macht Einträge in die Crontab, das sind Aktionen, die regelmäßig zu bestimmten Zeitpunkten ausgeführt werden (mein Rechner weckt mich z.B. sehr gerne um Mitternacht, indem er die man-Pages neu organisiert).

csplit
zerlegt eine Datei abhängig von ihrem Inhalt.

cut
löscht einzelne Spalten aus einer Datei, per Parameter kann man festlegen, welche Spalten und wie sich eine Spalte definiert (Trennzeichen, Breite etc.).

dc
noch ein Kommandozeilen-Taschenrechner, er arbeitet nach der umgekehrten polnischen Notation.

ddate
konvertiert Gregorianische Datumsangaben in Discordianische.

deallocvt
gibt eine Textkonsole frei.

diff
gibt den Unterschied zwischen zwei Dateien oder ganzen Pfaden aus. Diff unterstützt verschiedene Formate, mit einigen davon kann man sehr einfach Patches erstellen, die dann mit patch (siehe dort) bei anderen Nutzern an die entsprechenden Dateien angehängt werden können (die Patches des Linux-Kernels sind mit diff -ruN alteVersion/linux linux erstellt (-r=rekursiv, -u=unified diff Format, -N=auch neue Dateien).

diff3
gibt Unterschiede zwischen 3 Dateien aus.

diffpp
gibt die Unterschiede eines diff-Files in Bezug zu einer aktuellen Datei auf dem Drucker aus (diffpp aktuelledatei <diff-file).

dig
schickt Anfragen an Nameserver. (siehe nslookup)

dircolors
kann benutzt werden, um die Variable LS_COLORS zu setzen, damit ls farbigen Output produziert.

dirname
(Gegenstück zu basename) gibt alles vor dem letzten ``/'' eines Dateinamens aus.

diskd
kann ein Kommando ausführen, sobald eine Diskette im Laufwerk ist, z.B. kann es die Disk mounten. Vorsicht: diskd kann Laufwerk und Disketten zerstören. (Es sucht nach Sektor -1, um eine Disk zu erkennen.)

diskseekd
Simuliert den Floppy-Seek des BIOS, was den Staub aus dem Laufwerk schütteln soll. Ich persönlich ziehe Pusten vor, aber bei Firewalls einige Stockwerke höher könnte das mit Treppensteigen verbunden sein...

djpeg
entpackt ein JPEG-Bild in ein anderes Bildformat (siehe cjpeg).

dnsquery
stellt Anfragen an Nameserver (selber Zweck wie dig, andere Syntax).

dotlockfile
erzeugt, entfernt oder checkt Lockfiles. Dieses Kommando kann genutzt werden, um den Zugriff von Skripten auf eine Datei zu synchronisieren (z.B. bei einem Skript, das jeweils beim Einreffen einer Mail ausgeführt wird, aber nicht 2x gleichzeitig laufen darf). Wichtig dabei ist natürlich, dass alle anderen Programme/Skripte, die auf die Datei zugreifen, nach dem selben Lock-File fragen.

du
scannt wieviel Speicherplatz von den angegebenen Dateien und/oder Verzeichnissen verbraucht wird.

dumpkeys
gibt die aktuelle Tastaturtabelle der Konsole aus.

enscript
wandelt ASCII-Text in PostScript.

env
erzeugt für das übergebene Kommando eine neue Umgebung (andere Variablen).

epsffit
skaliert EPS-Bilder/-Text (Encapsulated PostScript) in eine bestimmte Größe (Bounding Box).

epstopdf
wandelt EPS- in PDF-Dateien um.

esd-config
gibt Compiler-Optionen aus, damit gegen den Enlightenment Sound Daemon gelinkt werden kann.

ex
anderer Name für vi.

expand
konvertiert TAB's in einzelne Leerzeichen (nützlich für die Ausgabe auf Druckern oder wenn Quelltext in TEX-Texte eingefügt werden. (siehe auch unexpand)

expiry
erzwingt korrektes Verhalten für ausgelaufene Passworte (sprich: es sperrt sie).

expr
wertet Ausdrücke aus (Formeln, Vergleiche, etc.) und gibt das Ergebnis auf standard out aus.

extractres
extrahiert Resourcen (Fonts, Muster (Patterns) usw.) aus Postscript-Dateien.

factor
gibt die Primzahl-Faktoren von Zahlen aus.

faillog
wertet das ``faillog'' aus und kann Login-Limits setzen. Das Faillog protokolliert alle fehlgeschlagenen Login-Versuche eines Nutzers.

fax2ps
wandelt ein TIFF-Fax in PostScript um.

fax2tiff
wandelt ein ``Raw-Fax'' (Gruppe 3 Fax) in ein TIFF-Fax (Gruppe 3/4 Fax) um.

fdformat, fdlist, fdmount, fdmountd, fdrawcmd, fdumount
die FD-Utils können benutzt werden, um mit Floppies umzugehen. Normalerweise ist die Verwendung einfacher mounts, automount oder der mtools einfacher.

fgconsole
gibt die Nummer der aktuellen Konsole aus (siehe chvt).

file
ermittelt den Dateityp einer Datei anhand ihres Inhalts.

find
such nach Dateien, die einem angegebenen Muster (Name, letzter Schreibzugriff, etc.) entsprechen und gibt diese aus oder führt ein Kommando damit aus. Beispiel: find . -name '*.c' sucht ab dem aktuellen Verzeichnis rekursiv nach allen Dateien, die auf .c enden.

finger
gibt Daten zu Nutzern auf dem lokalen oder einem entfernten Host aus. Wenn im Homeverzeichnis des Nutzers eine Datei .plan existiert wird diese ebenfalls ausgegeben. (All meine Versuche damit das Terminal des Aufrufers zu ruinieren schlugen fehl. Das nur als Hinweis an Hobby-Cracker.)

fitstopnm
konvertiert ein FITS Bild in ein PNM.

fixdlsrps, fixfmps, fixmacps, fixps, fixpsditps, fixpspps, fixscribeps, fixtpps, fixwfwps, fixwpps, fixwwps
beseitigt Ungereimtheiten in verschiedenen Postscriptdialekten, damit diese Dateien mit den PSUtils bearbeitet werden können.

fmt
formatiert Text, indem Absätze neu ausgerichtet werden (zu lange Zeilen werden umbrochen, zu kurze zusammengefasst).

fold
umbricht zu lange Zeilen eines Textes.

formail
formatiert eMails so, dass sie im mbox-Format gespeichert werden können. Mbox ist das Standardformat für Mail unter Unix.

free
zeigt an, wieviel Speicher noch verfügbar ist.

from
gibt die Namen derjenigen an, die eMails an den Aufrufer geschickt haben.

fstopgm
konvertiert ein Usenix FaceSaver Bild in ein PGM.

ftp
einfacher FTP-Client für die Konsole.

funzip
erwartet ein ZIP-Archiv an standard input und gibt die erste Datei daraus auf standard out aus.

g++
GNU C++-Compiler.

g3topbm
konvertiert ein Gruppe 3 Fax in ein PBM-Bild.

gawk
siehe awk.

gemtopbm
konvertiert GEM (*.img) Dateien in PBM's.

genksyms
generiert Versionsinformationen über C-Dateien. Dieses Programm wird vom Makefile des Linux-Kernels benutzt, um sicherzustellen, dass Module nur an den Kernel passen, in dem die Parameter der Funktionen noch die selbe Struktur haben.

getent
holt Daten aus den ``administrativen Datenbanken'' (passwd, group, hosts, services, protocols oder networks).

getfdprm
gibt die momentane Formatierung eines Laufwerks aus.

getkeycodes
gibt das Scancode-Keycode-Mapping der Tastaturtabelle des Kernels aus.

getopt
kann in Shell-Skripten verwendet werden, um lange Optionen (--option) im GNU-Stil auszuwerten.

getpeername
gibt den Namen des Hosts/Service aus, der mit standard in verbunden ist (um z.B. bei telnet-Verbindungen den aufrufenden Host zu bekommen).

gif2tiff
wandelt GIF-Bilder in TIFF-Grafiken.
giftopnm
wandelt GIF in PNM Bilder.

gmake
siehe make.
gouldtoppm
konvertiert Gould-Scanner Dateien in PPM-Bilder.

gpasswd
verwaltet Gruppen, wenn gshadow verwendet wird. Gruppen können Administratoren haben, die dann Mitglieder hinzufügen oder entferen dürfen.

gpic
siehe pic.

gpm-root
kann auf Mausaktionen mit Menüs reagieren, die in die Konsole gelegt werden.

grodvi
wandelt groff-output in TEX-DVI-Dateien.

groff
wandelt spezielle Textdateien in verschiedene Formate (z.B. so dass sie auf dem Terminal ausgegeben werden können oder in PostScript). Dieses Format wird z.B. für man-pages verwendet.

grohtml
wandelt den Output von groff in HTML.

grolj4, grops, grotty, groups
weitere Wandler für groff.

gs
GhostScript, ein PostScript-Interpreter, wird meist nur von anderen Programmen aus aufgerufen (z.B. gv oder ghostview).

gtk-config
gibt Parameter für das Linken gegen GTK aus.

gzexe
komprimiert Programme so, dass sie bei Aufruf sich selbst entpacken und dann ganz normal ausgeführt werden.

head
gibt die ersten Zeilen einer Datei aus (siehe auch tail).

hexdump
gibt den Inhalt einer Datei hexadezimal aus. (siehe auch od)

hipstopgm
konvertiert HIPS-Dateien in PGM-Bilder.

host
sucht nach Informationen über Internet-Hosts. (DNS)

hostid
gibt die ID des Hosts aus (stammt aus der Sun-Welt, wo alle Rechner eine Seriennummer haben).

hpcdtoppm
konvertiert ein Photo-CD-Bild in ein PPM.

htdigest, htpasswd
Programme mit denen die Authentifikation gegenüber Webpages kontrolliert werden kann (Apache).

icontopbm
konvertiert Sun-Icons in PBM.

iconv
konvertiert Textdateien in andere Zeichensätze um.

id
gibt die reelle und die effektive User- und Group-ID aus.

ifnames
gibt alle Namen aus, die ein C-File per #define definiert.

igawk
schickt Input-Files erst durch den Präprozessor und dann durch awk, dadurch kann eine AWK-Datei #include's enthalten.

ilbmtoppm
wandelt ILBM Bilder in PPM.

imgtoppm
wandelt IMG's in PPM.

info
ist das GNU Hilfesystem. Alle größeren Applikationen sind in info abrufbar (glibc, gcc, etc.). info info gibt eine Einführung in die Benutzung.

infocmp
vergleicht TermInfo-Einträge.

infotocap
wandelt TermInfo- in TermCap-Dateien (siehe captoinfo).

install
installiert Dateien in das vorgegebene Verzeichnis, sorgt dafür, dass das Verzeichnis existiert und setzt Zugriffsrechte.

ipcrm, ipcs
löscht, listet System-V-IPC-Resourcen (shared mem, Semaphoren, Message-Queues).

ispell
Rechtschreibung für Linux. Man kann ispell mit beliebigen Textdateien (auch LATEX oder HTML) aufrufen, um die Rechtschreibung zu prüfen.

join
vereint die Zeilen zweier Dateien (nicht so gut wie ein SQL-join, hilft aber oft weiter).

jpegtran
übersetzt zwischen verschieden Formatierungen von JPEG-Dateien.

kbd_mode
setzt oder verändert den Modus der Tastatur (Scancode, Keycode, ASCII, UTF-8).

killall
etwas komfortablere Variante von kill. Man kann einen Programmnamen übergeben.

last
zeigt alle zuletzt eingeloggten Nutzer an.

lastlog
wertet das Lastlog (Logbuch aller Logins) aus und gibt für jeden Nutzer an, wann er das letzte Mal eingeloggt war.

ldd
sucht nach allen Bibliotheken (shared libs), gegen die ein Programm gelinkt ist.

less
ist ein Witz, denn eigentlich ist less wesentlich besser bedienbar als more. Less gibt sein standard in seitenweise aus (man kann sogar darin navigieren (Pfeiltasten) und suchen (/suchbegriff und rückwärts ?suchbegriff)).

lessecho
gibt alle Argumente auf standard out aus (soweit: wie echo), Argumente, die Leerzeichen enthalten werden in '' '' eingeschlossen.

lessfile, lesspipe
gibt Kommandos aus, mit denen man less dazu bringen kann, Dateien transparent auszuwerten (tar-files auflisten, gzip-files entpacken). Lesspipe leitet die Dateien dabei durch eine Pipe und lessfile speichert die Daten in einer Datei zwischen:
eval `lessfile` oder:
eval `lesspipe`
setzt die entsprechenden Parameter.

lesskey
kann benutzt werden, um die Tastenbelegung für less umzukonfigurieren -- dabei wird jeweils einer Zeichensequenz ein less-Kommando zugeordnet. Man übergibt lesskey einfach eine Datei mit den entsprechenden Definitionen. Wer von den Experten jetzt an Magie glauben mag: lesskey speichert eine binäre Version seines Inputs in $HOME/.less .

lispmtopgm
konvertiert LISP-Bitmaps in PGM's.

locale
gibt aus, welche Parameter für die Lokalisierung gesetzt sind, also welche Sprachen wofür eingestellt sind.

locate
kann man einen Dateinamen oder einen Teil davon übergeben, es sucht diesen dann in seiner internen Datenbank.

lockfile
kann für Skripte Lock-Dateien erzeugen. (siehe dotlockfile)

logger
macht Einträge in das System-Log. Shell-Skripte können damit ihren Status, ebenso wie andere Systemprozesse, an das System-Log weitergeben.

logname
gibt den Login-Namen des Nutzers aus.

lorder
sortiert Objektdateien, indem es eine Liste von Abhängigkeiten ausgibt: links steht eine Datei, die ein Symbol benutzt, das in der Datei rechts steht. (weiter: siehe tsort)

lp, lpr
druckt die übergebene Datei aus. Je nach Filter wird die Datei entweder direkt an den Drucker weitergeleitet oder erst in das druckereigene Format übersetzt. Normalerweise werden Dateien im PostScript-Format übergeben, einige Filter verstehen auch andere Formate.

lpq
fragt den Status des Druckers ab.

lprm
löscht Druckaufträge aus der Warteschlange.

lpstat
fragt den Status der Aufträge in der Warteschlange ab.

lsattr
listet die zusätzlichen Attribute einer Datei auf dem ext2-Dateisystem auf.

lwp-download, lwp-mirror, lwp-request, lwp-rget
biten Möglichkeiten Dateien aus dem Netz zu laden und lokal zu speichern.

lynx
einfacher Web-Browser auf der Kommandozeile. (vgl. w3m)

magic2mime
wandelt den Output von file in eine mögliche Klassifizierung für MIME (wie text/plain).

mail
ohne Parameter: ein sehr einfacher Mail-Reader; mit Parametern: sendet eMail

mailstat
wertet Mail-Logfiles aus und generiert Statistiken.

make
sehr mächtiges Werkzeug zur automatischen Generierung von Dateien aus anderen Dateien (z.B. Programme aus zahlreichen Quelltexten).

makeindex
generiert Indizes aus Textdateien. Wird zum Beispiel von man benutzt, um Daten für apropos zur Verfügung zu stellen.

makeinfo
übersetzt TEX-Info Quellen in info-Pages.

man
gibt Hilfe zu Kommandos (1, 8), einigen Konfigurationsdateien (5) und Funktionen (2, 3) aus. Die Zahlen in Klammern sind jeweils die ``sections'' der man-Pages, wenn es in mehreren Sektionen eine man-Page mit dem selben Namen gibt kann man man sagen, aus welcher Sektion die Page geladen werden soll. (z.B.: man 1 man)

mandb
generiert den man-Page-Index.

manpath
gibt die Verzeichnisse aus, in denen nach man-Pages gesucht wird.

mbadblocks
checkt Disketten mit FAT-Dateisystem (msdos, vfat) auf fehlerhafte Blöcke und markiert diese.

mc
ist der Midnight-Commander. Frei nach dem NortonCommander, nur besser auf Unix/Linux abgestimmt. Er versteht FTP, DOS-Floppies. Kann tgz und zip Archive wie Pfade behandeln. Usw.

mcat
gibt ganze Floppy-Images aus oder schreibt sie auf die Floppy. Im Gegensatz zu cat und dd kann es den mtools-Floppy-Daemon nutzen, um remote Floppies anzusprechen.

mcd
ändert das Arbeitsverzeichnis der mtools. Ohne Parameter gibt es das Verzeichnis aus.

mcedit
sehr leistungsfähiger Editor für Terminals. Unterstützt u.A. Source-Highlighting.

mcookie
erstellt ``Magic Cookies'' für xauth. Ein Cookie ist ein 128-bit Wert, der zur Authentifikation beim X-Server benutzt werden kann. Beispiel: xauth add :0 . `mcookie`

mcopy
kopiert Dateien von/auf DOS-Disketten. Beispiele:
mcopy datei a: kopiert datei auf die Diskette
mcopy a:datei . kopiert datei von der Diskette in den aktuellen Pfad.

mcserv
Netzwerk-Dateisystem-Server des mc.

md5sum
errechnet den MD5-Hashwert der Dateien, die übergeben werden. Dieser Hash gilt allgemein als sehr sicher, da es praktisch fast unmöglich ist gezielt eine Datei mit identischem Hash aber anderem Inhalt zu erstellen.

mdel
löscht eine Datei auf einer DOS-Diskette.

mdeltree
löscht einen ganzen Dateibaum auf einer DOS-Disk.

mdir
wie ls, nur auf einer DOS-Disk.

mdu
wie du, nur auf einer DOS-Disk.

merge
überträgt die Differenzen zwischen zwei Dateien (alt und neu) in eine dritte Datei (ziel): merge ziel alt neu

mesg
setzt die Zugriffsrechte auf das aktuelle Verzeichnis: mesg y - alle dürfen Nachrichten (z.B. mit write) schicken; mesg n - Nachrichten sind nicht erlaubt.

mformat
formatiert DOS-Floppies.

mgrtopbm
konvertiert MGR-Bitmaps in PBM.

micq
Textmode-Client für ICQ.

mini-inetd
lauscht an einem Port und startet für jede Verbindung ein als Parameter übergebenes Programm.

minicom
einfaches Terminalprogramm, das benutzt werden kann, um direkt mit dem Modem zu kommunizieren.

mkfifo
erstellt eine named-Pipe im Dateisystem. Eine Named Pipe ist vergleichbar mit der Pipe, die mit | geöffnet wird, sie kann Daten in eine Richtung übertragen, speichert sie aber nicht dauerhaft. Sie kann benutzt werden, um einen Prozess im Hintergrund auf Nachrichten anderer unabhängiger Prozesse warten zu lassen.

mkisofs
erstellt aus einem Verzeichnisbaum ein CD-Image, das dann mit Brennprogrammen (z.B. cdrecord) auf eine CD gebrannt werden kann. Es beherrscht ISO9660 und die Erweiterungen RockRidge (Unix-Dateirechte) und Joilet (Microsoft). Es besitzt sehr viele Optionen, um das Aussehen des Images zu beeinflussen.

mkpasswd
generiert aus einem Klartext-Passwort und einem ``Salt''-Wert ein verschlüsseltes Unix-Passwort. Der Salt-Wert besteht aus 2 Zeichen, die die Zeichen [a-zA-Z0-9./] enthalten dürfen.

mlabel
gibt einer DOS-Disk einen Namen (Label).

mmd
erstellt ein Verzeichnis auf einer DOS-Disk.

mmount
mountet eine DOS-Disk. Die Disk muss in /etc/fstab stehen.

mmove
verschiebt eine Datei auf einer DOS-Disk.

mpack
verpackt eine Datei in MIME-Mails und schickt diese ab.

mpartition
partitioniert eine DOS-Festplatte.

mrd
löscht ein Verzeichnis auf einer DOS-Disk.

mren
benennt eine DOS-Disk um.

mshowfat
zeigt die FAT-Einträge einer DOS-Disk an.

mtvtoppm
konvertiert den Output der MTV und PRT Raytracer in PPM's.

mtype
zeigt den Inhalt einer Datei auf einer DOS-Disk an.

munpack
packt Dateien aus MIME-Mails aus.

mzip
ändert das Schreibschutz-Bit auf ZIP-/Jaz-Disks.

namei
folgt einem Pfad, bis zum Ende. Gut um Probleme mit ``too many levels of symbolic links'' zu finden.

newaliases
wird benutzt, um die /etc/aliases Datei neu zu einzulesen, nachdem Änderungen vorgenommen wurden.

newer
vergleicht die Modifikationszeiten zweier Dateien.

newgrp
ändert die Gruppe unter der der Nutzer arbeitet.

nice
läßt ein Programm mit niedrigerer Priorität laufen (niedrigere Priorität=höherer nice-Wert, normal ist 0 oder 5), root darf auch ``un-nett'' sein und eine höhere Priorität setzen.

nl
gibt die übergebenen Dateien mit Zeilennummern aus.

nm
listet alle Symbole einer Object-, Shared-Object- oder Programmdatei auf.

nmblookup
sucht nach den Rechnern für einen Windows-Rechnernamen.

nmixer
interaktiver, text-basierter Sound-Mixer.

nohup
führt ein Programm so aus, dass es nicht beim Schliessen des Terminals beendet wird.

nroff
der nroff-Textformatierer. Wird meist durch groff emuliert.

nslookup
fragt DNS-Server ab und löst DNS-Namen auf.

ntpq
erfragt den Status von Zeitservern (siehe xntpd).

objcopy
kopiert die Symbole einer Objektdatei in eine andere.

objdump
listet den Inhalt einer Objektdatei auf.

od
(octal dump) listet den Inhalt einer Datei oktal, hexadezimal usw. auf.

openssl
konfiguriert SSL Verbindungen.

openvt
startet ein Programm auf einem neuen Terminal.

pal2rgb
konvertiert ein TIFF mit Farbpalette in ein RGB-TIFF.

passwd
ändert Systempassworte.

paste
schreibt die Zeilen mehrere Dateien jeweils durch Tabulator getrennt nebeneinander auf standard out.

patch
fügt die Änderungen eines diff-files in einer Datei ein. Je nach diff-Format kommt es auch mit Änderungen in der Datei klar, die bei der Erstellung des diffs noch nicht vorhanden waren.

pathchk
checkt, ob ein Pfadname gültig ist (kann auch gegen den POSIX-Standard testen).

pbmclean
ändert Pixel in einem PBM, die ihren Nachbarpixeln nicht ähneln, dadurch kann z.B. ``Schnee'' korrigiert werden.

pbmlife
spiel ``game of life'' mit einem PBM.

pbmmake
generiert ein leeres PBM.

pbmmask
generiert ein Maskenbitmap aus einem normalen PBM.

pbmpscale
vergrößert PBM's.

pbmreduce
verkleinert ein PBM.

pbmtext
rendert Text in ein PBM.

pbmto10x, pbmto4425, pbmtoascii, pbmtoatk, pbmtobbnbg, pbmtocmuwm, pbmtoepsi, pbmtoepson, pbmtog3, pbmtogem, pbmtogo, pbmtoicon, pbmtolj, pbmtoln03, pbmtolps, pbmtomacp, pbmtomgr, pbmtopgm, pbmtopi3, pbmtopk, pbmtoplot, pbmtoptx, pbmtox10bm, pbmtoxbm, pbmtoybm, pbmtozinc
konvertiert PBM's in andere Bildformate.

pbmupc
generiert Strichcodes (Standard: Universal Product Code)

pcxtoppm
konvertiert PCX in PPM Bilder.

pdf2dsc
generiert eine Postscript-Beschreibungsdatei, mit der GhostView die PDF Datei dann lesen kann.

pdf2ps
wandelt eine PDF Datei in eine PostScript-Datei.

pdiff
druckt die Unterschiede zwischen zwei Dateien (benötigt wdiff).

perl
der Perl-Interpreter

pfb2pfa
konvertiert DOS-Type1-Fonts in Unix-Type1-Fonts (tauscht die newlines aus).

pgmcrater
generiert fraktale Krater.

pgmbentley, pgmedge, pgmenhance, pgmhist, pgmkernel, pgmnoise, pgmnorm, pgmoil, pgmramp, pgmtexture, pgmtofs, pgmtolispm, pgmtopbm, pgmtoppm
führen Modifikationen an PGM-Bildern durch.

pgp
das Verschlüsselungsprogramm PGP.

pgpgpg
Wrapper um GnuPG, der PGP emuliert.

pi1toppm, pi3topbm
konvertiert Atari-Bitmaps in PBM.

pic
wandelt Bilder im PIC-Format, die in TEX oder troff-Dateien eingelagert sind in Kommandos um, die von tex oder troff verstanden werden. Eine Beschreibung des Formats findet sich in der man-Page zu pic.

pinky
abgespeckte Variante von finger.

pjtoppm
konvertiert HP PaintJet Dateien in PPM.

plog
loggt PPP Verbindungen. (siehe pon, poff)

pngtopnm
wandelt PNG-Bilder in PNM.

pnmalias, pnmarith, pnmcat, pnmcomp, pnmconvol, pnmcrop, pnmcut, pnmdepth, pnmenlarge, pnmfile, pnmflip, pnmgamma, pnmhistmap, pnmindex, pnminvert, pnmmargin, pnmnlfilt, pnmnoraw, pnmpad, pnmpaste, pnmrotate, pnmscale, pnmshear, pnmsmooth, pnmtile
führt Modifikationen an PNM-Dateien durch.

pnmtoddif, pnmtofits, pnmtopng, pnmtops, pnmtorast, pnmtosgi, pnmtosir, pnmtotiff, pnmtoxwd
wandelt PNM in andere Bildformate.

poff, pon
schaltet das Logging von PPP Verbindungen ab/an.

ppm3d, ppmbrighten, ppmchange, ppmdim, ppmdist, ppmdither, ppmflash, ppmforge, ppmhist, ppmmake, ppmmix, ppmnorm, ppmntsc, ppmpat, ppmquant, ppmquantall, ppmqvga, ppmrelief, ppmshift, ppmspread
modifiziert PPM-Bilder.

ppm2tiff, ppmtoacad, ppmtobmp, ppmtogif, ppmtoicr, ppmtoilbm, ppmtomap, ppmtomitsu, ppmtopcx, ppmtopgm, ppmtopi1, ppmtopict, ppmtopj, ppmtopjxl, ppmtopuzz, ppmtorgb3, ppmtosixel, ppmtotga, ppmtouil, ppmtoxpm, ppmtoyuv, ppmtoyuvsplit
wandelt PPM in andere Bild-Formate.

pr
konvertiert Textdateien so, dass sie beim Drucken besser aussehen.

printenv
gibt alle Umgebungsvariablen aus.

printf
gibt seine Argumente wie das printf von C aus.

procmail
kann Scriptgesteuert Mails in Dateien einsortieren oder Programmen übergeben.

ps2ascii, ps2epsi, ps2frag, ps2jpdf, ps2pdf, ps2pk, psbb, psbook, psfaddtable, psfgettable, psfstriptable, psidtopgm, pslpr, psmandup, psmerge, psnup, psplpr, psresize, psselect, psset, pstoimg, pstopnm, pstops
wandelt Postscript um oder modifiziert es.

pstree
gibt Prozesse als Baum aus.

ptx
generiert einen permutierten Index einer Textdatei.

qrttoppm
konvertiert den Output des QRT Raytracers in PPM.

ras2tiff, rasttopnm
wandelt Sun Rasterfiles in TIFF/PNM.

rawtopgm, rawtoppm
wandelt binäre Graustufenbilder in PGM/PPM.

rcs
-- Revision Control System -- kann mehrere Versionen einer Datei in einer ,v Datei speichern und verwalten. Meistens wird heute jedoch CVS eingesetzt, das RCS-Kommando co wird nur manchmal von CVS-Admins benötigt.

rcs2log, rcsclean, rcsdiff, rcsfreeze, rcsmerge
weitere Utilities von RCS.

rdjpgcom
zeigt Kommentare aus JPEG-Dateien an.

recode
wandelt Texte zwischen verschiedenen Kodierungen um (z.B. dem in Europa üblichen latin1 und dem EBCDI Code der Mainframe-Welt).

rename
benennt mehrere Dateien um.

renice
ändert die Priorität eines laufenden Prozesses.

reset
initialisiert das Terminal. Kann sehr nützlich sein, wenn man sich /bin/echo mit cat angesehen hat.

resizecons
versucht den Kernel dazu zu bewegen die Anzahl der Zeilen/Spalten einer Konsole zu ändern.

rev
dreht die Buchstaben aller Zeilen einer Datei um.

.tgiezeg reih eiW

rgb2ycbcr
konvertiert RGB-TIFFs in YCbCr-TIFFs.

rgb3toppm
kombiniert drei Graustufenbilder zu einem Farbbild.

rlog
gibt Log-Meldungen aus RCS-Dateien aus.

rman
decompiliert formatierte Man-Pages zu Source-Files.

rpcgen
generiert aus einer Metasprache C-Code, der RPC Protokolle implementiert.

rpcinfo
gibt aus, welche Services es an einem RPC-Server findet.

rpm
installiert, entfernt, ...., analysiert RPM-Pakete.

rpm2cpio
konvertiert ein RPM in ein CPIO-Archiv.

runscript
Skript-Interpreter von minicom.

savelog
archiviert alte Log-Files.

scanimage
Kommandozeilen-Werkzeug für den Zugriff auf Scanner und andere Bildquellen (damit liesen sich z.B. Webcams betreiben).

scp
-- secure copy -- kopiert Dateien abhörsicher über SSH-Verbindungen.

sdiff
findet Unterschiede zwischen Dateien und fragt interaktiv nach, wie es die beiden Dateien vereinen soll.

seq
gibt eine Nummernsequenz aus (man gibt die erste, die Schrittweite und die letzte an).

setfdprm
lädt Floppy-Parameter.

setkeycodes
manipuliert die Keycode-Scancode-Tastaturtabelle des Kernels.

setleds
setzt die Tastatur-LED's.

setmetamode
modifiziert die Behandlung der Meta-Tasten der Tastatur.

setsid
startet ein Programm in einer neuen Session (Sessions sind Gruppen miteinander verwandter Programme).

setterm
setzt Attribute des Terminals.

sg
wie newgrp, führt jedoch nur ein Kommando aus und startet keine neue Shell.

sgitopnm
wandelt SGI-Bilder in PNM.

shar
generiert Archive im Text-Format, die gemailt werden können und später einfach durch ausführen entpackt werden.

showkey
zeigt an, welche Tasten gedrückt wurden (als Key-/Scancodes)

shred
löscht eine Datei sicher, indem sie zuerst überschrieben wird (Hinweis: einige Dateisysteme sortieren Blöcke beim Schreiben neu, dann ist dieser Versuch natürlich sinnlos).

sirtopnm
wandelt ein Solitaire Image Recorder Bild in PPM/PGM.

size
zeigt die Größen der einzelnen Sektionen einer Objektdatei oder eines Programmes an.

skill
schickt Signale an Prozesse, die einem Kriterium entsprechen (z.B. User, Terminal).

sldtoppm
wandelt AutoCad Slides in PPM Bilder.

sliceprint
druckt ASCII-Dateien mit langen Zeilen aus.

snice
ändert die Priorität von Prozessen, die einem Kriterium entsprechen (z.B. User, Terminal).

sort
sortiert seinen Input. Mit Optionen kann angegeben werden nach welchen Feldern und nach welchem Kriterium sortiert werden soll.

spctoppm
konvertiert Atari compressed Spectrum Dateien in PPM.

split
unterteilt Dateien in mehrere Stücke (sehr nützlich, um große Dateien auf kleine Disketten zu verteilen).

spottopgm
konvertiert SPOT satellite Bilder in PGM.

sputoppm
konvertiert Atari uncompressed Spectrum Bilder in PPM.

ssh
ermöglicht abhörsichere Logins zu anderen Rechnern. Über ssh können aber auch viele andere Protokolle gelagert werden: scp kopiert Dateien, CVS kann ssh statt rsh benutzen und mit einigen Tricks können auch VPNs (Virtual Private Networks) darüber getunnelt werden.

states
eine awk Variante, die auch einige ``state machine'' Ansätze versteht.

strace
verfolgt die Systemaufrufe eines Prozesses.

strings
listet alle lesbaren Zeichenfolgen einer Datei auf. Kann z.B. verwendet werden, um alle Zeichenketten in einer Objektdatei aufzulisten.

strip
entfernt die Symboltabelle aus einer Objektdatei. Das macht sie unbrauchbar für Debugger, aber oft auch wesentlich kleiner.

sum
erstellt Checksummen über Blöcke von Dateien.

superformat
formatiert Floppies. Beherrscht auch größere Formate, wie 1992kB oder 3983kB.

syslinux
spielt den syslinux Bootloader auf eine DOS-Floppy.

tac
gibt die Zeilen einer Datei in umgekehrter Reihenfolge aus. Dadurch kann z.B. eine Sortierung (siehe sort) umgekehrt werden.

tack
testet, ob die TermInfo Einträge für das aktuelle Terminal korrekt sind. Je nach Geschmack sind diese Test lustig anzusehen oder stinklangweilig...

tail
gibt die letzten Zeilen einer Datei aus. Per Parameter läßt sich steuern, wieviele Zeilen und ob danach weiter ausgegeben oder abgebrochen werden soll. Tail kann benutzt werden, um auf einem Terminal zu überwachen, ob weitere Einträge in eine Log-Datei erfolgen.

talk
versucht einen einfachen Chat zu einer anderen Person zu öffnen oder bestätigt eine Chat-Anfrage.

tclsh
Interpreter für TCL-Scripte.

tcpbug
leitet einen lokalen Port an einen anderen Rechner weiter.

tcpconnect, tcplisten
genereller TCP-Client/-Server, kann benutzt werden, um einfache Daten über einen Kanal zu senden.

tcsh
ist die C-Shell. Eine Shell mit Elementen der Sprache C.

tee
zweigt den Input in eine Datei ab und kopiert ihn gleichzeitig auf standard out. (Gut um Ausgaben von Programmen mitzuprotokollieren.)

telnet
kann sich mit beliebigen Servern verbinden. Hauptsächlich wird es für Login-Server verwendet (auch wenn ssh sicherer ist), für einige teure Drucker für die Konfiguration oder von Programmierern, die Protokolle austesten wollen (z.B. POP3, HTTP oder SMTP).

test
kann Strings und Zahlen vergleichen oder die Existenz von Dateien prüfen.
bash> test -z string || echo string ist lang
string ist lang
bash> test wort = wort && echo wort gleich wort
wort gleich wort
bash> touch file
bash> test -f file && echo file existiert
file existiert

tgatoppm
konvertiert Targa-Bilder in PPM.

thumbnail
generiert aus TIFF-Dateien ein TIFF mit ``Thumbnail's''

tiff2bw, tiff2ps, tiff2rgba, tiffcmp, tiffcp, tiffdither, tiffdump, tiffinfo, tiffmedian, tiffsplit, tifftopnm
verändert oder konvertiert TIFF's.

time
misst die Zeit, die ein Kommando verbraucht (jeweils als Realzeit, verbrauchte Prozessorzeit im Usermode und im Systemmode).

tload
Pseudografik der Systembelastung (Load-Average).

top
listet Prozesse sortiert nach Prozessorbelastung auf.

touch
setzt die Modifiktionszeit einer Datei neu (Standard: die aktuelle Zeit, es kann aber jede beliebige andere genommen werden) oder erstellt diese Datei.

tput
initialisiert Terminals.

tr
ersetzt in Standard in die Zeichen, die in Parameter 1 stehen durch die Zeichen in Parameter 2 und gibt das Ergebnis aus:
bash> echo abcdefg | tr abc xyz
xyzdefg

troff
formatiert Text, der in einer speziellen Makro-Sprache verfasst wurde (siehe auch groff).

tset
initialisiert Terminals.

tsort
sortiert topologisch. Aus einer Liste von Abhängigkeiten (links ist abhängig von rechts) wird eine Datei erzeugt, in der alle Einträge linear sortiert sind aber die Reihenfolge noch stimmt. Kann benutzt werden, um zusammen mit lorder eine ideale Reihenfolge für das Zusammenlinken von Bibliotheken.

tty
gibt den Dateinamen des aktuellen Terminals aus.

tzselect
interaktives Tool, mit dem man ermitteln kann, wie die Variable TZ (TimeZone, Zeitzone) gesetzt werden muss, damit die Zeit korrekt ausgegeben wird.

unexpand
konvertiert Leerzeichen in Tabulatoren, über Parameter kann angegeben werden wieviele Leerzeichen ein Tab sind. Zusammen mit expand kann es benutzt werden, um die Schrittweite von Einzügen in Quelltexten zu ändern (z.B. von den unter Anfängern üblichen 2 Zeichen auf die 8 Zeichen des besser lesbaren Torvals-Stil).

unicode_start, unicode_stop
startet/stopt den Unicode-Modus in der Konsole.

uniq
entfernt aufeinander folgende identische Zeilen im Input. Kann benutzt werden um überflüssige Zeilen einer sortierten Datei zu entfernen.

unshar
packt ein shar-File aus (siehe shar).

unzip
entpackt eine ZIP-Datei.

updatedb
erstellt die interne Datenbank von locate, sollte regelmäßig von cron aufgerufen werden.

uptime
zeigt an, wie lange der Rechner schon läuft.

users
zeigt alle eingeloggten Nutzer an.

uudecode, uuencode
dekodiert/kodiert Dateien zum Verschicken per eMail (Vorgänger von MIME).

uuidgen
generiert UUID's, also (statistisch) weltweit eindeutige Werte.

vacation
antwortet auf eMails mit ``I'm not here''. Kann in die .forward-Datei des Nutzers (hier: eric) eingeklinkt werden:
\eric, "|/usr/bin/vacation -a allman eric"

vi
Unix-Editor, der auf nahezu allen Unix-artigen Systemen vorhanden sein sollte. Mit speziellen Tasten-codes schaltet man zwischen Befehls- und Editormodus um. Hier die wichtigsten:
i insert -- Zeichen einfügen
o Zeile anfügen
<ESC> Editiermodus verlassen
x Zeichen löschen
dd Zeile löschen
:w Datei speichern
:x Datei speichern und beenden
:q beenden
:q! beenden und Änderungen verwerfen

vmstat
gibt Status des Speichers aus.

vt-is-UTF8
checkt, ob eine Konsole im UTF-8 Modus ist.

w
gibt die eingeloggten Nutzer und einige zusätzliche Daten aus (Terminal, von wo aus der Login kommt, wann der Login erfolgte usw.).

w3m
Frame-fähiger Browser im Textmodus.

wall
-- write to all -- sendet Nachrichten an alle eingeloggten Nutzer.

watch
führt ein Kommando mehrfach aus und gibt jeweils die erste Bildschimseite des Outputs aus. Wer schon immer eine Kommandozeilen-Uhr haben wollte: watch -n 1 date

wc
zählt die Zeilen, Worte und Buchstaben einer Datei oder von standard in.

wget
Mirror-Utility für Webseiten und FTP.

whatis
alle man-Pages enthalten eine Kurzbeschreibung. Whatis zeigt diese an. Es ist also vergleichbar mit dieser Datei, nur nicht so ausführlich.

whereis
sucht nach Binaries, Man-Pages und Quelltexten eines Programmes.

which
gibt aus welche Datei zu einem Kommando gehört (es geht einfach $PATH durch).

whiptail
zeigt Dialogfenster an. Kann benutzt werden, um komfortable Dialoge auf der Kommandozeile zu generieren.

who
zeigt an, wer gerade eingeloggt ist.

whoami
zeigt an, unter welchem Login man gerade arbeitet (also wessen Rechte man gerade hat, was besonders nützlich ist, wenn man vergessen hat in welchem xterm man su - eingegeben hat).

whois
fragt die WHOIS-Datenbanken ab. Whois wirde verwendet, um registrierten DNS-Domains einen Besitzer zuordnen zu können.

wish
Interpreter für TCL/TK. Im Gegensatz zu tclsh können mit diesem Interpreter grafische Oberflächen erzeugt werden (wird z.B. in den Quellen des Linux-Kernel für make xconfig eingesetzt).

write
sendet Nachrichten auf Terminals anderer Nutzer.

wrjpgcom
schreibt Kommentare in JPEG-Dateien.

xargs
führt ein Kommando aus und setzt die Argumente aus denen auf der Kommandozeile und dem Text aus standard in zusammen.
echo dahinter | xargs echo davor führt dieses Kommando aus:
echo davor dahinter
über Parameter lassen sich noch komplexere Konstellationen einstellen.

xbmtopbm
wandelt ein X-Bitmap in ein PBM um.

xdfcopy, xdfformat
Tool, mit dem XDF-Disketten kopiert und formatiert werden können. XDF ist ein Diskettenformat, das 1840kB fassen kann.

ximtoppm, xpmtoppm
wandelt XIM oder XPM Bilder in PPM.

xwdtopnm
konvertiert X-Window-Dumps in PNM. (xwd kann benutzt werden, um einzelne Fenster oder den ganzen Bildschirminhalt eines X-Window abzufotografieren.

ybmtopbm
konvertiert Bennet Yee ``face'' Bilder in PBM.

yes
gibt den Buchstaben ``y'' aus, bis es unterbrochen wird. Das ist eine gute Methode allzu vorsichtige Programme ohne Unterbrechung durchlaufen zu lassen.

yuvsplittoppm, yuvtoppm
konvertiert Dateien, die Bilder im YUV-Format enthalten in PPM.

zcmp, zdiff
vergleicht komprimierte Dateien.

zdump
gibt die aktuelle Zeit aller angegebenen Zeitzonen aus.

zgrep, zegrep, zfgrep
durchsucht komprimierte Dateien. (siehe *grep)

zeisstopnm
wandelt Zeiss konfokale Bilder in PNM, PGM oder PPM um.

zforce
wie gzip, erzwingt aber die Endung .gz damit gzip nicht versuchen kann eine Datei 2x zu packen.

zip, zipcloak, zipnote, zipsplit
packt Dateien in eine .zip Datei (PK-Zip/WinZip kompatibel).

zipgrep
sucht Dateien in .zip-Archiven.

zipinfo
gibt detaillierte Informationen über ZIP-Archive aus.

zless, zmore
wie less/more, arbeitet aber auf gepackten Dateien.

znew
wandelt mit compress gepackte Dateien in mit gzip gepackte Dateien um.

Querfeldein durch /sbin

Im Gegensatz zu den Kapiteln über /bin und /usr/bin werde ich hier zu den Befehlen nur kurz beschreiben wozu sie gut sind. Es handelt sich hier um Befehle, die für die Administration des Systems da sind, also sollte man sich genau informieren, was ein Kommando bewirkt, bevor man auch nur daran denkt es einzusetzen -- schließlich arbeitet man mit diesen Kommandos als root.

``Ich bin /root, ich darf das.'' ist zwar korrekt, aber man sollte auch ``ich weiß, was ich tue.'' dazu sagen können und sich seiner Verantwortung bewußt sein. Linux ist ein Betriebssystem und kein Grafikadventure.

/sbin

Dies sind die ganz wichtigen Kommandos, die auch funktionieren müssen, wenn die Platte mit /usr drauf noch nicht gemountet ist. Als Tipp an alle, die Programme selbst kompilieren oder sogar eigene Daemonen schreiben: hier kommt alles rein, was direkt auf den Kern zugreift, im Rettungssystem benötigt wird oder bereits beim booten da sein muss.

MAKEDEV
erstellt Dateien unter /dev neu.

activate
setzt das Boot-Flag von Festplatten.

badblocks
checkt Festplatten nach fehlerhaften Sektoren durch.

cfdisk
Frontend zu fdisk.

depmod
ermittelt Abhängigkeiten zwischen Kernel-Modulen.

dosfsck
fsck für FAT-Dateisysteme.

dumpe2fs
gibt für ext2-Dateisysteme Informationen, wie Superblock und markierte fehlerhafte Blöcke, aus.

dumpreiserfs
gibt Informationen über ein ReiserFS aus.

fdisk
Partitionierungstool.

fsck
``FileSystemChecK'' -- checkt Dateisysteme nach Fehlern durch. Dieses Programm ruft die jeweiligen Varianten von fsck für das jeweilige Dateisystem auf.

e2fsck, fsck.ext2, fsck.minix, fsck.msdos, fsck.nfs, fsck.vfat, reiserfsck
fsck-Varianten für die jeweiligen Dateisysteme.

getty
gibt einen Login-Prompt auf dem angegebenen Terminal aus. Wird normalerweise von init aufgerufen.

halt
Synonym für shutdown -h now

hwclock
Zugriff auf die Hardware-Uhr des Rechners.

ifconfig
konfiguriert Netzwerk-Geräte (setzen von IP, Maske, usw.)

init
Basis-Prozess jedes Linux, wird als einziges Programm vom Kernel aufgerufen3.1.

insmod
lädt Module (Treiber) in den Kern (siehe auch modprobe).

ipchains, ipchains-restore, ipchains-save
Firewall-Konfiguration von Kernel 2.2.

isapnp
Konfiguraton für ISA-Karten mit PnP.

isdnctrl
Konfiguration und Kontrolle von ISDN-Karten.

kbdrate
setzt die Wiederholungsrate der Tastatur.

kerneld
kümmert sich um das Laden von Modulen auf Anfrage des Kerns (Konfigurationsdatei: /etc/modules.conf)

klogd
Kernel-Log-Daemon, schreibt Kernel-Meldungen ins System-Logbuch (siehe syslogd, /etc/syslog.conf und /var/log/*)

ksyms
zeigt exportierte Symbole des Kernels an

ldconfig
erstellt den Bibliotheks-Cache neu (muss aufgerufen werden, wenn /etc/ld.so.conf verändert wurde, das die Standardpfade für .so's (shared objects, DLL's) enthält, verändert wurde).

lilo
installiert den Boot-Loader LILO neu.

losetup
konfiguriert Loop-Devices (/dev/loopX).

lsmod
gibt geladene Module aus.

lspci
gibt alle erkannten PCI-Geräte aus.

mkfs
erstellt ein neues Dateisystem auf einem Datenträger (oder einer Datei), ruft die jeweiligen Varianten auf.

mkdosfs, mke2fs, mkfs.ext2, mkfs.minix, mkfs.msdos, mkfs.vfat, mkreiserfs
erstellen die jeweiligen Dateisysteme auf Datenträgern/Dateien.

mkswap
initialisiert Swap-Datenträger/-Dateien.

modinfo
zeigt Informationen über Module an.

modprobe
lädt Module in den Kernel (siehe auch insmod), beachtet aber Abhängigkeiten und lädt eventuell von diesem Modul benötigte Module ebenfalls.

plipconfig
konfiguriert PLIP (IP über Parallelport) Verbindungen.

pmap_dump
gibt alle registrierten RPC-Programme aus.

pmap_set
setzt die Liste von registrierten RPC-Programmen.

pnpdump
(siehe auch isapnp) gibt alle ISA-PnP-Geräte und ihre aktuelle Konfiguration aus.

portmap
RPC-Daemon.

poweroff
fährt das System herunter und schaltet es ab.

pump
konfiguriert eine Netzwerkkarte mit BOOTP oder DHCP

rarp
manipuliert die RARP-Tabelle3.2 des Systems.

reboot
fährt das System herunter und bootet neu.

resize_reiserfs
vergrößert/verkleinert ein ReiserFS (Vorsicht: beta!).

rmmod
entfernt ein Modul aus dem Kernel.

rmt
kontrolliert entfernte Bandlaufwerke.

route
zeigt an/verändert die Routing-Tabelle des Netzwerksubsystems des Kernels.

rpc.lockd, rpc.statd
Teil des NFS.

runlevel
zeigt aktuelles und vorheriges Runlevel an.

setpci
konfiguriert PCI-Karten.

sfdisk
Festplatten-Partitinierungsprogramm.

showmount
zeigt NFS-mounts an.

shutdown
steuert das Herunterfahren des Systems.

slattach
ordnet ein Netzwerk-Gerät einer seriellen Schnittstelle zu.

sulogin
wird von init im Single-User- oder Maintenance-Mode benutzt, um nur root das Einloggen zu erlauben.

swapoff, swapon
schaltet eine Swap-Platte/-Datei ab/an.

sysctl
Frontend für die Parameter, die über /proc/sys/* manipuliert werden können.

syslogd
Logbuch-Daemon. Fängt Meldungen von Kernel und Programmen ab und schreibt die in die jeweiligen Log-Dateien (/var/log/*), konfiguriert über /etc/syslog.conf .

telinit
schickt Mitteilungen an init (z.B. Runlevel-wechsel).

tune2fs
kann div. Parameter eines ext2-Dateisystems einstellen.

update
(von init aufgerufen) sorgt dafür, dass die Puffer der Festplatten regelmäßig synchronisiert werden.

/usr/sbin

ab
Apache Benchmark.

accessdb
gibt den Inhalt der man-Datenbank aus.

addgroup, adduser
fügt Nutzer/Gruppe zum System hinzu.

apache, apache-ssl
Apache HTTP-Daemon.

apache-sslconfig, apache-sslctl, apache.dbg, apacheconfig, apachectl
Konfiguration von Apache.

arp
manipuliert die ARP-Tabelle des Systems.

atd
At-Daemon, führt Aktionen exakt einmal zu einem konfigurierten Zeitpunkt aus.

atrun
führt At-Skripte aus (siehe atd).

chat
tauscht Daten mit einem Modem aus und initialisiert so z.B. eine Modem-Vernindung.

checkpc
überprüft die Einträge in /etc/printcap auf Korrektheit.

chpasswd
liest eine Datei mit User:Passwort-Paaren ein und macht automatisch die entsprechenden Änderungen.

chroot
öffnet das angegebene Verzeichnis als neues Root-Verzeichnis und öffnet darauf eine Shell, die Shell sieht damit nur einen Teil des gesamten Dateibaumes.

cron
führt Programme/Skripte regelmäßig aus (siehe crontab).

debugfs
ext2-Dateisystem-Debugger (für die Fälle, in denen fsck das Dateisystem nicht mehr reparieren kann).

dnskeygen
generiert Schlüsselpaare für Secure-DNS.

dpasswd
ändert dialup-Passworte (siehe login).

e2label
zeigt an/verändert Label von ext2-Partitionen.

exicyclog, exigrep, exim, exim-upgrade-to-r3, exim_dbmbuild, exim_dumpdb,
exim_fixdb, exim_lock, exim_tidydb, eximconfig, eximstats, exinext, exiqsumm, exiwhat
Exim Mail-Daemon Programme.

exportfs
manipuliert die Liste der exportierten NFS-Pfade (siehe /etc/exports).

fbset
manipuliert Einstellungen von Framebuffer-Devices.

gpm
Maustreiber für die Konsole.

groupadd, groupdel, groupmod
Gruppen hinzufügen, löschen oder verändern (siehe /etc/group).

grpconv, grpunconv
konvertiert zwischen normalen und Shadow-Passworten für Gruppen.

identd
implementiert das IDENT Protokoll (RFC 1413).

in.comsat
Biff-Server, bekommt Nachrichten über eingegangene eMail.

in.fingerd
Daemon für das finger-Protokoll.

in.talkd
talk-Daemon.

in.telnetd
Telnet-Daemon.

inetd
genereller Netzwerk-Daemon, ruft je nach Port unterschiedliche andere Daemonen auf, wenn eine Verbindung vorliegt.

ipmasqadm
Masquerading-Tool von IPChains.

keytab-lilo
generiert Tastaturtabellen für LILO

logoutd
sorgt dafür, dass die Login-Restriktionen aus /etc/security/time.conf eingehalten werden.

logresolve
Apache: löst für die Log-Dateien IP-Adressen in DNS-Namen auf

logrotate
sorgt für das Aufräumen und Komprimieren alter Log-Dateien.

lpc
Drucker-Kontroll-Programm -- manipuliert die Queues.

lpd
Drucker-Daemon.

lsof
listet auf, welche Prozesse eine Datei (Dateisystem, etc.) benutzen.

magicfilter, magicfilterconfig
wandelt beliebigen Input in ein Format, das der Drucker versteht.

mklost+found
ext2: generiert ein lost+found-Verzeichnis und reserviert schonmal Platz, damit fsck im Notfall keine neuen Blöcke reservieren muss.

modconf
Konfigurationstool für Linux-Module.

mysqld
MySQL-Server

named
BIND-Nameserver (DNS)

ndc
named-Kontrollprogramm

newusers
generiert neue Nutzer aus Parametern in einer ASCII-Datei.

nfsstat
NFS-Statistiken

nmbd
Samba: NETBIOS-Name-Server

nsupdate
schickt neue DNS-Informationen an Secure-DNS-Server

ntpd, ntpdate, ntptime, ntptimeset
Network-Time-Protocol Daemon und Tools.

paperconfig
setzt die Standardgröße für Papier im System.

pppd
PPP-Daemon

pppconfig, pppdump, pppstats
PPP-Utilities

pwck
testet Integrität von Passwort-Dateien

pwconv, pwunconv
konvertiert zwischen normalen und shadow-Passworten.

ramsize
setzt die Ram-Disk-Größe eines Kernelimage.

rdev
setzt das Root-Dateisystem eines Kernelimage.

readprofile
liest Kernel-Profiling-Informationen

rootflags
setzt zusätzliche Parameter zum Mounten des Root-Dateisystems in einem Kernel-Image.

rotatelogs
Archiviert Apache Log-Dateien.

rpc.mountd, rpc.nfsd
NFS-Server

rpc.yppasswdd, rpc.ypxfrd
Teil von NIS (YP, Yellow Pages)

rsmtp, runq
Exim-Tools.

safe_finger
sichert finger-Clients gegen Attacken durch finger-Server.

saned
Scanner-Daemon

sendmail
Mail-Daemon

smbd
Samba-Daemon

sshd
Secure-Shell-Server

swapdev
setzt Swap-Device in einem Kernel-Image.

tcpd
Security-Wrapper um TCP/IP-Programme, die über inetd aufgerufen werden.

tcpdchk
checkt die Konfiguration von tcpd

tcpdmatch
checkt, ob eine TCP/IP-Anfrage von tcpd abgelehnt würde.

tcpdump
gibt alle IP-Pakete aus, die auf einer Leitung empfangen werden.

texconfig
konfiguriert TEX

tickadj
Teil von NTP

traceroute
verfolgt die Router zurück, die auf dem Weg zu einem Host passiert werden.

tunelp
setzt Parameter des Parallelports

useradd, userdel, usermod
Nutzer hinzufügen, löschen, modifizieren.

vidmode
setzt den Standard-Grafikmodus eines Kernel-Image.

ypbind, yppoll, yppush, ypserv, ypset
NIS/YP-Tools

zic
Zeitzonen-Compiler, generiert Dateien, die Zeitzonen repräsentieren.


next up previous contents
Nächste Seite: Anhänge Aufwärts: Vortragsreihe der LUG Dresden Vorherige Seite: Inhalt   Inhalt
Konrad Rosenbaum 2001-03-01