
Aqui está o meu ls
comando, 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.