某些程序使 ta 我的根目录虚拟文件,例如
-1
-2
-3
...
-n
我跑不成功
rm -1
还有
rm "-1"
终端认为 -1 是选项。
如何删除终端中的文件?
您可以使用rm ./-1
./ 表示当前目录,并且由于参数不以破折号开头,因此不会将其解释为选项。
据我记得添加 -- 作为命令行上的一个选项将导致 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 系统,尽管您可能必须更改gcc
为cc
本地 c 编译器的名称或名称。