Durch meine Arbeit als Entwickler bin ich sehr viel mit der CLI (Command Line Interface) konfrontiert. Diese Text basierte Steuerung bietet einen doch sehr viel mehr Möglichkeiten als viele Apps mit schicken Oberflächen. Ich denke den meisten Entwicklern erzähl ich hier nichts Neues. Eine Sache, die jeder Entwickler allerdings kennt und früh lernt ist: Dokumentationen lesen. Auch auf der Kommandozeile gibt es zu Befehlen Dokumentationen, sogenannte Manpages. Auch ich weiß diese Manpages sehr zu schätzen habe mich aber immer gefragt was die kuriose Nummer hinter den Befehlen zu bedeuten hat. Jetzt habe ich das mal nachgeschaut und biete euch jetzt ein bisschen Klugscheißerwissen für Entwickler.
Manpage
Wie schon erwähnt gibt es für CLI Kommandos die Handbücher oder auch Manpages. Mit einem einfachen $ man <Befehl>
kann man so ganz schnell auf jedes Handbuch zugreifen und schnell die Funktion nachgucken.
Nun habe ich mich aber schon oft gefragt, was die Nummer in Klammern hinter dem Behfelsnamen wohl bedeuten mag. Oben im Screenshot sieht man ja in der ersten Zeile den Namen des Befehles echo und dahinter sofort die Zahl 1.
Die Antwort ist überraschend simpel: Das ist die Nummer der Kategorie in dem der Befehl eingeordnet ist.
Die Befehle, die wir im Terminal benutzen sind Teil der UNIX Umgebung und wurden u.A. im „Unix Programmer’s Manual“ beschrieben. Linux übernahm damals viele Konzepte von UNIX, wodurch die Befehle oftmals die gleichen sind. In dem Manual werden die Grundbefehle erklärt und in 8 Kategorien einsortiert:
- Commands
- System calls
- Subroutines
- Special files
- File formats and conventions
- Games
- Macro packages and language conventions
- Maintenance
Eine Einsortierung in Kategorien ist ja keine Neuheit bietet jetzt aber einen Vorteil. Durch die Kategorien kann man nun Befehle mit selben Namen erstellen und so auch verschiedene Manpages dafür anlegen. Ein Beispiel dafür ist z.B. der Befehl prinft
. Der Befehl besitzt zum einen in der Kategorie 1 „Commands“ eine Manpage, die den Befehl auf UNIX Ebene erklärt. Zugleich gibt es aber noch eine Implementierung in der libc, also der Standard C Library. Dadurch gibt es noch eine zweite Manpage in der dritten Kategorie „Subroutines“.
Somit kann man gezielt in einer Manpage nachschauen für die Implementierung, die man gerade verwendet. Der Befehl man
ruft allerdings die erste Manpage auf, die gefunden wir mit dem Namen. Man kann aber mit dem -s
Flag ganz einfach die Suche auf eine Kategorie beschränken.
$ man echo # Ruft ECHO(1) auf $ man printf # Ruft PRINTF(1) auf; equivalent zu `man -s 1 printf` $ man -s 3 printf # Ruft PRINTF(3) auf
So nun wisst ihr auch wofür die kleine Nummer steht und könnte beim Fachsimpeln mit den Kollegen etwas glänzen.