Não é possível remover o sinal $ chamado arquivos usando o linux? [duplicado]

4

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.
    
por salma 07.07.2017 / 09:19

4 respostas

20

Escape $ (e desejavelmente [ , ] ) faça login em seu nome de arquivo com barra invertida \ :

rm -rf \$commandoutput\[0\]
    
por 07.07.2017 / 09:26
27

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.

    
por 07.07.2017 / 09:23
1

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 {} \;
    
por 07.07.2017 / 20:31
0

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.

    
por 07.07.2017 / 21:27