logo

Bash 스크립팅 – 파일이 존재하는지 확인하는 방법

이 기사에서는 파일이 존재하는지 확인하는 bash 스크립트를 작성합니다.

구문:

  • 테스트 [표현]
  • [ 표현 ]
  • [[ 표현 ]]

여기서는 표현으로 다음과 같이 씁니다. 매개변수 그리고 파일 이름 . 표현식에 사용할 수 있는 몇 가지 매개변수를 살펴보겠습니다. –

  • 에프: 파일이 공통(일반) 파일로 존재하면 True를 반환합니다.
  • -d : 디렉토리가 존재하면 True를 반환합니다. -e : 어떤 유형의 파일이라도 존재하면 True를 반환합니다. -c : 캐릭터 파일이 존재하면 True를 반환합니다. -r : 읽을 수 있는 파일이 있으면 True를 반환합니다.
  • ~ 안에 : 쓰기 가능한 파일이 있으면 True를 반환합니다. .
  • -x : 실행 파일이 있으면 True를 반환합니다. -p : 파일이 파이프로 존재하면 True를 반환합니다. -S : 파일이 소켓으로 존재하면 True를 반환합니다. -s : 파일이 존재하고 파일 크기가 0이 아니면 True를 반환합니다. -L : 심볼릭 링크 파일이 존재하면 True를 반환합니다. . -g : 파일이 존재하고 그룹 ID 설정 플래그가 설정된 경우 True를 반환합니다. -G : 파일이 존재하고 처리 중인 동일한 그룹 ID를 보유하는 경우 t는 True를 반환합니다. -k : 파일이 존재하고 고정 비트 플래그가 설정된 경우 True를 반환합니다.

이제 두 파일 간의 비교를 위한 몇 가지 매개변수가 더 있습니다.

    -ef: 두 파일이 모두 존재하고 동일한 파일을 나타내는 경우 True를 반환합니다.

예 :

FirstFile -ef SecondFile>
    -nt: FirstFile이 Secondfile보다 최신이면 True를 반환합니다.

예 :

string.compareto C#
FirstFile -nt FileOld>
    -ot: FirstFile이 SecondFile보다 오래된 경우 True를 반환합니다.

예:

FirstFile -ot SecondFile>

구문을 기반으로 몇 가지 예를 들어보겠습니다.

    [ 표현식 ]: 먼저 FirstFile.sh라는 파일을 만들고 여기에 다음 스크립트를 작성합니다.
#!/bin/bash # using [ expression ] syntax and in place # of File.txt you can write your file name if [ -f 'File.txt' ]; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

이제 다음 명령을 사용하여 파일을 저장하고 실행하십시오.

$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

출력 :

산출

메모: File.txt가 시스템에 존재하기 때문입니다. 그래서 File is presents 가 인쇄되었습니다.

    테스트 [표현식]: 이제 FirstFile.sh에서 위 스크립트를 다음과 같이 수정합니다.
#!/bin/bash # using test expression syntax and in place # of File2.txt you can write your file name if test -f 'File2.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

이제 다음 명령을 사용하여 파일을 다시 저장하고 실행하십시오.

$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

출력 :

산출

메모: File2.txt가 시스템에 존재하지 않기 때문입니다. 그래서 File is not 존재하지 않는다고 인쇄되었습니다.

    [[ 표현식 ]]: FirstFile.sh에서 위 스크립트를 다음과 같이 다시 수정합니다.
#!/bin/bash # using [[ expression ]] syntax and in place # of File3.txt you can write your file name if test -f 'File3.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi>

이제 다음 명령을 사용하여 파일을 다시 저장하고 실행하십시오.

 $ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

출력 :

산출

메모: File3.txt가 시스템에 존재하기 때문입니다. 그래서 File is Exige 가 인쇄되었습니다.

자바의 디자인 패턴

매개변수를 기반으로 한 예를 살펴보겠습니다.

    -d 매개변수 사용: FirstDir.sh라는 파일을 생성합니다. 그리고 그 안에 다음 스크립트를 작성하세요
!/bin/bash if [[ -d 'GFG_dir' ]] ; # Here GFG_dir is directory and in place of GFG_dir you can write your Directory name then echo 'Directory is exist' # If GFG_dir exist then it will be printed else echo 'Directory is not exist' # If GFG_dir is not exist then it will be printed fi>

이제 다음 명령을 사용하여 파일을 저장하고 실행하십시오.

유튜브를 다운로드하려면 VLC
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

출력 :

산출

메모: GFG_dir이 시스템에 존재하기 때문입니다. 그래서 Directory가 존재한다고 인쇄되었습니다.

마찬가지로 다음을 사용할 수 있습니다. -에프 , -그것은 , -안에 , -아르 자형 , -씨 ,등. (그들의 용도에 따라) 대신 -디 다양한 유형의 파일이 있는지 확인합니다.

두 파일을 비교한 예를 살펴보겠습니다.

  • 사용 -nt 매개변수

Comparison_File.sh라는 파일 이름을 만들고 다음 스크립트를 작성합니다.

#!/bin/bash # New_file.txt and Old_File.txt are names of two files. if [[ 'New_File.txt' -nt 'Old_File.txt' ]] ; then # This will be printed if Condition is true echo 'New_File.txt is newer than Old_File.txt' else # This will be printed if Condition is False echo 'New_File.txt is not newer than Old_File.txt' fi>

이제 다음 명령을 사용하여 파일을 저장하고 실행하십시오.

 $  chmod +x ./Comparison_File.sh $ ./Comparison_File.sh>

출력 :

산출

메모: 두 파일이 모두 시스템에 존재하고 New_File.txt가 Old_File.txt보다 최신이므로

파일이 존재하지 않는지 확인하는 예제를 살펴보겠습니다.

Check_Exist.sh라는 파일을 생성합니다. 그리고 그 안에 다음 스크립트를 작성하세요

#!/bin/bash # using ! before -f parameter to check if # file does not exist if [[ ! -f 'GFG.txt' ]] ; then # This will printed if condition is True echo 'File is not exist' else # This will be printed if condition is False echo 'File is exist' fi>

이제 다음 명령을 사용하여 파일을 저장하고 실행하십시오.

 $ chmod +x ./Check_Exist.sh $  ./Check_Exist.sh>

출력 :

산출

메모: GFG.txt가 시스템에 없습니다. 따라서 파일이 존재하지 않는다고 인쇄됩니다.

If-else 조건을 사용하지 않은 예를 살펴보겠습니다.

Geeks_File.sh라는 파일을 만들고 그 안에 다음 스크립트를 작성합니다.

#!/bin/bash # If File exist then first statement will be # printed and if it is not exist then 2nd # statement will be printed. [ -f 'GFG_File.txt' ] && echo 'File is exist' || echo 'File is not exist'>

이제 다음 명령을 사용하여 파일을 저장하고 실행하십시오.

런타임 에러
 $ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh>

출력 :

산출

메모: GFG_File.txt가 시스템에 존재하기 때문입니다. 그래서 File is Exige 가 인쇄되었습니다.