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-rf
e--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\'me
Isso 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