1

某些程序使 ta 我的根目录虚拟文件,例如

-1
-2
-3
...
-n

我跑不成功

rm -1

还有

rm "-1"

终端认为 -1 是选项。

如何删除终端中的文件?

4

2 回答 2

7

您可以使用rm ./-1./ 表示当前目录,并且由于参数不以破折号开头,因此不会将其解释为选项。

于 2009-04-26T16:41:54.507 回答
5

据我记得添加 -- 作为命令行上的一个选项将导致 rm 命令从字面上考虑所有剩余的参数,所以命令

rm -- -1

将删除有趣的命名文件。请注意,您仍然可以使用 shellextensions(例如 '*' 或 '?'),因为 shell在命令运行之前会扩展它们(与 DOS 不同)。

编辑:当我第一次遇到这个问题时,我不知道 -- 开关所以我写了一个小的 c 程序,它将删除与第一个参数相同的文件名。这很容易做到,因为所有posix 操作系统都包含unlink系统调用,该系统调用会删除具有作为参数给出的名称的文件(将以下内容转储到终端中):

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 系统,尽管您可能必须更改gcccc本地 c 编译器的名称或名称。

于 2009-04-26T16:45:54.527 回答