Eu estava executando um script Python que funcionou mal e usado sudo
para criar um arquivo chamado >
.
Como posso me livrar desse arquivo?
Obviamente, quando tento sudo rm >
, recebo o erro bash: syntax error near unexpected token 'newline'
, porque pensa que estou tentando redirecionar a saída de rm
.
Suas permissões são -rw-r--r--
.
sudo touch >
em um shell daria o mesmo erro.) Você disse que estava com um script Python, presumivelmente criado ao passar">"
para algumaos
função. Então,sudo python <<< 'import os; os.remove(">")'
deve funcionar muito bem.Respostas:
Qualquer um destes deve funcionar:
Observe que os dois últimos comandos, aqueles que usam
find
, encontrarão todos os arquivos ou diretórios nomeados>
na pasta atual e todas as suas subpastas. Para evitar isso, use o GNU find:fonte
find
não é assimrm
porque é recursivo e excluirá todos os arquivos nomeadosrm
na sua árvore de diretórios atual, não importando a profundidade.rm
variantes) são todos iguais. São apenas três maneiras diferentes de proteger esse nome de arquivo do shell. Não há realmente uma razão para preferir um ao outro.find(1)
? O único problema aqui é que um metacaractere do shell precisa ser citado. Existem um milhão e um programas diferentes que podem remover um arquivo, mas usar algo diferenterm(1)
é apenas ofuscar a resposta.sudo find . ! -name . -prune -name '>' -exec rm {} +
.find
não acrescenta nada para responder à pergunta.Você também pode usar o Python para removê-lo:
Com o POSIX
find
:fonte
>
como redirecionamento de saída.O que acabei fazendo inicialmente também funciona:
Esta é, obviamente, uma variante do mais simples
sudo rm \>
.fonte
Eu tentei isso como um comentário, mas saiu tudo em uma linha
fonte
Cite o caractere para que ele não seja interpretado pelo shell como um redirecionamento:
No entanto, se você tiver outros arquivos com caracteres estranhos, o método mais seguro é abrir um explorador de arquivos da GUI como
nautilus
e excluí-lo lá.fonte