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é help
extraer 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`
cd
no tiene una--help
opció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.man
comando, y en los sistemas que lo admiten, elinfo
comando.Respuestas:
help
es un bash builtin y solo le proporciona los detalles de otros bash builtins desde el momento de la compilación.El origen de
help
se genera en tiempo de compilación a partir de losdef
archivos en los directorios incorporados del árbol de origen de bash. Si mira el código fuente de ayuda ycd
notará que la información es parte de$SHORT_DOC
.help
usa una matriz llamadashell_builtins
para acceder a la información.fuente
strings /bin/bash | grep 'Change the current directory to DIR'
help cd
ycd --help
son fundamentalmente diferenteshelp
es 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] --help
es 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--help
en 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
type
otro shell incorporado.Aquí podemos ver que, aunque hay un ejecutable independiente
echo
, elecho
shell que invoca está integrado.fuente
type
dos veces:type -a echo
devuelve todas las llamadas aecho
su alcance (según lo definido por $ PATH), incluidas las funciones incorporadas, las funciones de shell y los alias. Verhelp type
para 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 alhelp
uso internostrace
que obtendrá:Prácticamente significa que esta información se genera en tiempo de compilación dentro del binario bash.
fuente
cd
?strace
es una herramienta para ver qué hace un comando determinado mientras está en ejecución (bibliotecas, llamadas al sistema, archivos abiertos, etc.). El métodowrite
muestra 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
help
la información de otro comando?