Nota: mi respuesta NO es válida en el caso del OP, y solo se aplica a las herramientas que siguen la convención mencionada a continuación y no en el caso de un archivo llamado exactamente solo -
(guión), que a menudo también es un caso especial para especificar esa lectura del estándar se espera entrada Ver la respuesta aceptada.
Dejando esto aquí, ya que contiene información útil para otros casos que uno puede tropezar durante la búsqueda de respuestas.
Doble Dash it!
Use la convención estándar de doble guión ( --
) para indicar el último argumento:
less -- -FILENAME
Ejemplo
$ echo "meh" > -badname
$ less -badname
Number is required after -b
$ less -- -badname # GREAT SUCCESS!
Whhhaattt?
Este --
argumento se deriva de un convenio con el apoyo de la mayoría de las implementaciones de utilidad de shell y herramientas de línea de comandos, y la mayoría de las cáscaras visiblemente defender que debe seguir cuando implemeing herramientas de CLI.
Recomendado por el Grupo Abierto
El OpenGroup también menciona que en la descripción Utilidad de valores predeterminados de la sección (v6) de su especificación Base:
Comportamiento predeterminado: las [...] utilidades estándar que no aceptan opciones, pero que aceptan operandos, reconocerán "-" como un primer argumento a descartar.
El requisito para el reconocimiento "-" se debe a que las aplicaciones conformes necesitan una manera de proteger a sus operandos de las opciones arbitrarias que la aplicación puede proporcionar como una extensión. Por ejemplo, si la utilidad estándar foo aparece como sin opciones, y la aplicación necesita darle un nombre de ruta con un guión inicial, podría hacerlo de manera segura como:
foo -- -myfile
y evitar cualquier problema con -m utilizado como una extensión.
Y en la sintaxis Directrices Utilidad (v7):
Pauta 10:
El primer argumento que no es un argumento de opción debe aceptarse como un delimitador que indica el final de las opciones. Los siguientes argumentos deben tratarse como operandos, incluso si comienzan con el carácter '-'.
Recomendado por Bash
Aquí, extraído del manual de bash, sobre sus componentes incorporados que lo respaldan:
A menos que se indique lo contrario, cada comando incorporado documentado en esta sección acepta opciones precedidas por - acepta - para indicar el final de las opciones.
Las:, verdadero, falso y prueba incorporadas no aceptan opciones y no tratan, especialmente. La salida, cerrar sesión, interrumpir, continuar, dejar y cambiar incorporados aceptan y procesan argumentos que comienzan con, sin requerir,. Otros componentes incorporados que aceptan argumentos pero no se especifican como opciones de aceptación interpretan los argumentos que comienzan con, como opciones no válidas y requieren, para evitar esta interpretación.
Tenga en cuenta que el eco no interpretan - a significa el fin de opciones.
Lectura adicional