シェル・スクリプト・リファンレス
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 ファイルの条件式

 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

などとする。例では真を返したので指定したファイルは存在し,書き込み可能であることが分る。