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!

--helpdeberí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_namepara 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_namedebe 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_OPTSTenga en cuenta además que es una buena forma de aceptar ambos
-hy--helpactivar 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 (+|-)pixelses 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 sddmy 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 +5Echa 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 bracesElementos 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 argumento-oargument.-lstes equivalente a-t -l -s.-lstes equivalente a-tls.-lstopció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 aptitudeque 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 unamanpágina (y posiblemente uninfomanual) 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 --helpsalida. 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|--helpdebe 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 --helpen 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 coloquelesssolo 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.