以下 bash 命令从名为foo(excludes .and ..) 的目录中删除所有隐藏文件:
rm -rf foo/.[^.]*
我希望将相同的命令传递给 RubyKernel::system应该做同样的事情:
system("rm -rf foo/.[^.]*")
但是,上面的 Ruby 代码会返回false并生成:
rm: cannot remove `..' directory `foo/..'
如果我这样尝试:
system("rm", "-rf", "foo/.[^.]*")
然后它返回true,但不删除任何内容。
如果我取消-f旗帜:
system("rm", "-r", "foo/.[^.]*")
然后它返回false并产生这个:
rm: cannot remove `foo/.[^.]*': No such file or directory
我想知道这个system调用是否将否定模式评估[^.]为文字字符或其他东西。我不确定问题是什么。
任何见解或建议将不胜感激。谢谢!