У меня есть этот файл на моей 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 ...
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
.
Со страницы руководства для rm
:
Чтобы удалить файл, имя которого начинается с символа «-», например «-foo», используйте одну из следующих команд:
rm - -foo
rm ./-foo
поэтому, чтобы удалить ваш файл, попробуйте rm -- ----------9976723563nneh4_-----192.9.200.4
.