셸 스크립트를 작성할 때 여러 번 파일이 있는지 여부에 따라 작업을 수행해야하는 상황에 처할 수 있습니다. .
Bash에서 test 명령을 사용하여 파일이 있는지 확인하고 파일 유형을 확인할 수 있습니다.
테스트 명령은 다음 구문 형식 중 하나를 사용합니다.
스크립트를 이식 가능하게하려면 이전 테스트를 사용하는 것이 좋습니다. ; then echo "$FILE exists."fi
파일의 존재 여부에 따라 다른 작업을 수행하려는 경우 if / then 구문 사용 :
if 문없이 test 명령을 사용할 수도 있습니다. &&
연산자 뒤의 명령은 테스트 명령의 종료 상태가 true 인 경우에만 실행됩니다.
원하는 경우 &&
연산자 뒤에 일련의 명령을 실행합니다. 명령을 ;
또는 &&
:
&&
의 반대, ||
연산자는 테스트 명령의 종료 상태가 false
인 경우에만 실행됩니다.
디렉토리 존재 여부 확인
연산자 -d
를 사용하면 파일이 디렉토리 여부.
예를 들어 /etc/docker
디렉토리가 있는지 확인하려면 다음을 사용합니다.
이중 대괄호 ; then echo "$FILE does not exist."fi
위와 동일 :
여러 파일이 있는지 확인 #
복잡한 중첩 if / else 구문을 사용하는 대신 -a
(또는 &&
를 ; then echo "Both files exist."fi
IF 문을 사용하지 않는 등가 변형 :
파일 테스트 연산자 #
테스트 명령에는 특정 유형의 파일을 테스트 할 수있는 다음 FILE 연산자가 포함되어 있습니다.
-
-b
FILE
-FILE이 존재하고 특수 블록 파일 인 경우 True입니다. -
-c
FILE
-True FILE이 존재하고 특수 문자 파일 인 경우 -
-d
FILE
-FILE이 존재하고 디렉토리 인 경우 True입니다. -
-e
FILE
-유형 (노드, 디렉토리, 소켓 등)에 관계없이 FILE이 존재하고 파일 인 경우 True입니다. -
-f
FILE
-FILE이 존재하고 일반 파일 (디렉토리 또는 장치가 아님) 인 경우 True입니다. -
-G
FILE
-FILE이 있고 명령을 실행하는 사용자와 동일한 그룹이있는 경우 True입니다. -
-h
FILE
-FILE이 존재하고 심볼릭 링크 인 경우 True입니다. -
-g
FILE
-FILE이 존재하고 set-group-id (sgid
) 플래그가 설정된 경우 True입니다. -
-k
FILE
-FILE이 존재하고 고정 비트 플래그가 설정된 경우 참입니다. -
-L
-FILE이 있고 심볼릭 링크 인 경우 True입니다. -
-O
FILE
-FILE이 존재하고 명령을 실행하는 사용자가 소유 한 경우 True입니다. -
-p
FILE
-True 인 경우 FILE이 존재하고 파이프입니다. -
-r
FILE
-FILE이 있고 읽을 수있는 경우 True입니다. -
-S
FILE
-FILE이 있고 소켓 인 경우 True입니다. -
-s
FILE
-FILE이 존재하고 크기가 0이 아닌 경우 True입니다. -
-u
FILE
-FILE이 있고 set-user-id (suid
) 플래그가 설정된 경우 True입니다. -
-w
FILE
-FILE이 존재하고 쓰기 가능한 경우 true입니다. -
-x
FILE
-FILE이 존재하고 exe 인 경우 True 절단 가능.
결론 #
이 가이드에서는 Bash에 파일이나 디렉토리가 있는지 확인하는 방법을 보여주었습니다.