기계적 인조 인간

bash에 파일이나 디렉토리가 있는지 확인하는 방법

Con Heo Đất í ò í o - Nhạc Thiếu Nhi Con Heo Đất Remix Sôi Động Hay Nhất

Con Heo Đất í ò í o - Nhạc Thiếu Nhi Con Heo Đất Remix Sôi Động Hay Nhất

차례:

Anonim

쉘 스크립트를 작성할 때 여러 번 파일 존재 여부에 따라 조치를 수행해야하는 상황에 처할 수 있습니다.

Bash에서 test 명령을 사용하여 파일이 존재하는지 확인하고 파일 유형을 결정할 수 있습니다.

테스트 명령은 다음 구문 형식 중 하나를 사용합니다.

test EXPRESSION]

파일이 있는지 확인

파일이 존재하는지 확인할 때 가장 일반적으로 사용되는 FILE 연산자는 -e -f 입니다. 첫 번째 파일은 유형에 관계없이 파일이 존재하는지 확인하는 반면, 두 번째 파일은 파일이 디렉토리 나 장치가 아닌 일반 파일 인 경우에만 true를 반환합니다.

파일이 존재하는지 여부를 확인할 때 가장 읽기 쉬운 옵션은 테스트 명령을 if 문과 함께 사용하는 것입니다. 아래의 스 니펫은 /etc/resolv.conf 파일이 있는지 확인합니다.

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

파일이 있는지 여부에 따라 다른 조치를 수행하려면 if / then 구문을 사용하십시오.

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi 이름에 공백이 포함 된 파일을 다룰 때 문제를 피하려면 항상 큰 따옴표를 사용하십시오.

if 문없이 test 명령을 사용할 수도 있습니다. && 연산자 다음의 명령은 테스트 명령의 종료 상태가 true 인 경우에만 실행됩니다.

test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

&& 와 반대로 || 뒤에 나오는 문장 테스트 명령의 종료 상태가 false 경우에만 연산자가 실행됩니다.

&& echo "$FILE exist" || echo "$FILE does not exist"

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

-d 연산자를 사용하면 파일이 디렉토리인지 여부를 테스트 할 수 있습니다.

예를 들어 /etc/docker 디렉토리가 존재하는지 확인하려면 다음을 사용하십시오.

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

이중 괄호 , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

파일이 존재하지 않는지 확인

다른 많은 언어들과 마찬가지로 테스트 표현식은 ! (느낌표) 논리 비 연산자:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

같은 상기와:

&& echo "$FILE does not exist"

여러 파일이 있는지 확인

복잡한 중첩 된 if / else 구문을 사용하는 대신 -a (또는 && with ; then echo "$FILE is a directory" fi 사용할 수 있습니다 ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

IF 문을 사용하지 않는 동등한 변형:

&& echo "both files exist"

] && echo "both files exist"

파일 테스트 연산자

test 명령에는 특정 유형의 파일을 테스트 할 수있는 다음 FILE 연산자가 포함되어 있습니다.

  • -b FILE -FILE이 존재하고 블록 특수 파일 인 경우 참입니다. -c FILE -FILE이 존재하고 특수 문자 파일 인 경우 참입니다. -d FILE -FILE이 존재하고 디렉토리 인 경우 참입니다. -e FILE 유형 (노드, 디렉토리, 소켓 등)에 관계없이 FILE이 존재하고 파일 인 경우 참입니다. -f FILE -FILE이 존재하고 일반 파일 (디렉토리 또는 장치가 아님) 인 경우 참입니다. -G FILE -FILE이 존재하고 명령을 실행하는 사용자와 동일한 그룹을 갖는 경우 True입니다. -h FILE -FILE이 존재하고 기호 링크 인 경우 참입니다. -g FILE -FILE이 존재하고 set-group-id (sgid) 플래그가 설정되어 있으면 참입니다. -k FILE -FILE이 있고 고정 비트 플래그가 설정되어 있으면 True입니다. -L FILE -FILE이 존재하고 심볼릭 링크 인 경우 True입니다. -O FILE -FILE이 존재하고 명령을 실행하는 사용자가 소유 한 경우 참입니다. -p FILE -FILE이 존재하고 파이프 인 경우에 true입니다. -r FILE -FILE이 존재하고 읽을 수있는 경우 True입니다. -S FILE 파일이 존재하고 소켓 인 경우에 true입니다. -s FILE -FILE이 존재하고 크기가 0이 아닌 경우 True입니다. -u FILE 존재하고 set-user-id (suid) 플래그가 설정된 경우 True입니다. -w FILE -FILE이 존재하고 쓰기 가능한 경우 참입니다. -x FILE -FILE이 존재하고 실행 가능한 경우 True입니다.

결론

이 가이드에서는 Bash를 사용하여 파일 또는 디렉토리가 있는지 확인하는 방법을 보여주었습니다.

bash 터미널