Si no, ¿hay un estándar de facto? Básicamente, estoy escribiendo un texto de ayuda de línea de comando como este:
usage: app_name [options] required_input required_input2
options:
-a, --argument Does something
-b required Does something with "required"
-c, --command required Something else
-d [optlistitem1 optlistitem 2 ... ] Something with list
Lo hice básicamente leyendo el texto de ayuda de varias herramientas, pero ¿hay una lista de pautas o algo así? Por ejemplo, ¿uso corchetes o paréntesis? ¿Cómo usar el espaciado? ¿Qué pasa si el argumento es una lista? ¡Gracias!
--help
debería verse la salida de . Pero ambas preguntas son un buen candidato para una fusión.Respuestas:
Por lo general, su resultado de ayuda debe incluir:
[options]
para indicar a dónde van las opcionesarg_name
para un argumento requerido, singular[arg_name]
para un argumento opcional, singulararg_name...
para un argumento requerido del cual puede haber muchos (esto es raro)[arg_name...]
para un argumento para el cual se puede suministrar cualquier númeroarg_name
debe ser un nombre corto descriptivo, en minúsculas, caso de serpiente-l
) o uno largo (por ejemplo--list
), inclúyalos juntos en la misma línea, ya que sus descripciones serán las mismas.GREP_OPTS
Tenga en cuenta además que es una buena forma de aceptar ambos
-h
y--help
activar este mensaje y que debe mostrar este mensaje si el usuario confunde la sintaxis de la línea de comandos, por ejemplo, omite un argumento requerido.fuente
usage: move (+|-)pixels
es decir, cuando uno de+
o-
es obligatorio ? (Sé que puedo tener 2 líneas de uso, pero me gusta la idea de duplicarlas con cada nuevo argumento). ¿Puedes pensar en un ejemplo de una herramienta estándar?{a|b|c|...}
en las secciones de ayuda para guiones de servicio SysV / advenedizos, que requieren un argumento singular que es uno dea
,b
,c
, etc. Por ejemplo,service sddm
y sin un argumento en mi sistema imprimeUsage: /etc/init.d/sddm {start|stop|status|restart|try-restart|force-reload}
. Entonces, la mayoría de la gente probablemente lo entenderíausage: move {+|-}pixels}
, especialmente si se da un ejemplo:example: move +5
Echa un vistazo a docopt . Es un estándar formal para documentar (y analizar automáticamente) argumentos de línea de comando.
Por ejemplo...
fuente
Creo que no hay una sintaxis estándar para el uso de la línea de comandos, pero la mayoría usa esta convención:
Sintaxis de línea de comandos de Microsoft , IBM tiene una sintaxis de línea de comandos similar
Text without brackets or braces
Elementos que debe escribir como se muestra
<Text inside angle brackets>
Marcador de posición para el que debe proporcionar un valor
[Text inside square brackets]
Elementos opcionales
{Text inside braces}
Conjunto de artículos requeridos; elige uno
Barra vertical
{a|b}
Separador para artículos mutuamente excluyentes; elige uno
Elipsis
<file> …
Artículos que pueden repetirse
fuente
Estamos ejecutando Linux, un sistema operativo en su mayoría compatible con POSIX. Los estándares POSIX deberían ser: Sintaxis de argumento de utilidad .
-o
.-o argument
o-oargument
.-lst
es equivalente a-t -l -s
.-lst
es equivalente a-tls
.-lst
opción : no opción.--
argumento termina las opciones.-
opción se usa generalmente para representar una de las secuencias de entrada estándar.fuente
man aptitude
que da salida a esta (entre otras cosas):aptitude [<options>...] {add-user-tag | remove-user-tag} <tag> <packages>...
. Contiene {y} para enlazar comandos obligatorios alternativos. Creo que (y) podrían usarse para lo mismo como se usan en docopt .Microsoft tiene su propia especificación estándar de línea de comandos :
fuente
-?
,-Help
,-Version
, etc.). La respuesta de IMO Steely Wing está más cerca de la marca.El estándar de codificación GNU es una buena referencia para cosas como esta. Esta sección trata de la salida de
--help
. En este caso no es muy específico. Probablemente no pueda equivocarse al imprimir una tabla que muestra las opciones cortas y largas y una descripción sucinta. Intente obtener el espacio entre todos los argumentos correctos para la legibilidad. Probablemente desee proporcionar unaman
página (y posiblemente uninfo
manual) para que su herramienta proporcione una explicación más elaborada.fuente
Sí, estás en el camino correcto.
Sí, los corchetes son el indicador habitual para artículos opcionales.
Normalmente, como ha esbozado, hay un resumen de la línea de comandos en la parte superior, seguido de detalles, idealmente con muestras para cada opción. (Su ejemplo muestra líneas entre la descripción de cada opción, pero supongo que se trata de un problema de edición, y que su programa real genera listados de opciones sangrados sin líneas en blanco. Este sería el estándar a seguir en cualquier caso).
Una tendencia más nueva, (¿tal vez hay una especificación POSIX que aborda esto?), Es la eliminación del sistema de páginas de manual para la documentación, e incluye toda la información que estaría en una página de manual como parte de la
program --help
salida. Este extra incluirá descripciones más largas, conceptos explicados, ejemplos de uso, limitaciones y errores conocidos, cómo informar un error y, posiblemente, una sección 'ver también' para los comandos relacionados.Espero que esto ayude.
fuente
-h|--help
debe ser solo una referencia resumida. También puede incluir documentación más completa (tutoriales, etc.) en páginas HTML o de información. ¡Pero la página de manual debería estar allí!someCommand --help
en mi shell, todo lo que necesito es un pequeño recordatorio del orden preciso en el que entran los argumentos, no una franja gigante de texto que llena la pantalla, lo que requiere que lo coloqueless
solo para verlo todo. La página de manual debe ser donde colocas la descripción detallada larga, no el texto de ayuda.Seguiría proyectos oficiales como el alquitrán como ejemplo. En mi opinión ayuda msg. debe ser lo más simple y descriptivo posible. Los ejemplos de uso también son buenos. No hay una necesidad real de "ayuda estándar".
fuente
tar
... si alguien va a hacer una utilidad divina para todo, como tar, haga que los interruptores cortos sean memorables e incluya una sección de "uso de ejemplo" en el--help
. El 90% del tiempo que miro las instrucciones del alquitrán es para extraer un simpletar.gz
.