¿Cuáles son las diferencias entre "-" y "-" en los comandos?

Respuestas:

15

Es una cuestión de convención. Los programas estándar POSIX generalmente solo tienen opciones de un solo carácter, y todos tienen el prefijo de un solo guión. Las versiones más largas son una mejora de GNU para mayor claridad, por lo que puedo decir, y generalmente tienen el prefijo de guiones dobles. Puede ver esto en las bibliotecas y programas utilizados para analizar las opciones, getopty gnu-getoptrespectivamente. Los programas que no son GNU y que no cumplen con POSIX pueden hacer algo completamente diferente. Tenga en cuenta que realmente no puede estar seguro de que la forma larga de un argumento puede ser la misma de un programa a otro. -fgeneralmente significa --force, pero no con apt-get install(error común). -vpuede significar versión, generalmente, o --verbose, etc. Consulte las páginas de manual u otra documentación para estar seguro. También eche un vistazo a laArtículo de Wikipedia sobre getopt . Todo esto es anterior a Linux en una década o más.

ddes un ejemplo de una utilidad estándar POSIX que no tiene opciones con guiones en absoluto . findes el ejemplo clásico de una utilidad estándar POSIX que tiene opciones de palabras con guiones simples: casi todas findlas opciones tienen varios caracteres de longitud. psadmite múltiples estilos de opciones:

This version of ps accepts several kinds of options:

1   UNIX options, which may be grouped and must be preceded by a dash.
2   BSD options, which may be grouped and must not be used with a dash.
3   GNU long options, which are preceded by two dashes.

GNUtar también admite múltiples estilos de opciones.

Como cuestión de uso, prefiera las opciones largas en los scripts si puede estar seguro de que los scripts se ejecutarán en entornos compatibles; la mejora en la claridad es una bendición al depurar. Para la portabilidad, se prefieren las opciones cortas.

muru
fuente
Muy buena respuesta. Gracias.
Peng Zhang
4

Por lo general, las opciones se pueden encadenar juntas, como pacman -Syuser equivalente a pacman -S -y -u, y las opciones generalmente toman un parámetro como en./configure --prefix=/usr

hanetzer
fuente