Siempre me pregunto: la mayoría de las herramientas GNU/Unix toman opciones en forma "menos algo", a veces seguidas de un argumento. ¿Qué pasa si tienes un archivo con el nombre menos algo?
$ ls
-f
$ rm -f
$ ls
-f
$ mv -f abc
mv: missing destination file operand after `abc'
Try `mv --help' for more information.
$ cat -f
cat: invalid option -- 'f'
Try `cat --help' for more information.
o
$ ls
-ohello.c
$ gcc -ohello -ohello.c
gcc: fatal error: no input files
compilation terminated.
Esto es sólo por curiosidad; No tengo un caso de uso para esto.
Respuesta1
Para eliminar un archivo llamado -x
, use rm -- -x
( --
significa fin de opciones) o rm ./-x
.
Respuesta2
Es bastante común hacer este tipo de preguntas en entornos de entrevistas. Una forma común de manejar archivos con guiones es:
$ rm -- -f
$ rm ./-f
Respuesta3
Una pregunta común en Unix. La forma principal es dar el nombre de ruta completo al archivo, para que no tenga un guión delante:
$ rm -file.txt
unknown option -l
$ rm ./-file.txt #No problem!
$ rm $PWD/-file.txt #Same thing
Algunocomandos, puede utilizar un guión solo (o un guión doble) para finalizar las opciones. Sin embargo, esto no es necesariamente cierto con todos los comandos, ni siquiera con el mismo comando en diferentes sistemas.
$ rm -- -file.txt #Works on Linux but not on some Unix systems
Respuesta4
tienes que usar
rm -- <filename>
Ex:
rm -- -f