본문 바로가기
IT/Linux_리눅스

[Linux] test 명령어로 파일 존재 여부 확인하기

by 능보테 2021. 2. 8.
728x90
반응형

안녕하세요. 이번 포스팅에서는 리눅스의 test 명령을 사용해서 특정 파일이 있는지 존재 여부를  확인하는 방법을 알아보도록 하겠습니다.

 


 

 

0. test 명령어

 

리눅스에서는 파일이 존재하는 지의 경우를 확인해야 할 때가 꽤 있습니다.

 

쉘스크립트 상에서 특정 상태를 확인 후에 작업을 하기 위한 경우나, 어떤 파일을 수정하는 경우에도 

 

파일의 존재여부를 파악해야 합니다. 

 

 


 

 

1. test 명령어 사용하기 ($ 와 사용)

 

test를 사용하는 방법은 두 가지 방법이 있습니다.  

 

1. test 명령줄
2. [ 명령줄 ] 

 

첫번째는 test 명령어 뒤에 처리할 명령줄이 나오는 일반적인 명령어 형식이라 익숙합니다.

 

그렇지만 test 명령어는 두번째로 명시된 형식으로 사용해도 명령줄 자체에는 test 명령어가 없지만 test 명령어로 실행됩니다.

 

즉, 위의 두문장은 똑같은 결과물을 내는 같은 명령문입니다. 

 

두번째 명령어 사용시에는 '[' 뒤와 ']' 앞에 띄어쓰기를 항상 명시해야 합니다.

 

그 이유는 'test' 와 '[' 자체는 완전히 같은 의미이므로 띄어쓰기 뒤에 있는 것을 명령어로 인자로 처리하게됩니다.

 

test 뒤에 띄어쓰기를 하고 인자를 입력하는 것과 동일한 형태가 됩니다. 

 

간단하게 test 명령어를 시험해보겠습니다. 


아래와 같이 test.txt 라는 임시파일을 만들어서 test 명령어를 입력해봅니다.

 

단순하게 test test.txt를 치면 정상적으로 명령어가 실행되지만 아무 값도 반환하지 않습니다.

 

그렇지만 최근 명령어의 종료상태를 담고 있는 특수변수인 '$'를 이용하여 그 변수에 담긴 값을 확인하면

 

'0'을 반환하게 됩니다.

 

일반적으로 불 대수 / 프로그래밍 상에서는 1이 참(True), 0이 거짓(False) 이지만 

 

$? 의 경우는 정상적으로 명령어가 수행됬을 때, 0을 반환합니다. 일반적인 경우와 반대네요.

 

test 명령어

 

 


 

2. test 명령어 사용하기 (if문과 함께 사용)

 

이번에는 test 명령어를 if문안에서 사용해보는 상황을 만들어 보겠습니다. 

 

아래와 같이 test.txt 의 파일이 존재할 때 "true"를, 존재하지 않는 경우에 "false" 를 반환하는 간단한 if 문을 만들어서 실행을 합니다.

 

test.txt 가 존재하므로 true를 반환합니다. 

 

if문과 test 명령어

 

그렇다면 위에서 말씀드린대로 test와 '['가 동일하다는 것을 확인하기 위해 문법을 바꿔보겠습니다.

 

아래와 같이 test 명령어 대신 '[ ]' 를 사용해도 동일한 결과를 얻을 수 있다는 것을 확인할 수 있습니다. 

 

 

 

if문과 '[' 명령어 

 

 


 

본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.

인용 시 출처와 같이 공개해주세요!

도움이 되셨다면 댓글 또는 공감 부탁드립니다!

728x90
반응형

댓글