Herramientas Unix: ¿qué pasa si un archivo tiene un nombre menos algo?

Herramientas Unix: ¿qué pasa si un archivo tiene un nombre menos algo?

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

información relacionada