エリクシール1.3.2チルドでファイルを削除できないのはなぜですか?
のErlang/OTP 19
のWindows 7(標準ユーザーおよび管理者)
私はgitのにファイルをコミット周りにラップするために一緒に小さなエリクサースクリプトをハックしようとしています。 emacsによって作成された一時ファイルを私が誤ってステージングしないようにするために、私が最初にやることはFile.rm( "*〜")です。しかし、これは私が得るものです:
iex(2)> File.rm("*~")
{:error, :eio}
私はFile.rm("*.*~")
を試しました。同じ結果。私は標準ユーザー(Windows上で正常に動作する方法)または管理者として実行すると、アクセス許可を持つものではないように見えるのと同じ動作をします。
私はリストにファイルをキャプチャしました。 (スペースを節約するために切り捨て)
iex(15)> {:ok,files} = File.ls
{:ok,
[".git", ".gitattributes", ".gitignore", "add.factor", "async_ut",
"async_ut.cs", "cng_maint", "codecvg.cmd", "codecvg_rkt.cmd",
"codecvg_rkt.cmd~", "CreateBr.vbs", "DevSandbox", "distillery", "dk.cmd",
"example.scm", "example.sql", "factor", "fsele", "fsharp", "glp.vbs",
"lwwtww.org", "mrgmain.cmd", "MrgMain.vbs", "mrgtrunk.cmd", "mrgtrunk.cmd~",
私は~
を含むリスト内の文字列をチェックすることができますし、それが戻って叶います。だから私はそこにチルダがあることを想像していない。
ディレクトリにtest.txt
という一時ファイルを作成しました。 File.rm
が削除されているため、問題の原因となっているのは~
です。私もこれらを試した:
iex(7)> File.rm("*\~")
{:error, :eio}
iex(8)> File.rm("*\7F") #7F is hex code of ~
{:error, :eio}
あなたが見ることができるように運がいいえ。
何かについてのグーグルリング:eio
とElixirとFile.rmは役に立ちませんでした。私はそれが効果があるかどうかを確認するために1.4.0をインストールしようとすることができますが、私はここで何かばかげて明らかに欠けていたかどうかを見たいと思っていました。
私もマシンにcygwinを持っていますので、そのようにファイルを削除しようとしました。 rm *~
は、(標準ユーザーの下で)予想どおりに機能しました。
これは何とかアーラン特有の問題だと思われますが、私はまずここでアクシングしています。明らかに間違ったことをしていますか?
'Path.wildcard(" *〜 ")|> Enum.each(&File.rm/1)'はどうですか? '*'は 'File.rm/1'によって拡張されません。 – Dogbert
Hmm。 File.rmがワイルドカードを展開しないことに気付かなかった。それはどこかに書かれていて、私がそれを研究していたときにそれを逃したのですか? –
さて、私はそれが拡張されないことを意味すると書かれていないと考えます。 – Dogbert