help Muestra información sobre los comandos incorporados. ¿Cuál es la fuente de ayuda? ¿Mantiene una base de datos para los comandos incorporados o lee algunos archivos de cada comando incorporado (similar a la página de manual de cada utilidad)?
A veces encuentro que su información parece expandir eso al --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.
Pensé helpextraer la parte de ayuda del ejecutable, pero para un script de python pdf-merge.py , no es
$ 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`

cdno tiene una--helpopción. Lo que está viendo es el mensaje de uso básico que recibe cuando intenta utilizar un indicador de opción no válido.mancomando, y en los sistemas que lo admiten, elinfocomando.Respuestas:
helpes un bash builtin y solo le proporciona los detalles de otros bash builtins desde el momento de la compilación.El origen de
helpse genera en tiempo de compilación a partir de losdefarchivos en los directorios incorporados del árbol de origen de bash. Si mira el código fuente de ayuda ycdnotará que la información es parte de$SHORT_DOC.helpusa una matriz llamadashell_builtinspara acceder a la información.fuente
strings /bin/bash | grep 'Change the current directory to DIR'help cdycd --helpson fundamentalmente diferenteshelpes un comando integrado en la carcasa, y proporciona información acerca de otros comandos que se construyen en la cáscara , lo que significa, que no son ejecutables de los suyos, que son características de, por ejemplo,bash. Esto puede ser un poco confuso ya que algunos comandos incorporados también tienen versiones ejecutables independientes. En este caso, generalmente tienen su propia página de manual y expondrán una ruta ejecutable si lo solicitawhich [command]. La información en la página de manual, o de[command] --helpes para el ejecutable; La información dehelp [command]es para el incorporado, pero con suerte son más o menos lo mismo. Si busca una página de manual para un comando que es solo integrado, probablemente obtendrá una página para el shell que enumera todos sus comandos integrados.--help(incluida la forma abreviada-h) es solo una etiqueta convencional para una opción de línea de comando para un ejecutable. Muchas, pero no todas, las herramientas CLI implementan esto, pero no están vinculadas y la información proporcionada depende completamente de la implementación. Si invoca--helpen un shell integrado, es probable que obtenga una "opción no válida" y un breve mensaje de "uso". Si lo invoca de forma independiente y no lo implementa, también puede obtener una "opción no válida", pero lo que sucede nuevamente depende de la aplicación.Si hay versiones integradas y autónomas de un comando disponibles y desea saber cuál se usa cuando lo invoca, puede usar
typeotro shell incorporado.Aquí podemos ver que, aunque hay un ejecutable independiente
echo, elechoshell que invoca está integrado.fuente
typedos veces:type -a echodevuelve todas las llamadas aechosu alcance (según lo definido por $ PATH), incluidas las funciones incorporadas, las funciones de shell y los alias. Verhelp typepara referencia.Ya respondiste tu propia pregunta:
La ayuda es un comando BUILTIN (significa comando interno bash) para obtener información de otros comandos incorporados. Dado que este script de tercera parte no es un comando incorporado de bash. Si corre
bash, llame alhelpuso internostraceque obtendrá:Prácticamente significa que esta información se genera en tiempo de compilación dentro del binario bash.
fuente
cd?stracees una herramienta para ver qué hace un comando determinado mientras está en ejecución (bibliotecas, llamadas al sistema, archivos abiertos, etc.). El métodowritemuestra que la información de ayuda proviene del interior del binario (bash) mientras se usa el comando de ayuda incorporado, y no de la apertura de un archivo (como una página de manual).Creo que --help es parte del ejecutable, debe implementarse allí. Es por eso que ves diferentes versiones de --help, a veces --h se permite la taquigrafía, otras es la "ayuda" sin prefijo ...
Editar
Leí mal parte de tu pregunta. No estoy familiarizado con ninguno de los mecanismos internos del comando de "ayuda".
fuente
helpla información de otro comando?