Bash 또는 Shell에 파일이 있는지 확인하는 방법 (예제 포함)
목차
이 자습서에서는 bash 또는 셸 스크립팅에서 파일 및 디렉토리를 확인하는 데 사용할 수있는 다양한 속성을 다룹니다. ]
와 함께 bash 조건식을 사용하거나 와 함께 테스트를 사용하여 파일이 있는지 확인할 수 있습니다.
모든 예제에 bash if 및 else 연산자를 사용하므로 다음을 읽어 보시기 바랍니다. 절대 초보자를위한 Bash if else 사용 가이드
1. Bash / Shell : 파일이 존재하고 일반 파일인지 확인
이 섹션에서는 bash에 일반 파일이 있는지 확인하는 예제를 보여줍니다.
1.1 : 방법 -1 : 단일 또는 이중 괄호 사용
이중 괄호 사용 ]
#!/bin/bashFILE="/etc/passwd"if ];then echo "$FILE exists"else echo "$FILE doesn"t exist"fi
단일 대괄호 사용
#!/bin/bashFILE="/etc/passwd"if ;then echo "$FILE exists"else echo "$FILE doesn"t exist"fi
1.2 : 방법 -2 : 테스트 명령 사용
test
명령은 파일 유형을 확인하고 비교하는 데 사용됩니다. 값.
#!/bin/bashFILE="/etc/passwd"if test -f $FILE; then echo "$FILE exists"else echo "$FILE missing"fi
1.3 : 방법 -3 : 한 줄
이 예에서는 여기에 단일 또는 이중 대괄호를 사용할 수 있습니다. 셸에서 하나의 라이너 코드를 작성할 때 항상 이중 대괄호를 사용하는 것이 좋습니다. 단어 분할이 발생할 때 콘솔에 경고를받을 위험을 최소화하기 때문입니다.
#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists" || echo "$FILE missing"
성공하면 &&
뒤의 문이 실행됩니다. 첫 번째 조건이 FALSE를 반환하면 ||
명령문이 실행됩니다.
일반 파일이 bash 또는 셸 스크립트에 한 줄로 존재하는지 확인하기 위해 테스트 명령을 사용하는 것과 유사합니다. .
#!/bin/bashFILE="/etc/passwd"test -f $FILE && echo "$FILE exists" || echo "$FILE missing"
2. Bash / Shell : 파일이 있는지 확인 (비어 있거나 비어 있지 않음)
파일이 있는지 확인하려면 비어 있거나 내용이있는 경우 “-s
“속성을 사용합니다.
2.1 : 방법 -1 : 단일 또는 이중 괄호 사용
이중 괄호를 사용하여 파일이 존재하고 비어 있는지 확인하십시오. ]
#!/bin/bashFILE="/etc/passwd"if ]; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi
파일 확인 이중 괄호를 사용하여 존재하고 비어 있거나 비어 있지 않습니다.
if ; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi
2.2 : 방법 -2 : 테스트 명령 사용
테스트 명령을 사용하여 -s
속성을 결합하여 파일이 존재하고 비어 있거나 일부 내용이 있습니다.
2.3 : 방법 -3 : 한 줄
이러한 한 라이너에 이중 또는 단일 괄호를 모두 사용할 수 있지만 앞서 말했듯이 이중 괄호를 사용하는 것이 좋습니다.
#!/bin/bashFILE="/etc/passwd"test -s $FILE && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"
테스트 명령과 마찬가지로 &&
및 ||
를 사용할 수 있습니다. 연산자를 사용하여 쉘 스크립트 내에서 한 줄 명령으로 파일을 확인합니다.
#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"
3. Bash / Shell : 디렉토리가 있는지 확인
Linux에서는 모든 것이 파일이라는 것을 알고 있기를 바랍니다. 따라서 디렉토리도 파일로 간주됩니다. “-d
“속성을 사용하여 쉘 프로그래밍에 디렉토리가 있는지 확인할 수 있습니다.
3.1 : 방법 -1 : 이중 또는 단일 괄호 사용
단일 또는 이중 대괄호
]
내에서 -d
속성을 사용하여 확인할 수 있습니다. 디렉토리가있는 경우
#!/bin/bashDIR="/var/log"if ]; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi
마찬가지로이 예제에서는 단일 대괄호를 사용하여 디렉토리가 쉘 스크립트 내에 사전 설정되어 있는지 확인합니다.
#!/bin/bashDIR="/var/log"if ; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi
3.2 : 방법 -2 : 테스트 명령 사용
이 예에서는 특정 작업을 수행하기 전에 테스트 명령을 사용하여 디렉터리가 있는지 여부를 확인합니다.
#!/bin/bashDIR="/var/log"if test -d $DIR; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi
3.3 : 방법 -3 : 한 줄
이 예에서는 한 줄 형식의 단일 및 이중 대괄호를 사용하여 확인합니다. 디렉토리. 첫 번째 조건이 TRUE이면 &&
연산자 뒤의 문이 실행되고 FALSE이면 ||
조건의 문이 실행됩니다. .
#!/bin/bashDIR="/var/log"] && echo "$DIR exists" || echo "$DIR doesn"t exist"
대신
]
를 사용하는 것이 좋습니다. 쉘 프로그래밍에서 이러한 하나의 라이너 코드에 대해.
&&
및 ||
와 유사하게 테스트 명령을 사용하여 확인할 수 있습니다. 디렉토리가있는 경우
#!/bin/bashDIR="/var/log"test -d $DIR && echo "$DIR exists" || echo "$DIR doesn"t exist"
4. Bash / Shell : 디렉토리가 있는지 확인 (비어 있거나 비어 있지 않음)
셸 속성이 없습니다. 이 튜토리얼의 다른 모든 예제와 시나리오에서 사용한 것처럼 디렉토리가 비어 있는지 여부를 확인하는 데 사용할 수있는 몇 가지 방법이 있습니다.
4.1 : 방법 -1 : 디렉터리 내용 나열 및 확인
이 예에서는 디렉터리 내용을 나열하고 출력을 억제 한 다음 종료 코드를 기반으로 디렉터리가 비어 있거나 일부가 포함되어 있는지 확인합니다. content
#!/bin/bashDIR="/tmp"if ls -1qA $DIR | grep -q . ; then echo "$DIR is not -empty"else echo "$DIR is empty"fi
NOT (!
) 조건을 입력하여이 문제를 되돌릴 수도 있습니다. 따라서 다음과 같습니다.
#!/bin/bashDIR="/tmp"if ! ls -1qA $DIR | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi
두 예제 스크립트에서 출력이 동일합니다.
4.2 : 방법 -2 : 사용 find 명령
우리는 find 명령을 사용하고 출력을 억제하여 대상 디렉토리에 내용이 있는지 확인할 수 있습니다.
#!/bin/bashDIR="/tmp"if find -- "$DIR" -prune -type d -empty | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi
4.3 : 방법 -3 : 내용 나열
디렉토리가 비어 있는지 또는 일부 속성을 사용하지 않는지 쉽게 확인할 수있는 방법이 없기 때문에 다시 말씀 드렸듯이 디렉토리의 내용을 나열하겠습니다. 출력이 없으면 디렉토리가 비어 있거나 비어 있지 않은 것입니다.
#!/bin/bashDIR="/tmp"if ] ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi
5. Bash / Shell : 테스트 파일에 대한 속성 목록
마찬가지로 심볼릭 링크, 파일 권한 등과 같은 다양한 파일 유형을 확인하기 위해 쉘 스크립트와 함께 사용할 수있는 더 많은 속성이 있습니다.
속성 | 의 역할 |
---|---|
-a FILE |
FILE 존재 |
-b FILE |
FILE 가 존재하며 블록 특수 파일입니다. |
-c FILE |
가 존재하며 문자 특수 파일입니다. |
-d FILE |
FILE 가 존재하며 디렉토리입니다. |
FILE 가있는 경우 참 |
|
-f FILE |
FILE 가 존재하고 일반 파일 인 경우 참 |
-g FILE |
FILE 가 존재하고 set-group-id 비트가 설정된 경우 True |
-h FILE |
FILE 가 존재하고 심볼릭 링크 인 경우 참 |
-k FILE |
FILE 가 존재하고 “고정”비트가 설정된 경우 참 |
-p FILE |
FILE 가 존재하고 명명 된 파이프 (FIFO) |
-r FILE |
FILE 존재하며 읽을 수 있음 |
-s FILE |
FILE 가 존재하며 크기가 0보다 큽니다. |
-u FILE |
FILE 가 존재하고 set-user-id 비트가 설정된 경우 참 |
-w FILE |
FILE 가 존재하고 쓰기 가능한 경우 참 |
-x FILE |
FILE 가 존재하고 실행 가능한 경우 True |
-G FILE |
FILE 가 존재하고 유효 그룹 ID가 소유하는 경우 참 |
-L FILE |
FILE 가 존재하고 심볼릭 링크 인 경우 참 |
-N FILE |
FILE 가 존재하고 마지막으로 읽은 이후 수정 된 경우 True |
-o FILE |
FILE 가 존재하고 유효자가 소유하는 경우 참 사용자 ID |
-S FILE |
FILE 가있는 경우 참 소켓입니다 |
|
FILE1 및 FILE2 가 동일한 기기를 참조하고 inode 번호 |
FILE1 -nt FILE2 |
FILE1 가 FILE2 보다 최신 (수정 날짜에 따름) 또는 FILE1 가 있고 FILE2 가있는 경우 아님 |
FILE1 -ot FILE2 |
FILE1 가 더 오래된 경우 True FILE2 보다, 또는 FILE2 가 있고 FILE1 가없는 경우 |