Uma barra / não pode sempre aparecer no nome do arquivo, porque é o separador de caminho.
Quando um nome de arquivo começa com um traço, os programas normalmente tentam interpretá-lo como uma opção, e há duas maneiras de evitar isso:
-
Use a opção especial
--que significa "tudo depois disso será apenas nomes, não opções". Por exemplo, se você tiver arquivos com o nome-rfe--hello--, poderá usar:rm -- -rf --hello-- -
Ou, mais simplesmente, faça os nomes não começarem com um traço , dando caminhos completos para eles. Por exemplo, você pode especificar que eles estão em
.(o diretório atual), terminando com:rm ./-rf ./--hello--Ou você pode usar um caminho completo:
rm /home/Krishath/-rf /home/Krishath/--hello--
O outro caso é quando há símbolos especiais no meio de um nome ( - não é especial; $ seria especial).
-
Primeiro, tente "escapar" com um
\. Por exemplo, se você tiver um arquivo chamadowei"rd$na'me, use:cat we\"ird\$na\'meIsso funciona com tudo, incluindo espaços, e é a maneira mais fácil quando você tem apenas um ou dois símbolos para lidar.
-
Outro método é colocar aspas em torno dele. Infelizmente, citar em shells de linha de comando é um pouco confuso - às vezes, tanto
'name'como"name"trabalham, às vezes apenas um deles.(Por exemplo, os símbolos especiais
|ou<podem ter aspas duplas, mas$ou'não podem. Por outro lado, aspas simples funcionarão com tudo exceto quando o próprio nome do arquivo contiver uma única aspas.)No entanto, se o nome do arquivo tiver espaços, aspas certamente serão mais fáceis:
mv "Some long file name.txt" ~/trash