Linux/UNIXでファイル・ディレクトリの存在確認をする
Pocket

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

test -f ファイルPATH # ファイルの存在確認
test -d ディレクトリPATH # ディレクトリの存在確認
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
Sponsored Links

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

test -f ファイルPATH;echo $?
test -f ファイルPATH && echo 'TRUE' || echo 'FALSE'
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
Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。