Convención / estándar sobre el uso de llaves alrededor de las opciones


9

La página de manual para tar en la sección SINOPSIS de Arch Linux comienza con:

tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]

Entiendo perfectamente que en esta situación significa que se debe dar exactamente una de las opciones en las llaves porque se dice más abajo en la página del manual. ¿Existe algún tipo de estándar o convención sobre el uso de {} en torno a una lista de opciones mutuamente excluyentes?

Todo lo que puedo encontrar es un tutorial grupal del usuarioman de 1998 donde dice:

Algunas opciones tendrán una lista limitada de opciones. Una lista de opciones estará separada por comas y puesta entre llaves.

{opción1, opción2} {sí, no}

Parece que cada convención (como esta del Grupo abierto ) o la página del manual describe solo corchetes ([) o líneas verticales (|).


1
Por lo general, creo <>que es obligatorio, pero supongo que está reservado para los argumentos en lugar de las opciones. Contador: la versión de Ubuntu de la página de manual de GNU tar ( manpages.ubuntu.com/manpages/trusty/en/man1/tar.1.html , por ejemplo ) no usa este formulario, ni linux.die.net/man/ 1 / tar o Debian . Creo que podría estar viendo la página de manual de BSD tar, por lo que si existe una convención, podría ser algo de BSD.
Muru

aguas arriba para arch man-pages es man7.org , la página tar es exactamente la misma man7.org/linux/man-pages/man1/tar.1.html .
umbasa

2
Siempre pensé que la sintaxis de la línea de comando salió de ENBF , pero {} en ENBF significa exactamente lo contrario (repetición de argumento en lugar de una opción posible como en una situación de tar). Intenté buscar la sintaxis de Google {} con el objetivo de Windows y parece que {} es muy común en Windows, incluso tiene una descripción en Technet . Suspiro, tal vez estoy tratando demasiado de encontrar la verdad.
umbasa

Respuestas:


4

Esta es una gran pregunta (y aún está abierta 3 años después). Creo que la respuesta ahora se responde oficialmente en este documento de Google :

  • Artículos requeridos: sin backets
  • Artículos opcionales mutuamente excluyentes: corchetes, tubería delimitada
  • Artículos necesarios mutuamente excluyentes: llaves, tubo delimitado

1

¿Hay algún tipo de estándar o convención sobre el uso de {} alrededor de la lista de opciones mutuamente excluyentes?

Estaba investigando la importancia del significado de las opciones que se especifican entre llaves ({}) frente a las opciones especificadas entre corchetes ([]) cuando me encontré con su pregunta. Fue la única fuente de información que encontré útil con respecto a lo que estaba tratando de entender, a saber, por qué las opciones se indican entre llaves.

Como escribiste:

Entiendo perfectamente que en esta situación significa que se debe dar exactamente uno de ellos ...

Al leer la página de manual de netstat, llegué a la conclusión de que las opciones eran aquellas opciones disponibles para usar con un comando que debe usarse / establecerse antes de usar cualquier otra opción que pueda aparecer en la lista con el comando Y exactamente solo una de las opciones enumeradas separados por la barra vertical se puede utilizar.

Un ejemplo de lo anterior se puede encontrar en la página del manual para el comando netstat:

netstat {--route | -r} [dirección_opciones_familiares] [--extend | -e [- extend | -e]] [--verbose | -v] [--numeric | -n] [--numeric-hosts ] [- puertos numéricos] [- puertos numéricos] [- continuo | -c] [retraso]

Fuente: netstat (8) | Página de manual de Linux

En esencia, uno puede usar exactamente uno de --route o -r (significan lo mismo) pero la opción debe preceder a las otras opciones enumeradas.

Solo me tomé el tiempo para responder a su pregunta porque la pregunta parece estar abierta, pero me parece que respondió su propia pregunta :)

Una convención es simplemente una práctica ampliamente establecida. Ya sea que se indique explícitamente o no, el hecho de que encuentre los documentos man regularmente en este formato indica que la convención (suponiendo que lo dije correctamente anteriormente) está firmemente establecida.

¿Hay un "estándar"? Para mí, eso depende de qué definición quieras adoptar para "estándar". Para mí, hay poca o ninguna distinción entre el significado de las palabras convención y estándar, en el sentido de que estamos usando el término aquí. En este sentido, considero que las dos palabras significan algo similar a "algo que se acuerda mutuamente, se usa y acepta como norma".

Gracias por su tiempo en ayudarme a comprender esta convención / estándar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.