help
Zeigt Informationen zu integrierten Befehlen an. Was ist die Quelle der Hilfe? Verwaltet es eine Datenbank für integrierte Befehle oder liest es einige Dateien der einzelnen integrierten Befehle (ähnlich der Manpage der einzelnen Dienstprogramme)?
Manchmal finde ich, dass seine Informationen das zu erweitern scheinen --help
$ cd --help
bash: cd: --: invalid option
cd: usage: cd [-L|[-P [-e]]] [dir]
$ help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars' is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L' were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
Ich dachte, help
extrahieren Sie den Hilfeteil der ausführbaren Datei, aber für ein Python-Skript pdf-merge.py ist dies nicht der Fall
$ help ./pdf-merge.py
bash: help: no help topics match `./pdf-merge.py'. Try `help help' or `man -k ./pdf-merge.py' or `info ./pdf-merge.py'.
$ ./pdf-merge.py --help
usage: pdf-merge.py [-h] [-v] [--ask] [--output OUTPUT] [--title TITLE]
[--author AUTHOR] [--keyword KEYWORD] [--pdftk PDFTK]
[--gs GS] [--pdfmarks PDFMARKS] [--unicode]
PDF [PDF ...]
Merge PDFs preserving bookmarks. Thanks to Larry Cai for suggesting that
Unicode be supported and for discussion about the `--pdfmarks` option.
positional arguments:
PDF an input PDF to merge
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
--ask pause for manual pdfmark tweaking
--output OUTPUT name of the output PDF
--title TITLE title of output PDF
--author AUTHOR author of output PDF
--keyword KEYWORD keywords for the output PDF
--pdftk PDFTK path to the pdftk executable
--gs GS path to the gs (Ghostscript) executable
--pdfmarks PDFMARKS path to pdfmarks file. If not given, a temporary file
is used. If given and the file is missing, execution
will stop after the file is created (before the
Ghostscript run). If given and the file exists, no
attempt will be make to use pdftk to generate the mark
file (I assume your input file is what you want).
--unicode instead of merging PDFs, convert PDF-formatted unicode
strings. For example `--unicode '<FEFF03B103B203B3>'
\u03b1\u03b2\u03b3`
cd
hat keine--help
Option. Was Sie sehen, ist die grundlegende Verwendungsmeldung, die Sie erhalten, wenn Sie versuchen, ein ungültiges Optionsflag zu verwenden.man
Befehl und in Systemen, die ihn unterstützen, deninfo
Befehl.Antworten:
help
ist eine eingebaute Bash und bietet Ihnen nur die Details anderer eingebauter Bashs aus der Buildtime.Die Quelle für
help
wird zur Kompilierungszeit aus dendef
Dateien in den integrierten Verzeichnissen des Bash-Quellbaums generiert . Wenn man sich die aussieht Quellcode Hilfe undcd
Sie werden feststellen , dass der Informationsteil ist$SHORT_DOC
.help
verwendet ein Array, das aufgerufen wird,shell_builtins
um auf die Informationen zuzugreifen.quelle
strings /bin/bash | grep 'Change the current directory to DIR'
help cd
undcd --help
sind grundlegend anders.help
ist ein in die Shell integrierter Befehl, der Informationen zu anderen in die Shell integrierten Befehlen enthält. Dies bedeutet, dass es sich nicht um eigene ausführbare Dateien handelt, sondern um Funktionen von zbash
. Dies kann etwas verwirrend sein, da einige integrierte Befehle auch eigenständige ausführbare Versionen haben. In diesem Fall haben sie normalerweise eine eigene Handbuchseite und legen auf Anfrage einen ausführbaren Pfad offenwhich [command]
. Die Informationen in der Manpage oder von[command] --help
beziehen sich auf die ausführbare Datei. Die Informationen vonhelp [command]
sind für die eingebauten, aber hoffentlich sind sie mehr oder weniger gleich. Wenn Sie nach einer Manpage für einen Befehl suchen, der nur integriert ist, erhalten Sie wahrscheinlich eine Seite für die Shell, auf der alle integrierten Befehle aufgelistet sind.--help
(einschließlich der Kurzform-h
) ist nur eine herkömmliche Bezeichnung für eine Befehlszeilenoption für eine ausführbare Datei. Viele, aber nicht alle CLI-Tools implementieren dies, sind jedoch nicht daran gebunden, und die bereitgestellten Informationen hängen vollständig von der Implementierung ab. Wenn Sie--help
eine integrierte Shell aufrufen , erhalten Sie wahrscheinlich die Meldung "Ungültige Option" und eine kurze Meldung "Verwendung". Wenn Sie es auf einem Standalone-Gerät aufrufen, das es nicht implementiert, erhalten Sie möglicherweise auch eine "ungültige Option". Was genau jedoch erneut passiert, hängt von der Anwendung ab.Wenn sowohl integrierte als auch eigenständige Versionen eines Befehls verfügbar sind und Sie wissen möchten, welche beim Aufrufen verwendet wird, können Sie eine
type
andere integrierte Shell verwenden.Hier können wir sehen, dass, obwohl es eine eigenständige ausführbare Datei gibt
echo
, die vonecho
Ihrer Shell aufgerufene Datei eine integrierte ist.quelle
type
zweimalige Eingabe erforderlich: Gibttype -a echo
alle Aufrufe inecho
Ihre Reichweite zurück (wie durch $ PATH definiert), einschließlich eingebauter Funktionen, Shell-Funktionen und Aliase. Siehehelp type
als Referenz.Sie haben bereits Ihre eigene Frage beantwortet:
Hilfe ist ein BUILTIN-Befehl (bedeutet, bash interner Befehl), um Informationen über andere eingebaute Befehle abzurufen. Seit diesem dritten Teil ist das Skript kein eingebauter Befehl von bash. Wenn Sie ausführen
bash
, rufen Sie das eingebaute System aufhelp
, dasstrace
Sie erhalten:Ziemlich genau bedeutet, dass diese Informationen zur Erstellungszeit innerhalb der Bash-Binärdatei generiert werden.
quelle
cd
?strace
ist ein Tool, mit dem Sie sehen können, was ein bestimmter Befehl während der Ausführung tut (Bibliotheken, Systemaufrufe, geöffnete Dateien usw.). Die Methodewrite
zeigt, dass die Hilfeinformationen aus der Binärdatei (bash) stammen, während der eingebaute Befehl help verwendet wird, und nicht aus dem Öffnen einer Datei (wie einer Manpage).Ich glaube --help ist Teil der ausführbaren Datei, es muss dort implementiert werden. Aus diesem Grund sehen Sie verschiedene Versionen von --help, manchmal ist -h Kurzschrift erlaubt, andere ist die nicht vorangestellte "Hilfe" ...
Bearbeiten
Ich habe einen Teil Ihrer Frage falsch verstanden. Ich bin mit dem Innenleben des "Hilfe" -Befehls selbst nicht vertraut.
quelle
help
die Informationen eines anderen Befehls?