bash 에서 파일과 관련된 조건을을 테스트 하는 내용입니다.

 

-e : 존재하는 파일

-f : 보통 파일(디렉토리나 디바이스 파일이 아님)

-s : 파일 크기가 0 이 아님

-d : 파일이 디렉토리

-b : 파일이 블럭 디바이스(플로피나 시디롬 등등)

-c : 파일이 문자 디바이스(키보드, 모뎀, 사운드 카드 등등)

-p : 파일이 파이프

-h : 파일이 심볼릭 링크

-L : 파일이 심볼릭 링크

-N : 마지막으로 읽힌 후에 변경 됐음

f1 -nt f2 : f1 파일이 f2 파일보다 최신임

f1 -ot f2 : f1 파일이 f2 파일보다 예전것임

f1 -ef f2 : f1 파일과 f2 파일이 같은 파일을 하드 링크하고 있음

! : "not" 조건이 안 맞으면 참

 

샘플 및 실행 내용을 살펴 보도록 하겠습니다.

 

$ cat file_test.sh
#!/bin/bash

FILE1="./ex1.sh"
FILE2="./ex2.sh"
LFILE1="./ex1_s_link.sh"

DIR="./dir"

if [ -e $FILE1 ] ; then
        echo "File Exist"
else
        echo "File Not Found"
fi

if [ -d $DIR ] ; then
        echo "Dir Exist"
else
        echo "Dir Not Exist"
fi

if [ -L $LFILE1 ] ; then
        echo "File Exist"
else
        echo "File Not Found"
fi

 

if [ $FILE2 -nt $FILE1 ] ; then
        echo "File Exist"
else
        echo "File Not Found"
fi

------------------------------------------------------------

 

 

$ ls -al
total 40
drwxr-xr-x 2 jhpark jhpark 4096 Apr 16 07:53 .
drwxr-xr-x 7 jhpark jhpark 4096 Apr 16 07:52 ..
-rwxrwxrwx 1 jhpark jhpark   74 Apr  9 17:07 ex1.sh
lrwxrwxrwx 1 jhpark jhpark    6 Apr 16 07:47 ex1_s_link__.sh -> ex1.sh
-rwxrwxrwx 1 jhpark jhpark   95 Apr  9 17:04 ex2.sh
-rwxrwxrwx 1 jhpark jhpark  394 Apr 16 07:52 file_test.sh
$ ./file_test.sh
File Exist
Dir Not Exist
File Not Found
File Not Found