Bash 파일 존재 여부 확인-튜토리얼 및 사용 명령

bash 스크립트를 생성하는 동안 파일이 있는지 여부를 찾아야하는 상황이 발생할 수 있습니다. 작업을 수행합니다. test 명령어를 사용하여 파일이 존재하는지, 어떤 유형인지 확인할 수 있습니다.

이 튜토리얼에서는 Linux 기반 운영 체제에 파일이 있는지 확인하는 방법을 보여줍니다.

테스트 명령어의 기본 구문

파일이 있는지 확인하기위한 테스트 명령어의 기본 구문은 다음과 같습니다.

test -e file

또는

test -f file

장소 :

  • -e
    이 옵션은 형식에 관계없이 파일의 존재 여부를 확인합니다.
  • -f
    이 옵션은 FILE이 일반 파일 인 경우에만 파일의 존재 여부를 확인합니다.

아래와 같이 테스트 명령의 맨 페이지가 표시되어야합니다.

man test

다음 화면이 표시되어야합니다. :

명령 줄을 사용하여 파일이 있는지 테스트

이 섹션에서는 명령 줄을 사용하여 파일이 있는지 확인하는 방법 :

다음 명령을 실행하여 / etc / fstab 파일이 있는지 확인합니다 (T rue) :

test -f /etc/fstab

다음으로 테스트가 성공할 때마다 다음 명령을 실행하여 종료 코드를 0 또는 1로 설정합니다. not.

echo $?

출력 :

0

출력은 0이며 / etc / fstab 파일이 있음을 의미합니다.

또한 다음 명령을 사용하여 파일이 있는지 확인합니다.


echo $0

출력 :

0

다음으로 다음 명령을 실행하여 / etc / fabab 파일이 있는지 테스트합니다 ( False).

test -f /etc/fabab
echo $?

출력 :

1

출력은 / etc / fabab 파일이 존재하지 않음을 의미하는 1입니다.

사용자 /etc/rc.local이라는 파일이 존재하는지 또는 아래와 같이 bash 조건부 실행을 사용하지 않는지 테스트 할 수도 있습니다.

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

또는

&& echo "Exists" || echo "Not Exists"

/etc/rc.local이라는 파일이 있으면 다음 출력이 표시됩니다.

Exists

또한 단일 명령을 사용하여 여러 파일의 존재 여부를 확인할 수 있습니다.

&& echo "both files exist"

또는

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

다음 출력이 표시됩니다.

both files exist

파일이 Bash에 있는지 테스트

이 섹션에서는 메시지를 출력하여 bash 스크립트를 생성하고 파일이 존재하는지 확인합니다.

test.sh라는 파일을 생성하고 파일이 있는지 확인합니다. /etc/rc.local 존재 여부 :

nano test.sh

다음 줄을 추가합니다.

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

파일을 저장하고 닫은 후 다음 명령으로 스크립트를 실행하십시오.

bash test.sh

다음 출력이 표시됩니다.

The file "/etc/rc.local" exists.

이제 test.sh 파일을 만들고 / etc / 파일이 있는지 테스트 해 보겠습니다. rc.localad가 존재하지 않음 :

nano test.sh

다음 줄을 추가합니다.

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

파일을 저장하고 닫은 후 다음 명령을 사용하여 스크립트를 실행합니다.

bash test.sh

다음 출력이 표시됩니다.

The file "/etc/rc.localad" is not exists.

파일의 존재 여부를 확인하고 bash 스크립트에서 작업을 수행 할 수도 있습니다.

예를 들어, / etc / hosts라는 파일을 찾아 파일이있는 경우 / opt 디렉토리에 복사합니다.

이렇게하려면 test.sh라는 파일을 만듭니다.

nano test.sh

다음 줄을 추가합니다.

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

파일을 저장하고 닫은 후 다음 명령을 사용하여 스크립트를 실행합니다.

이제 다음 명령을 사용하여 / opt 디렉토리를 테스트합니다.

ls /opt/hosts

다음 출력에 호스트 파일이 표시되어야합니다.

/opt/hosts

표현식을 사용할 수도 있습니다! 파일이 존재하지 않는지 확인합니다.

예를 들어 다음 명령을 실행하여 / etc / hosting 파일이 존재하지 않는지 확인합니다.

&& echo "File does not exist"

또는

test ! -f /etc/hosting && echo "File does not exist"

다음 출력이 표시됩니다.

File does not exist

디렉토리가 있는지 테스트

-d 옵션을 사용하여 디렉토리 존재 여부를 확인할 수도 있습니다.

예를 들어 / etc / apache2 디렉토리가 있는지 확인하십시오.

&& echo "Directory is exists"

또는

test -d /etc/apache2 && echo "Directory is exists"

다음 출력이 표시됩니다.

Directory is exists

조건식이있는 bash 스크립트를 만들어 디렉토리가 있는지 여부를 확인할 수도 있습니다.

아래와 같이 test.sh라는 파일을 만듭니다.

nano test.sh

다음 줄을 추가합니다.

완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 적절한 권한을 부여하십시오.

chmod 755 test.sh

다음으로 / etc / nginx 디렉토리를 사용할 수 있는지 테스트합니다. 다음 명령을 사용합니다.

./test.sh /etc/nginx

다음 출력이 표시됩니다.

Directory /etc/nginx/ exists.

다음으로 다음 명령을 사용하여 / etc / linux 디렉토리를 사용할 수 있는지 여부를 테스트합니다.

./test.sh /etc/linux

다음 출력이 표시됩니다.

Directory /etc/linux does not exists

Bash의 파일 테스트 연산자

다음 파일 테스트 연산자는 “파일”이 존재하고 특정 유형이 있는지 확인하는 데 도움이됩니다.

  • -b
    FILE이 존재하고 블록 특수 임
  • -c
    FILE이 존재하며 문자 특수 임
  • -d
    FILE이 존재하고 디렉토리
  • -e
    파일이 있음
  • -f
    파일이 존재하며 일반 파일입니다.
  • -g
    파일이 존재하고 있습니다. set-group-ID
  • -G
    FILE ex 유효 그룹 ID가 소유하고 있습니다.
  • -h
    FILE이 존재하고 심볼릭 링크입니다 (-L과 동일)
  • -k
    FILE이 존재하고 고정 비트 세트
  • -L
    FILE이 존재하고 심볼릭 링크입니다 (-h와 동일)
  • -O
    FILE이 존재하며 유효 사용자가 소유합니다. ID
  • -p
    FILE이 존재하고 명명 된 파이프입니다.
  • -r
    FILE이 존재하고 읽기 권한이 부여됨
  • -s
    FILE이 있고 크기가 0보다 큽니다.
  • -S
    FILE이 있고 소켓입니다.
  • -u
    FILE이 있고 해당 set-user-ID 비트 설정 됨
  • -w
    FILE이 있고 쓰기 권한이 부여됨
  • -x
    FILE이 있고 실행 (또는 검색) 권한이 부여됨

결론

Leave a Reply

답글 남기기

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