2
私は何が起こっているのか混乱しています。なぜ「Dir.exist?パスが '〜'で始まる場合は動作しますか?
dir = "~/Downloads"
#=> "~/Downloads"
`ls #{dir}`
#=> "110912-font-awesome.zip\n"
Dir.exist? dir
#=> false
どうしてですか?
私は何が起こっているのか混乱しています。なぜ「Dir.exist?パスが '〜'で始まる場合は動作しますか?
dir = "~/Downloads"
#=> "~/Downloads"
`ls #{dir}`
#=> "110912-font-awesome.zip\n"
Dir.exist? dir
#=> false
どうしてですか?
`ls`を使うときはシェルコマンドを実行し、~
は何かシェル関連である(私はそれが$HOME
変数のショートカットだと思う)。しかし、Dir.exist?
は純粋なルビーです。シェルについては何も知らないので、ディレクトリは存在しません。とにかく
、これは
Dir.exist?(ENV['HOME'])
File.expand_path
を作品~
を拡張することができます
dir = File.expand_path('~/Downloads')
#=> /home/stefan/Downloads
Dir.exist?(dir)
#=> true
うわー、それはクールだ:) – Ursus
@Ursus - これはおそらく何のすべてのルビー 'File'と' Dir'機能ですパフォーマンス上の問題があまりない場合は、あなたのために行う必要があります。 –