Como faço para excluir um arquivo chamado “°” no bash

6

Eu acidentalmente criei um arquivo chamado ° . Agora estou tendo problemas para excluí-lo com o bash.

[/opt/etc/sudoers.d] # ls -l
-r--r-----    1 admin    administ       21 Feb  3 23:54 010-root
-rw-r--r--    1 admin    administ       20 Feb  3 23:50 °

Digitar rm ° parece mover somente o cursor para o início da linha, ou seja, nenhum caractere é inserido.

(Por que vale a pena estou executando bash 3.2.0 em uma máquina remota conectada com SSH usando o Mac OSX Terminal)

Alguma idéia?

    
por Oskar 05.02.2011 / 16:52

3 respostas

12

Que tal?

rm -i ?

Acho que isso deve funcionar ...

    
por 05.02.2011 / 17:24
10

Se houver muitas correspondências para usar um curinga com rm como rm -i ? , você poderá removê-lo pelo número de inode:

ls -i e find . -inum <inode> -ok rm '{}' \;

Em que <inode> é o número do inode de ls -i , que lista todos os números de inode dos arquivos no diretório atual.

    
por 06.02.2011 / 01:09
2

A resposta rm -i ? está bem.

Isso também funcionaria:

rm [^a-z]

como seria

rm [[:punct:]]

E por que está voltando para o início da linha, como você está digitando o ˚ ? Talvez a entrada esteja sendo interpretada como Ctrl+A ou algum outro atalho usado pelo shell para ir ao início da linha.

Existe uma configuração para definir a codificação ou o conjunto de caracteres como utf-8 no aplicativo do terminal? O que imprimirá se você executar locale dentro da sessão de terminal?

E como você criou o arquivo? Talvez você possa usar um método semelhante para excluí-lo?

    
por 06.02.2011 / 03:02