Escape $
(e desejavelmente [
, ]
) faça login em seu nome de arquivo com barra invertida \
:
rm -rf \$commandoutput\[0\]
Aqui está o meu comando ls
, que mostra a lista de arquivos no meu diretório atual:
rper: ls -l
$commandoutput[0]
file.txt
Eu tentei remover $commandoutput[0]
linha usando rm -rf $commandoutput[0]
, mas ele mostra o seguinte erro. Como posso removê-lo?
rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.
Em alternativa à resposta de @ RomanPerekhrest, isso também funcionará:
rm '$commandoutput[0]'
como aspas simples evitarão a expansão das variáveis.
Outra maneira é começar a digitar rm $
e depois clicar em Tab ; o shell preencherá automaticamente o nome do arquivo, escapando de caracteres conforme necessário.
Enquanto outros responderam a esta questão, outra maneira de fazer isso seria encontrar o inode do arquivo e usar find e exec delete para remover o arquivo.
ls -il
Exemplo de saída:
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 {} \;
Outra maneira simples é usar um caractere curinga e rm -i:
rm -i *command*
Isto irá, para todos os nomes de arquivos contendo a palavra "command", perguntar se você deseja remover o arquivo. Você pode verificar antes de apagar.
Tags files rm special-characters linux