Насколько я помню добавление - в качестве опции в командной строке команда rm будет рассматривать все оставшиеся аргументы буквально, поэтому команда
rm -- -1
Удаляет смешные именованные файлы. Обратите внимание, что вы по-прежнему можете использовать шеллок расширения (например, '*' или '?'), Так как оболочка расширяет эти до , когда команда запускается (в отличие от DOS).
Редактировать : Когда я впервые столкнулся с этой проблемой, я не знал о переключателе -, поэтому я написал небольшую программу на c, которая удаляла бы имя файла так же, как и первый аргумент. Это легко сделать, так как все операционные системы posix содержат системный вызов unlink
, который удаляет файл с именем, указанным в качестве аргумента (выгрузите в терминал следующее:) 1013 *
remove_arg.c << EOF
#include<unistd.h>
int main(int argc, char **argv){
unlink(argv[1]);
}
EOF
gcc -o remove_arg remove_arg.c
./remove_arg -1
Это должно работать в любой Unix-системе, хотя вам, возможно, придется изменить gcc
на cc
или как будет называться ваш локальный компилятор c.