본문 바로가기
Shell

test (파일 확인 명령어)

by yororing 2024. 6. 5.

00 개요

  • 역시나 shell script에서 등장하기에 정리해 놓으려 한다..

01 test 명령어란

1. test 정의

  • 시험 ㅎㅎ

2. test 명령어 기능

  •  파일 타입을 확인하고 값들을 비교한다
  • 파일의 존재 유무 / 타입 / 권한을 확인할 때 사용한다
  • 조건문이 들어가야할 위치에 test가 광범위하게 사용된다
  • EXPRESSION이 주어졌을 경우, EXPRESSION에 의해 결정된 상태(true or false)와 함께 종료
  • EXPRESSION이 없을 경우 기본값은 false 상태로 exit

3. test 명령어 문법

# test EXPRESSION
# test

# [ EXPRESSION ]		# 띄어쓰기 주의!
# [ ]
# [ OPTION
  • [ 도 명령문이기 때문에 반드시 대괄호 [ ] 와 expression 사이에는 빈칸이 있어야 함
  • 유닉스 시스템에서는 명령문과 argument 사이에 빈칸이 있어야 함
  • 반환값: 명령의 결과가 긍정(true)이면 '0', 부정(false)이면 '1' 반환 (C언어와 반대!)

02 test 옵션

기본 옵션설명
--help이 help 내용을 출력 후 exit
--versionversion 정보 출력 후 exit
옵션설명
-e 파일이름파일이 존재하는지 여부
-f 파일이름일반 파일인지 여부
-b 파일이름파일이 블록파일로 존재하는지 여부
-c 파일이름파일이 캐릭터파일로 존재하는지 여부
-d 파일이름파일이 디렉토리인지 여
-g 파일이름SGID가 설정되어있는지 여부
-u 파일이름SUID가 설정되어있는지 여부
-k 파일이름sticky bit가 설정되어있는지 여부 (sticky bit가 설정된 파일/디렉토리는 생성한 사용자만이 삭제 가능)
-h 파일이름
-L 파일이름
파일이 심볼릭 링크인지 여부
-r 파일이름현 프로세스가 파일에 읽기 권한이 있는지 여부
-w 파일이름파일에 쓰기 권한이 있는지 여부
read-only 파일시스템에서는 쓰기 권한이 있어도 쓰기가 안 될 수 있음
-x 파일이름파일에 실행 권한이 있는지 여부
디렉토리에 실행권한이 있으면 cd 사용 가능
-p 파일이름파일이 이름이 있는 파이프인지 여부 (FIFO)
-s 파일이름파일 사이즈가 0 초과인지 여부
-t FileDescriptor파일디스크립터가 현 터미널에서 열렸는지 여부
파일1 -nt 파일2파일1이 파일2보다 새로운 파일인지 여부 (newer than)
파일1 -ot 파일2파일1이 파일2보다 오래된 파일인지 여부 (older than)
파일1 -ef 파일2파일1이 파일2의 또 다른 이름인지 여부 (symbolic link 또는 hard link)
-n 문자열문자열의 길이가 0 초과 (non-zero)
-z 문자열문자열의 길이가 0 (zero)
문자열1 = 문자열2문자열1과 문자열2가 일치
문자열1 != 문자열2문자열1과 문자열2가 불일치
문자열문자열은 NOT NULL
정수1 -eq 정수2정수1과 정수2는 일치
정수1 -ne 정수2 정수1과 정수2는 불일치
정수1 -gt 정수2 정수1은 정수2보다 큰 (greater than)
정수1 -ge 정수2 정수1은 정수2보다 크거나 같은 (greater or equal)
정수1 -lt 정수2 정수1은 정수2보다 작은 (lesser than)
정수1 -le 정수2 정수1은 정수2보다 작거나 같은 (lesser or equal)
!부정
-aAND
-oOR (-a 연산자가 -o 보다 우선순위가 높음)
\(Expression\)'\'과 함께 쓰이는 괄호는 그룹을 지정할 때 사용

참조

  1. man test
  2. https://storycompiler.tistory.com/107
  3.  

'Shell' 카테고리의 다른 글

#! 셔뱅이란 (shell)  (0) 2024.09.10
fatal (exit code variable 종료 상태 변수)  (0) 2024.06.07
while문 사용법 (shell script)  (1) 2024.06.04
Shell Script 함수 만들기  (0) 2024.04.30
Shell 변수 (variable)  (0) 2024.04.30