testではファイルやディレクトリの存在をチェックしたり,ファイルが書き込み可能かなどを調べることができる。利用できる条件式は表のようなものがある。
条件式 |
意味 |
-G ファイル |
指定したファイルが存在し,ファイルのグループが現在実行しているユーザーであれば真を返す |
-O ファイル |
指定したファイルが存在し,ファイルの所有者が現在実行しているユーザーであれば真を返す |
-S ファイル |
指定したファイルが存在し,ソケットであれば真を返す |
-b ファイル |
指定したファイルが存在し,ブロック・デバイスであれば真を返す |
-c ファイル |
指定したファイルが存在し,キャラクタ・スペシャル・ファイルであれば真を返す |
-d ファイル |
指定したファイルが存在し,ディレクトリであれば真を返す |
-e ファイル |
指定したファイルが存在すれば真を返す |
-f ファイル |
指定したファイルが存在し,通常のファイルであれば真を返す |
-g ファイル |
指定したファイルが存在し,パーミッションにセット・グループIDが付いていれば真 |
-h ファイル,-L ファイル |
指定したファイルが存在し,シンボリック・リンクであれば真を返す |
-k ファイル |
指定したファイルが存在し,パーミッションにスティッキ・ビットが付いていれば真 |
-p ファイル |
指定したファイルが存在し,名前付きパイプであれば真を返す |
-r ファイル |
指定したファイルが存在し,読み取り可能であれば真を返す |
-s ファイル |
指定したファイルが存在し,ファイル・サイズが1以上であれば真を返す |
-t ファイル |
指定したファイルが端末でオープンされていれば真を返す |
-u ファイル |
指定したファイルが存在し,パーミッションにセット・ユーザーIDが付いていれば真を返す |
-w ファイル |
指定したファイルが存在し,書き込み可能であれば真を返す |
-x ファイル |
指定したファイルが存在し,実行可能であれば真を返す |
ファイル1 -nt ファイル2 |
指定したファイル1がファイル2より修正時刻が新しければ真を返す |
ファイル1 -ot ファイル2 |
指定したファイル1がファイル2より修正時刻が古ければ真を返す |
ファイル1 -ef ファイル2 |
指定したファイル1とファイル2のデバイス番号とiノード番号が同じであれば真を返す |
たとえば,document.txtが存在し,書き込み可能かを調べるには,
$ ls -l document.txt
-rw-rw-rw 1 fukuda fukuda 345612 4月 8 10:13 document.txt
↑ ファイルは書き換え可能である
$ test -w document.txt
$ echo $?
0
|
などとする。例では真を返したので指定したファイルは存在し,書き込み可能であることが分る。