강좌 & 팁
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