rm + como remover o arquivo com caracteres especiais [duplicado]

1

Eu tenho este arquivo na minha máquina Linux:

 ----------9976723563nneh4_-----192.9.200.4

Eu tento excluir este arquivo, mas não consigo ver todos aqui:

o que você precisa adicionar ao rm para remover este arquivo?

rm "----------9976723563nneh4_-----192.9.200.4"
rm: illegal option -- --------9976723563nneh4_-----192.9.200.4
usage: rm [-fiRr] file ...

.

rm '----------9976723563nneh4_-----192.9.200.4'
rm: illegal option -- --------9976723563nneh4_-----192.9.200.4
usage: rm [-fiRr] file ...
    
por yael 02.05.2013 / 16:55

2 respostas

7
rm -- ----------9976723563nneh4_-----192.9.200.4

Você precisa de -- para dizer a rm (e mais ou menos todos os outros softwares GNU) que todos os parâmetros a seguir são nomes de arquivo, mesmo quando se inicia com "-". Caso contrário (e no seu caso) o nome do arquivo é confundido com opções. Outra possibilidade é

rm ./----------9976723563nneh4_-----192.9.200.4

Editar 1

Chamar essa resposta trivial de "grande solução" me faz sentir obrigado a levar isso a um nível mais alto. O problema básico não pode ser resolvido "melhor", mas você pode tentar se acostumar a sempre fazer -- um argumento. E algum código shell (substituindo rm por uma função shell) pode ajudá-lo com isso:

rm () {
  local args sep_found=no
  args=("$@")
  while [ $# -gt 0 ]; do
    if [ "--" = "$1" ]; then
      sep_found=yes
      break
    fi
    shift
  done
  if [ "yes" = "$sep_found" ]; then
    command rm "${args[@]}"
  else
    echo "WARNING: rm called without '--' seperator."
    echo "Please correct the command; aborting."
  fi
}

Você colocaria isso em, e. ~/.bashrc .

    
por 02.05.2013 / 16:58
1

Na página de manual de rm :

To remove a file whose name starts with a '-', for example '-foo', use one of these commands:

rm -- -foo

rm ./-foo

para remover seu arquivo, tente rm -- ----------9976723563nneh4_-----192.9.200.4 .

    
por 02.05.2013 / 16:58

Tags