ubuntuusers.de

Informationen zu einem Befehl

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von dirkolus am 19.02.2018 unter Kubuntu 17.10 erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Was macht eigentlich der Befehl XYZ, warum ist er auf dem System vorhanden? Wie bekomme ich dazu Hilfe und weitere Informationen? Diese Fragestellungen können u.a. in Bezug auf das Fehler melden bzw. Paket finden wichtig sein.

Am Beispiel des Befehls man wird hier gezeigt, welche Informationen zu einem Befehl in Erfahrung gebracht werden können. Die Anleitung sollte sich leicht auf andere Dateien und Pakete übertragen lassen. Zum Verständnis sollte der Leser die Schritte im Terminal einmal durchspielen und sich über die verwendeten Befehle ggf. weiter informieren. Die gestellten Fragen und Antworten bauen (teils) aufeinander auf.

Ergänzungen sind willkommen, es sollte aber beachtet werden, dass alle Befehlsaufrufe auf einem System mit Minimalinstallation funktionieren sollen. So bleibt das Howto leicht zu pflegen.

Terminal

man ist ein Terminalprogramm und im Terminal können weitere Informationen darüber abgerufen werden.[1]

Wozu ist der Befehl?

whatis liefert eine Liste der Handbuchseiten zu einem Befehl:

whatis man 
man (1)              - eine Oberfläche für die Online-Referenzhandbücher
man (7)              - macros to format man pages

Wie ruft man die Hilfe auf?

Wie bei vielen Programmen wird die Hilfe angezeigt mit:

man --help 

Alternative(n) zu --help: In diesem Fall -?, bei anderen Befehlen aber z.B. -help oder -h (evtl. lediglich ein oder zwei von allen hier aufgeführten Optionen).

man ruft die Handbuchseite („manpage“) eines Befehls auf.[2]

Die Handbuchseiten zu man werden geöffnet mit:

man man 

oder

man 7 man 

wenn es zu einem Begriff in mehreren Sektionen des Handbuchs passende Seiten gibt und man eine bestimmte davon aufrufen möchte.

Eine andere, weniger verbreitete Art der Hilfe, wird mit dem Befehl info aufgerufen. Gibt es keine spezielle Infoseite, werden die Handbuchseiten aufgerufen. Die Seiten (bei man also eins und sieben) werden in diesem Fall zusammengeführt, ebenso die etwaigen Sprachversionen:

info man 

Mit der Taste Q schließt man die Handbuch- bzw. Infoseiten und kommt wieder zur normalen Terminal-Ansicht zurück.

Welche Version liegt vor?

Die meisten Befehle geben ihre eigene Version wieder, wenn sie mit der Option --version aufgerufen werden:

man --version 

man 2.6.7.1

Alternative(n) zu --version: In diesem Fall -V, bei anderen Befehlen aber z.B. -version oder -v (evtl. lediglich ein oder zwei von allen hier aufgeführten Optionen).

Welche Datei wird ausgeführt?

which man 

/usr/bin/man

Sie liegt also in einem Verzeichnis, von dem aus sie systemweit ausführbar sein sollte.

ls -l /usr/bin/man 

-rwxr-xr-x 1 root root 107008 Sep 23 18:43 /usr/bin/man

Die Datei gehört dem Systembenutzer root, kann aber von jedem Benutzer ausgeführt werden. Dies erkennt man an der symbolischen Darstellung der Rechte. Somit können alle Benutzer Handbuchseiten lesen.

Ausführliche Informationen zu Rechten, Benutzer und Gruppe, Größe, Zugriff und so weiter liefert:

stat /usr/bin/man 

Dabei kennt stat verschiedene Formatierungen, so dass einzelne Werte abgefragt werden können; z.B. die Rechte in oktaler Schreibweise mit:

stat --format=%a /usr/bin/man 

Was ist das für eine Datei?

file /usr/bin/man 

/usr/bin/man: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=f421457c024fcd196f0ac9ccfc8796f59bddb3c4, stripped

Es handelt sich also um eine Binärdatei (ELF). Sie wurde dynamisch gelinkt und benötigt daher gemeinsam genutzte Bibliotheken.

Welche Bibliotheken werden benötigt?

Folgender Befehl gibt die benötigten gemeinsam genutzten Bibliotheken aus:

ldd /usr/bin/man 

Aus welchem Paket stammt die Datei?

dpkg-query --search /usr/bin/man 

man-db: /usr/bin/man

Es gibt also nur ein Paket, das die gesuchte Datei enthält: man-db, siehe auch dpkg-query.

Falls das Paket man-db hingegen nicht installiert wäre und man das zu installierende Paket für die Datei /usr/bin/man trotzdem herausbekommen mögen würde, dann könnte man alternativ apt-file (muss evt. zusätzlich via gleichn. Paket installiert werden) benutzen:

apt-file search /usr/bin/man 

Falls man bei nicht installierten Programmen nur den Programm- bzw. Befehlsnamen kennt, so kann man es einfach mit diesem ohne Pfadangabe probieren:

apt-file search man 

Allerdings wäre im Falle von man die Ausgabe so lang, dass sie damit unbrauchbar wäre. Also sollte man stattdessen hilfsweise mehrere mögliche Dateipfade probieren, in diesem Fall also /usr/bin/man, /usr/sbin/man, /bin/man, sbin/man.

Als Alternative zum Ausprobieren möglicher Dateipfade kann man aber auch wieder nur nach dem Programm- bzw. Befehlsnamen suchen lassen und dabei die Ausgabe verkürzen, indem man grep zur Filterung verwendet. In diesem Fall geschieht das gleich doppelt, indem zuerst Zeilen mit der Zeichenkette share unterdrückt und danach nur Zeilen mit dem Regulären Audruck /man durchgelassen werden:

apt-file search man | grep -vw share | grep -E '\/man$' 

erlang-mode: /usr/lib/erlang/man
hollywood: /usr/lib/hollywood/man
lam4-dev: /usr/lib/lam/man
man-db: /usr/bin/man
man-db: /usr/lib/man-db/man

Was ist das für ein Paket?

Programmbeschreibung und Paketinformationen zeigt apt-cache, z.B. mit:

apt-cache show man-db 

Ist das Paket installiert?

dpkg -l man-db 

ii  man-db         2.6.7.1-1ubu amd64        on-line manual pager

Der Status ii zeigt, das Paket ist installiert, siehe auch dpkg.

Wo liegen ausführbare Dateien und Handbuchseiten?

whereis man 

man: /usr/bin/man /usr/local/man /usr/share/man /usr/share/man/man1/man.1.gz /usr/share/man/man7/man.7.gz

Welche Dateien enthält das Paket?

dpkg -L man-db 

Das Paket enthält die Handbuchseiten (-datenbank) sowie Programme und Bibliotheken dazu.

Falls das Paket man-db hingegen nicht installiert wäre und man sich trotzdem die in ihm enthaltenden Dateien auflisten lassen mögen würde, dann könnte man wieder alternativ apt-file benutzen:

apt-file list man-db 

Welche Abhängigkeiten hat das Paket?

Da der Befehl gemeinsam genutzte Bibliotheken voraussetzt, hat das Paket Abhängigkeiten.

apt-cache depends man-db 

Warum ist das Paket installiert?

Das Paket wird von einem anderen Paket als Abhängigkeit installiert:

apt-cache rdepends man-db 

oder

apt-cache showpkg man-db 

Die beiden Befehle zeigen, dass viele andere Pakete man-db voraussetzen. Darunter ist auch das Paket lsb-core – also der Kern der „Linux Standard Base“ von Debian und damit elementarer Bestandteil von Ubuntu. Genau genommen sind dies die Abhängigkeiten, durch die man auf jedem Ubuntu vorhanden ist:

  • ubuntu-minimallsb-releaselsblsb-coreman_db =⇒ man

Aus welchem Quellpaket wurde gebaut?

apt-cache showsrc man-db 

Package: man-db
[...]

Die Namen von Quell- und Binärpaket sind in diesem Fall identisch.

Wie wird das Quellpaket geholt?

apt-get source man-db 

Mit diesem Aufruf von apt-get wird das Quellpaket heruntergeladen und entpackt.

Ausnahmen

Shell Builtin

Bei einem Shell Builtin wie beispielsweise unset wird der Aufruf von which unset kein Ergebnis liefern. Dass unset von der Shell mitgeliefert wurde, beweist:

type unset 

unset ist eine von der Shell mitgelieferte Funktion.

Hilfe zu einem Builtin liefert die eingebaute Hilfe der Shell:

help unset 

Welche Shell gerade benutzt wird, zeigt:

which $0 

Alias

Ein Befehlsalias wird wie ein Shell Builtin entlarvt:

type grep 

grep ist ein Alias von »grep --color=auto«.

Befehl nicht bekannt

Fenster

Zum Befehl, der ein Fenster gestartet hat, bekommt man den Namen des Programms via Kommando xprop mit:

xprop WM_CLASS 

Der Mauszeiger wird nun zu einem Fadenkreuz, mit dem man nun auf das Fenster der betroffenen Anwendung linke Maustaste-klickt.

Aus der Ausgabe kann man in der Regel auf den Dateinamen schließen.

Terminal

Der Befehl apropos liefert eine Liste mit Handbuchseiten zu einem Stichwort.

apropos kate 

kate (1)             - Erweiterter Texteditor von KDE

Prozesse

Alternativ kann man mit einer ganzen Reihen von Programmen die laufenden Prozesse betrachten und so Rückschlüsse auf den Namen der Anwendung ziehen. Informationen hierzu findet man unter Prozesse im Wiki.

Browser

Auch im Browser können Informationen zu Befehlen und Paketen abgerufen werden.[3]

Handbuchseiten online

Die Handbuchseiten werden für alle Ubuntu Versionen in allen verfügbaren Übersetzungen auch online bereitgestellt:

Um die Handbuchseiten auf einem eigenen Server bereitzustellen gibt es:

Umfassende Informationen zu Paketen

In der Ubuntu Paket Suche können Informationen zu allen Paketen und Quellpaketen aus allen Ubuntu Versionen abgerufen werden. Die Suchkriterien sind vielfältig und es kann auch nach Dateien und mit verschiedenen Suchmustern gesucht werden:

Diese Revision wurde am 19. Februar 2018 00:33 von dirkolus erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Howto