Não é possível remover os arquivos nomeados com sinal $ usando o Linux?

Não é possível remover os arquivos nomeados com sinal $ usando o Linux?

Aqui está o meu lscomando, que mostra a lista de arquivos no meu diretório atual:

rper:  ls -l

$commandoutput[0]  
file.txt

Tentei remover $commandoutput[0]a linha usando rm -rf $commandoutput[0], mas mostra o seguinte erro. Como posso removê-lo?

rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.

Responder1

Em alternativa à resposta de @RomanPerekhrest, isso também funcionará:

rm '$commandoutput[0]'  

já que as aspas simples evitarão a expansão variável.

Outra forma é começar a digitar rm $e depois apertar Tab; o shell preencherá automaticamente o nome do arquivo, escapando caracteres conforme necessário.

Responder2

Escape $(e desejavelmente [, ]) assine o nome do arquivo com barra invertida \:

rm -rf \$commandoutput\[0\]

Responder3

Embora outros tenham respondido a essa pergunta, outra maneira de fazer isso seria encontrar o inode do arquivo e usar find e exec delete para remover o arquivo.

ls -il

Saída de amostra:

781956 drwx------  3 viv viv 4096 2017-07-7 15:05 $commandoutput[0] 

A primeira coluna deve ser o inode, no exemplo acima, execute:

find . -inum 781956 -exec rm -i {} \;

Responder4

Outra maneira simples é usar um curinga e rm -i:

rm -i *command*

Isto irá, para todos os nomes de arquivos que contêm a palavra "comando", perguntar se você deseja remover o arquivo. Você pode então verificar antes da exclusão.

informação relacionada