LinuxやUNIXでファイル・ディレクトリの存在確認をする場合、「test」コマンドを用いる。

bash
test -f ファイルPATH # ファイルの存在確認 test -d ディレクトリPATH # ディレクトリの存在確認
shell
blacknon@BS-PUB-UBUNTU-01:/tmp$ # ファイルの有無を確認 blacknon@BS-PUB-UBUNTU-01:/tmp$ ls -la /tmp/test.txt ls: /tmp/test.txt にアクセスできません: そのようなファイルやディレクトリはありません blacknon@BS-PUB-UBUNTU-01:/tmp$ test -f /tmp/test.txt blacknon@BS-PUB-UBUNTU-01:/tmp$ echo $? 1 blacknon@BS-PUB-UBUNTU-01:/tmp$ touch /tmp/test.txt blacknon@BS-PUB-UBUNTU-01:/tmp$ test -f /tmp/test.txt blacknon@BS-PUB-UBUNTU-01:/tmp$ echo $? 0 blacknon@BS-PUB-UBUNTU-01:/tmp$ blacknon@BS-PUB-UBUNTU-01:/tmp$ # ディレクトリの有無を確認 blacknon@BS-PUB-UBUNTU-01:/tmp$ ls -la /tmp/dir ls: /tmp/dir にアクセスできません: そのようなファイルやディレクトリはありません blacknon@BS-PUB-UBUNTU-01:/tmp$ test -d /tmp/dir blacknon@BS-PUB-UBUNTU-01:/tmp$ echo $? 1 blacknon@BS-PUB-UBUNTU-01:/tmp$ mkdir /tmp/dir blacknon@BS-PUB-UBUNTU-01:/tmp$ test -d /tmp/dir blacknon@BS-PUB-UBUNTU-01:/tmp$ echo $? 0 blacknon@BS-PUB-UBUNTU-01:/tmp$ touch /tmp/dir1 blacknon@BS-PUB-UBUNTU-01:/tmp$ test -d /tmp/dir1 blacknon@BS-PUB-UBUNTU-01:/tmp$ echo $? 1

ただ、これだとスクリプトでやる分にはいいけど、普通にコンソール上でたたくとちょっとわかりにくい。「;」でそのまま「echo $?」でつなげてやるか、少し面倒だけど三項演算子を使ってやることで、存在の有無に応じて出力させる内容を変えるという方法がある。

bash
test -f ファイルPATH;echo $? test -f ファイルPATH && echo 'TRUE' || echo 'FALSE'
shell
blacknon@BS-PUB-UBUNTU-01:/tmp$ test -f /tmp/test_test ; echo $? 1 blacknon@BS-PUB-UBUNTU-01:/tmp$ test -f /tmp/test.txt ; echo $? 0 blacknon@BS-PUB-UBUNTU-01:/tmp$ blacknon@BS-PUB-UBUNTU-01:/tmp$ test -f /tmp/test_test && echo 'TRUE' || echo 'FALSE' FALSE blacknon@BS-PUB-UBUNTU-01:/tmp$ test -f /tmp/test.txt && echo 'TRUE' || echo 'FALSE' TRUE