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
- Wozu ist der Befehl?
- Wie ruft man die Hilfe auf?
- Welche Version liegt vor?
- Welche Datei wird ausgeführt?
- Was ist das für eine Datei?
- Welche Bibliotheken werden benötigt?
- Aus welchem Paket stammt die Datei?
- Was ist das für ein Paket?
- Ist das Paket installiert?
- Wo liegen ausführbare Dateien und Handbuchseiten?
- Welche Dateien enthält das Paket?
- Welche Abhängigkeiten hat das Paket?
- Warum ist das Paket installiert?
- Aus welchem Quellpaket wurde gebaut?
- Wie wird das Quellpaket geholt?
- Ausnahmen
- Browser
- Links
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-minimal → lsb-release → lsb → lsb-core → man_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 -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:
Links¶
Fehler melden – Allgemeiner Artikel zum Melden von Fehlern in Programmen
Paket finden – ein Bug dem Paket zuordnen, welches den Fehler hervorruft
Howto Übersicht aller Howto-Artikel