次の bash コマンドは、 (とfoo
を除く)
という名前のディレクトリからすべての隠しファイルを削除します。.
..
rm -rf foo/.[^.]*
この同じコマンドを Ruby に渡すとKernel::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
おそらく、呼び出しが否定パターン[^.]
をリテラル文字または何かとして評価しているのかどうか疑問に思っています。何が問題なのかわからない。
洞察や提案をいただければ幸いです。ありがとう!