Questão Remover um arquivo chamado “-f” ou “-r” [duplicado]


Esta questão já tem uma resposta aqui:

Querendo saber como remover um arquivo, seu nome é "-f" ou "-r" no Mac OS e no Linux. Qual é o caminho certo para escapar? Eu fiz alguma pesquisa e parece que a única maneira é remover por inode ID?

desde já, obrigado, Lin


1


origem




Respostas:


Você pode usar rm ./'-f' e rm ./'-r', rm -i ./*ou rm -i ./-*. Essas soluções são amplamente conhecidas.


1



Obrigado Larssend, qual é o propósito de ./? - Lin Ma
./ significa 'diretório de trabalho atual'. rm pensaria -f e -r são argumentos / opções em vez de nome de arquivo real sem ele. - Larssend
Solução inteligente, obrigado Larssend! - Lin Ma


A solução de Larssend (especificando um diretório atual antes de especificar o nome do arquivo) funciona bem. Só para lhe dar outra solução, no entanto:

rm - -f

Portanto, passe um parâmetro de dois hífens antes de especificar o nome do arquivo desafiador.

O - significa "pare de tentar tratar os próximos caracteres como opções", para que os hífens parem de agir como caracteres especiais nos parâmetros posteriores. Ajuda a garantir que um arquivo iniciado com um hífen não permita que você especifique acidentalmente algumas opções não intencionais. Este é um recurso de programa, não um recurso de shell, portanto, o suporte para esse recurso pode variar entre os programas, mas muitos programas Unix padrão o suportam.


4



Obrigado TOOGAM, você mencionou, "pare de tentar tratar os próximos personagens como opções", confuso e você quer dizer não tratar os próximos personagens como opções, então -f é tratado como nome de arquivo? - Lin Ma
O nome do arquivo é um parâmetro que você digita, também conhecido como "argumento" recebido pelo programa. No entanto, um nome de arquivo não é uma opção. Um nome de arquivo não é uma "opção" que basicamente altera como o programa funciona. Por isso desistir o comportamento de tratar os próximos caracteres (o "-f") como uma opção em potencial, esses caracteres não são mais verificados para ver como o "rm" será executado. O resultado é que os personagens perdem qualquer tipo de significado especial, então "rm" fará a coisa mais natural que poderia fazer, que é tratar os personagens como um nome de arquivo. - TOOGAM