Estou sempre me perguntando: a maioria das ferramentas GNU/Unix aceita opções na forma "menos alguma coisa", às vezes seguidas por um argumento. E se você tivesse um arquivo chamado menos alguma coisa?
$ 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.
ou
$ ls
-ohello.c
$ gcc -ohello -ohello.c
gcc: fatal error: no input files
compilation terminated.
Isto é apenas por curiosidade; Não tenho um caso de uso para isso.
Responder1
Para remover um arquivo chamado -x
, use rm -- -x
( --
significa fim das opções) ou rm ./-x
.
Responder2
É bastante comum fazer esse tipo de pergunta em ambientes de entrevista. Uma maneira comum de lidar com arquivos com travessões é:
$ rm -- -f
$ rm ./-f
Responder3
Uma pergunta comum no Unix. A principal forma é fornecer o nome completo do caminho do arquivo, para que ele não tenha um travessão na frente:
$ rm -file.txt
unknown option -l
$ rm ./-file.txt #No problem!
$ rm $PWD/-file.txt #Same thing
Algunscomandos, você pode usar um travessão sozinho (ou um travessão duplo) para finalizar as opções. No entanto, isso não é necessariamente verdade com todos os comandos, ou mesmo com o mesmo comando em sistemas diferentes.
$ rm -- -file.txt #Works on Linux but not on some Unix systems
Responder4
você tem que usar
rm -- <filename>
Ex:
rm -- -f