디렉토리 / 파일 / 심볼 링크 / 등을 감지하는 한 가지 방법이 있습니까? 엔티티 (더 일반화 됨)가 존재합니까?
디렉토리, 파일 또는 심볼릭 링크가 될 수있는 경로 배열을 확인해야하므로 단일 함수가 필요합니다. 내가 알고있는 File.exists?"file_path"
디렉토리와 파일에 대한 아니라 심볼릭 링크 (되는 작품 File.symlink?"symlink_path"
).
디렉토리 / 파일 / 심볼 링크 / 등을 감지하는 한 가지 방법이 있습니까? 엔티티 (더 일반화 됨)가 존재합니까?
디렉토리, 파일 또는 심볼릭 링크가 될 수있는 경로 배열을 확인해야하므로 단일 함수가 필요합니다. 내가 알고있는 File.exists?"file_path"
디렉토리와 파일에 대한 아니라 심볼릭 링크 (되는 작품 File.symlink?"symlink_path"
).
true
경우 심볼릭 링크가 궁극적으로 비 심볼릭 링크로 해석 될 수 있는지 여부에 관계없이 심볼릭 링크가 존재하면 반환 하는 것을 요청합니다 . 즉, true
끊어진 링크도 반환해야 합니다. 깨지지 않은 심볼릭 링크에 File.exists?
대해서만 반환됩니다 true
.
답변:
표준 파일 모듈에는 사용 가능한 일반적인 파일 테스트가 있습니다.
RUBY_VERSION # => "1.9.2"
bashrc = ENV['HOME'] + '/.bashrc'
File.exist?(bashrc) # => true
File.file?(bashrc) # => true
File.directory?(bashrc) # => false
거기에서 원하는 것을 찾을 수 있어야합니다.
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
ENV['HOME'] + '/.bashrc'
크로스 플랫폼에서 작동하지 않을 수 있는 원시 문자열 연결 ( )을 사용하지 않는 것이 좋습니다. Ruby 파일 조인을 사용해야하며 Rails.root
Rails를 사용하는 경우 시작하지 않는 이유도 있습니다 . File.exists?(Rails.root.join('db', 'my_seeds.csv')
/
되기 때문에 사용은 문제가되지 않습니다 .
bash
시작 메뉴에 입력 하면 콘솔 창에 cat ~/.bashrc
출력이 생성됩니다. ¯ \ _ (ツ) _ / ¯
자신의 기능을 정의 File.exists?(path) or File.symlink?(path)
하고 사용하지 않겠습니까?