GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Woher weiß ich, ob die Manpage, die ich mir ansehe, die richtige ist?

Zum Beispiel

[fakename]$ type echo
echo is a shell builtin

Aber man echo gibt mir die GNU Coreutils-Version von echo . Wie kann ich am einfachsten feststellen, ob die Manpage, die ich mir anschaue, die richtige ist, d. h. die für das Dienstprogramm, das ich erhalten würde, wenn ich es direkt aufrufen würde?

Akzeptierte Antwort:

Wirklich nicht. Nicht ohne Kenntnisse außerhalb der Manpage.

Im Fall von echo (und printf , und test , …), es ist oft eine eingebaute Shell, also müssen Sie das wissen und die Dokumentation der Shell lesen. (Und echo in verschiedenen Implementierungen notorisch unterschiedlich ist, verwenden Sie printf stattdessen.)

In den meisten, wenn nicht allen Shells, können Sie mit type command , z.B. type echo gibt echo is a shell builtin aus . (type wird von POSIX angegeben, aber z.B. fish unterstützt es auch, so nicht-POSIXy es auch ist.) In Bash würden Sie dann man bash lesen , die Online-Dokumentation oder verwenden Sie den eingebauten Befehl help (das spezifisch für Bash ist und von dem Sie wissen müssen, dass es existiert).

Auch wenn der Befehl nicht ist ein eingebautes, es ist möglich, dass es mehrere Befehle mit demselben Namen gibt, rename Dies ist ein berühmtes Beispiel (siehe Warum unterscheidet sich das Umbenennungsdienstprogramm auf Debian/Ubuntu von dem auf anderen Distributionen wie CentOS?). Jetzt sollte Ihr Betriebssystem die richtige Manpage für das tatsächlich installierte Dienstprogramm haben, und z. in Debian aktualisiert das „alternatives“-System die entsprechenden Manpages auch dann, wenn die Befehlsalternativen geändert werden. Aber wenn Sie eine Online-Manpage lesen, müssen Sie sich dessen bewusst sein.

Viele Dienstprogramme haben eine Befehlszeilenoption wie --version was Ihnen sagen könnte, welche Implementierung dieser Befehl ist. (Aber nicht fast alle Dienstprogramme haben es. Ich denke, es ist ursprünglich ein GNUismus, also haben es GNU-Dienstprogramme, ebenso wie diejenigen, die zufällig die Gewohnheit kopiert haben.) Im Fall von rename , funktioniert es zufällig, indem es zwei verschiedene Implementierungen auseinanderhält:

debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)

Außerdem könnte Ihr System einen Alias ​​oder eine Funktion mit dem gleichen Namen wie ein Dienstprogramm haben, normalerweise um das Verhalten des Dienstprogramms zu ändern. In diesem Fall gelten die in einer Manpage angezeigten Standardwerte möglicherweise nicht. Aliase für ls sind üblich, ebenso wie Aliase, die -i hinzufügen zu rm oder mv . Aber type foo würde Ihnen auch sagen, ob foo ist ein Alias ​​oder eine Funktion.

Verwandte:Warum kann ich die pgrep-Ausgabe nicht direkt in eine Variable im Bash-Skript umwandeln?
Linux
  1. Woher weiß ich, was die „Errno“ bedeutet?

  2. Wie finde ich die Version von Fedora, die ich verwende?

  3. Wie man CRON dazu bringt, die richtigen PATHs aufzurufen

  4. Woher weiß ich den Wert des eingebauten Makros in RPM?

  5. Keine Manpage für den cd-Befehl

So finden Sie die längste Manpage in Linux

So ändern Sie die Ausgabefarbe von „Echo“ in Linux

Wie füge ich Manpage-Einträge für die eigenen Power Tools hinzu?

Debian vs. Ubuntu:15 Dinge, die Sie wissen sollten, bevor Sie das Beste auswählen

Wie man die Gruppen eines Linux-Benutzers kennt

So fügen Sie der ONLYOFFICE-Startseite eine benutzerdefinierte Navigation hinzu