Bash에 파일 또는 디렉터리가 있는지 확인하는 방법

셸 스크립트를 작성할 때 여러 번 파일이 있는지 여부에 따라 작업을 수행해야하는 상황에 처할 수 있습니다. .

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에 파일이나 디렉토리가 있는지 확인하는 방법을 보여주었습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다