Aufzucht und Hege von Shell-Scripts: Befehle finden
Wie finde ich den Befehl, den ich brauche?
Wenn man sich eine Weile in der Shell herumtreibt, dann hat man auch einen Satz an Befehlen für alle möglichen Situationen im Kopf - aber längst nicht für alle. Und die verfügbaren Optionen aller Kommandos hat wohl niemand auswendig gelernt ;-) Die gute Nachricht: Auch das eigene System (nicht nur Google) bietet Möglichkeiten, um an solche Informationen heranzukommen:
- apropos Suchbegriff: Durchsucht die Kurzbeschreibungen der Manual-Pages nach dem Schlüsselwort und liefert eine Liste der zutreffenden Manuals. Oft sind die Listen sehr lang, dann versucht man eine Eingrenzung z. B. mit grep.
- man Befehl: Gibt die Manualpage des Befehls aus, inklusive der verfügbaren Optionen,
der Beschreibung, möglicher Returncodes, Beispiele und verwandter Kommandos. Die Manual-Pages sind meist einheitlich
gegliedert.
Manchmal sucht man ein Shell-Kommando, es wird aber z. B. das Manual eines C-Systemcall geliefert. In einem solchen Fall ruft man das man-Kommando mit der gewünschten Sektion auf: man 1 write (oder auf Unix-Systemen man -s 1 write). Welche Manuals in welchen Sektionen zu finden sind, verrät man man, hier stehen auch genaue Angaben zur Benutzung. - info Befehl: info ist der offizielle GNU-Weg, um Manuals auszuliefern und anzuzeigen. Ich persönlich mag das Ding nicht, mir gefällt man besser, aber manchmal kriegt man die vollständigen Informationen zu Kommandos nur über diesen Weg. Es gilt das Gleiche wie für man: Die Benutzung wird in info info genau erklärt.
Diese drei Kommandos sind also eigentlich die einzigen, die man wirklich kennen muss ;-) Die folgenden können aber auch nützlich sein, wenn man nicht genau weiß, womit man es zu tun hat:
- type Befehl: Liefert den Pfad, wenn es sich um ein Kommando handelt, dass im Suchpfad (Variable $PATH) liegt, liefert is a shell builtin für die Befehle, die in der Shell eingebaut wurden, liefert is a function für eine in der aktuellen Shell verfügbare Funktion, und is aliased to ... für in der Shell definierte Aliases (ein anderer Name für einen Befehl, optional mit vordefinierten Optionen).
- which Dateiname: Liefert den Pfad zu einer Datei, das im Suchpfad liegt. Ansonsten wird nichts ausgegeben.
- file /pfad/zur/datei: Liefert den Dateityp einer beliebigen Datei (z. B. Shellscript, ausführbare Datei, Text, ...). Die Angaben sind nicht 100% zuverlässig, da nicht der gesamte Dateiinhalt analysiert wird (Näheres siehe - genau: man file), aber für eine grobe Einstufung reicht das meist aus.

