rm + как удалить файл со специальными символами [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть этот файл в моей машине linux:

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

Я пытаюсь удалить этот файл, но не могу, как все здесь:

что нужно добавить в rm, чтобы удалить этот файл?

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 ...
1
задан 2 May 2013 в 17:55
2 ответа
rm -- ----------9976723563nneh4_-----192.9.200.4

Вам нужны - , чтобы сообщить rm (и более или менее всем остальным программам GNU), что все следующие параметры являются именами файлов, даже если начиная с "-". В противном случае (и в вашем случае) имя файла путают с параметрами. Другая возможность -

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

Править 1

Называя этот тривиальный ответ «отличным решением», я чувствую себя обязанным поднять его на более высокий уровень. Основная проблема не может быть решена "лучше", но вы можете попытаться привыкнуть всегда приводить - аргумент. И некоторый шелл-код (замена rm на функцию оболочки) может помочь вам в этом:

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
}

Вы можете поместить это, например, в ~ / .bashrc .

7
ответ дан 3 December 2019 в 16:26

На странице руководства для rm :

Чтобы удалить файл, имя которого начинается с '-', например '-foo', используйте один из этих команды:

rm - -foo

rm ./-foo[1286 providedso, чтобы удалить ваш файл, попробуйте rm - ---------- 9976723563nneh4 _----- 192.9.200.4 .

1
ответ дан 3 December 2019 в 16:26

Теги

Похожие вопросы