如何用Ruby中的一个命令检查一个目录/文件/符号链接是否存在

有没有一种方法来检测一个目录/文件/符号链接/等。 实体(更一般化)存在吗?

我需要一个函数,因为我需要检查可能是目录,文件或符号链接的path数组。 我知道File.exists?"file_path"适用于目录和文件,但不适用于符号链接(即File.symlink?"symlink_path" )。

标准的文件模块有通常的文件testing可用:

 RUBY_VERSION # => "1.9.2" bashrc = ENV['HOME'] + '/.bashrc' File.exist?(bashrc) # => true File.file?(bashrc) # => true File.directory?(bashrc) # => false 

你应该能够find你想要的东西。


OP:“谢谢,但我需要所有三个真或假”

很明显不是。 好的,尝试像这样:

 def file_dir_or_symlink_exists?(path_to_file) File.exist?(path_to_file) || File.symlink?(path_to_file) end file_dir_or_symlink_exists?(bashrc) # => true file_dir_or_symlink_exists?('/Users') # => true file_dir_or_symlink_exists?('/usr/bin/ruby') # => true file_dir_or_symlink_exists?('some/bogus/path/to/a/black/hole') # => false 

为什么不定义自己的函数File.exists?(path) or File.symlink?(path)并使用它?