Bash Shell Script - 파일이 존재하는지 확인

By JS | Last updated: October 09, 2021

Linux의 Bash 스크립트에서 어떤 파일이 존재하는지 확인하는 방법을 소개합니다.

1. 파일이 존재하는지 확인

디렉토리가 아닌, 일반적인 파일이 존재하는지 확인할 때 -f로 확인할 수 있습니다. File 변수의 파일 주소가 디렉토리라면 False를 리턴합니다.

#!/bin/bash

File=file.txt
if [ -f "$File" ]; then  
  echo "$File exist "  
fi

Output:

$ bash example.sh
file.txt exist

1.1 방법 (2)

위의 코드는 아래와 같은 코드와 동일하게 동작합니다. 선호하는 방법을 선택하시면 됩니다.

#!/bin/bash

File=file.txt  

if [[ -f "$File" ]]; then  
  echo "$File exist "  
fi  

1.2 방법 (3)

위의 코드는 아래와 같은 코드와 동일하게 동작합니다. 선호하는 방법을 선택하시면 됩니다.

#!/bin/bash

File=file.txt

if test -f "$File"; then  
  echo "$File exist "
fi

2. 디렉토리가 존재하는지 확인

일반적인 파일이 아닌 디렉토리가 존재하는지 확인할 때는 -d를 사용합니다. 만약 이 연산자로 일반적인 파일을 체크한다면 False를 리턴합니다.

#!/bin/bash

Dir=mydir

if [ -d "$Dir" ]; then  
  echo "$Dir exist "  
fi

Output:

$ bash example.sh
mydir exist

3. 어떤 파일이 존재하는지 확인

디렉토리 또는 파일과 무관하게, 어떤 파일이 존재하는지 확인할 때는 -e를 사용합니다. 이 연산자는 존재하는 디렉토리와 파일에 대해서 모두 True를 리턴합니다.

#!/bin/bash

File=mydir

if [ -e "$File" ]; then  
  echo "$File exist "  
fi

Output:

$ bash example.sh
mydir exist

파일 테스트 연산자

-f, -d 외에도, 다양한 파일 테스트 연산자가 있습니다. 다음을 참고하셔서 필요한 상황에 사용하시면 됩니다.

File Operator Description
-b File Returns 'True' if the FILE exists as a block special file.
-c File Returns 'True' if the FILE exists as a special character file.
-d File Returns 'True' if the FILE exists as a directory.
-e File Returns 'True' if the FILE exists as a file, regardless of type (node, directory, socket, etc.).
-f File Returns 'True' if the FILE exists as a regular file (not a directory or device).
-G File Returns 'True' if the FILE exists and contains the same group as the user is running the command.
-h File Returns 'True' if the FILE exists as a symbolic link.
-g File Returns 'True' if the FILE exists and contains set-group-id (sgid) flag set.
-k File Returns 'True' if the FILE exists and contains a sticky bit flag set.
-L File Returns 'True' if the FILE exists as a symbolic link.
-O File Returns 'True' if the FILE exists and is owned by the user who is running the command.
-p File Returns 'True' if the FILE exists as a pipe.
-r File Returns 'True' if the FILE exists as a readable file.
-S File Returns 'True' if the FILE exists as a socket.
-s File Returns 'True' if the FILE exists and has nonzero size.
-u File Returns 'True' if the FILE exists, and set-user-id (suid) flag is set.
-w File Returns 'True' if the FILE exists as a writable file.
-x File Returns 'True' if the FILE exists as an executable file.

References

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha