module function Kernel.#test

test(cmd, file) -> bool | Time | Integer | nil[permalink][rdoc][edit]

単体のファイルでファイルテストを行います。

[PARAM] cmd:
以下に示す文字リテラル、文字列、あるいは同じ文字を表す数値です。文字列の場合はその先頭の文字だけをコマンドとみなします。
[PARAM] file:
テストするファイルのパスを表す文字列か IO オブジェクトを指定します。
[RETURN]
下表に特に明記していないものは、真偽値を返します。

以下は cmd として指定できる文字リテラルとその意味です。

?r

ファイルを実効 uid で読むことができる

?w

ファイルに実効 uid で書くことができる

?x

ファイルを実効 uid で実行できる

?o

ファイルの所有者が実効 uid である

?G

ファイルのグループ所有者が実効 gid である

?R

ファイルを実 uid で読むことができる

?W

ファイルに実 uid で書くことができる

?X

ファイルを実 uid で実行できる

?O

ファイルの所有者が実 uid である

?e

ファイルが存在する

?z

ファイルサイズが 0 である

?s

ファイルサイズが 0 でない (ファイルサイズを返す、0 ならば nil) -> Integer|nil

?f

ファイルはプレーンファイルである

?d

ファイルはディレクトリである

?l

ファイルはシンボリックリンクである

?p

ファイルは名前つきパイプ(FIFO)である

?S

ファイルはソケットである

?b

ファイルはブロックスペシャルファイルである

?c

ファイルはキャラクタースペシャルファイルである

?u

ファイルに setuid ビットがセットされている

?g

ファイルに setgid ビットがセットされている

?k

ファイルに sticky ビットがセットされている

?M

ファイルの最終更新時刻を返す -> Time

?A

ファイルの最終アクセス時刻を返す -> Time

?C

ファイルの inode 変更時刻を返す -> Time



IO.write("testfile", "test")
test("r", "testfile") # => true
test("s", "testfile") # => 4
test("M", "testfile") # => 2018-03-31 07:38:40 +0900
test(cmd, file1, file2) -> bool[permalink][rdoc][edit]

2ファイル間のファイルテストを行います。

[PARAM] cmd:
以下に示す文字リテラル、文字列、あるいは同じ文字を表す数値です。文字列の場合はその先頭の文字だけをコマンドとみなします。
[PARAM] file1:
テストするファイルのパスを表す文字列か IO オブジェクトを指定します。
[PARAM] file2:
テストするファイルのパスを表す文字列か IO オブジェクトを指定します。
[RETURN]
真偽値を返します。

以下は cmd として指定できる文字リテラルとその意味です。

?=

ファイル1とファイル2の最終更新時刻が等しい

?>

ファイル1の方がファイル2より最終更新時刻が新しい

?<

ファイル1の方がファイル2より最終更新時刻が古い

?-

ファイル1とファイル2が同一のファイルである



IO.write("testfile1", "test1")
IO.write("testfile2", "test2")
%w(= < > -).each do |e|
  result = test(e, "testfile1", "testfile2")
  puts "#{e}: #{result}"
end

# => =: true # => <: false # => >: false # => -: false