以下 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
调用是否将否定模式评估[^.]
为文字字符或其他东西。我不确定问题是什么。
任何见解或建议将不胜感激。谢谢!