date [옵션] [포맷]
date [-u|--utc|--universal] [MMDDhhmm[[CC]yy][.ss]]
date 명령어는 지정된 형식에 따라 현재 시간을 표시하거나 시스템 시간을 설정합니다. 많은 셸 스크립트에서 date 명령어가 사용되며, 예를 들어 백업 시 날짜가 포함된 압축 파일을 생성하는 데 활용됩니다.
(1). 옵션
-d,--date=STRING STRING으로 지정된 시간을 현재 시간 대신 표시합니다. 이 옵션은 시스템 시간을 변경하지 않습니다.
-f,--file=DATEFILE DATEFILE의 각 줄에 지정된 시간을 표시하며, 각 줄이 --date의 매개변수인 것처럼 동작합니다.
-I[TIMESPEC],--iso-8601[=TIMESPEC] ISO-8601 형식으로 날짜/시간을 출력합니다. TIMESPEC의 값은 date, hours, minutes, seconds, ns이며, 어디까지 출력할지를 결정합니다. 기본값은 date로 연월일만 출력합니다.
-r,--reference=FILE FILE의 마지막 수정 시간을 표시합니다.
-R,--rfc-2822 RFC-2822 형식으로 날짜와 시간을 출력합니다. 예: Sat, 27 Apr 2019 17:05:27 +0800
--rfc-3339=TIMESPEC RFC-3339 형식으로 날짜와 시간을 출력합니다. TIMESPEC의 값은 date, seconds, ns이며, 어디까지 출력할지를 결정합니다.
-s,--set=STRING STRING에 따라 시간을 설정합니다.
-u,--utc,--universal UTC(협정 세계시)를 표시하거나 설정합니다.
(2). 포맷
%% % 문자 이스케이프
%a 현재 로케일의 요일 약어 (Sun..Sat)
%A 현재 로케일의 요일 전체 이름 (Sunday..Saturday)
%b 현재 로케일의 월 약어 (Jan..Dec)
%B 현재 로케일의 월 전체 이름 (January..December)
%c 현재 로케일의 날짜와 시간
%C 세기, %Y와 유사
%d 월의 일 (01..31)
%D 날짜, %m/%d/%y와 동일
%e 월의 일, 0 제거, %_d와 동일
%F 전체 날짜, %Y-%m-%d와 동일
%g ISO 형식 연도의 마지막 두 자리
%G ISO 형식 연도, 보통 %V와 함께 사용
%h %b와 동일
%H (24시간제) 시간 (00..23)
%I (12시간제) 시간 (01..12)
%j 연도의 날짜 (001..366)
%k (24시간제) 시간, 0 제거, %_H와 동일 (0..23)
%l (12시간제) 시간, 0 제거, %_I와 동일 (1..12)
%m 월 (01..12)
%M 분 (00..59)
%n 줄 바꿈
%N 나노초 (000000000..999999999)
%p 현재 로케일의 AM/PM, 알 수 없으면 빈 문자열
%P %p와 유사하지만 소문자(am, pm)
%r 12시간제 시간 표시, hh:mm:ss AM/PM
%R 24시간제 시간과 분 표시, %H:%M과 동일
%s 1970년 1월 1일 0시 0분 0초부터 현재까지의 초 수
%S 초 (00..60)
%t 탭 문자
%T 시간, %H:%M:%S와 동일
%u 주의 몇 번째 날 (1..7), 1은 월요일
%U 주의 몇 번째 주 (00..53), 일요일을 주의 시작으로
%V 주의 몇 번째 주 (ISO 표준), 월요일을 주의 시작으로 (01..53)
%w 주의 몇 번째 날 (0..6), 0은 일요일
%W 주의 몇 번째 주 (00..53), 월요일을 주의 시작으로
%x mm/dd/yy 형식의 현재 날짜 표시
%X %H:%M:%S 형식의 현재 시간 표시 (12시간제)
%y 연도의 마지막 두 자리 (00..99)
%Y 연도 (1970..)
%z 숫자 시간대, +hhmm 형식 (예: -0400)
%:z 숫자 시간대, +hh:mm 형식 (예: -04:00)
%::z 숫자 시간대, +hh:mm:ss 형식 (예: -04:00:00)
%:::z 숫자 시간대, 필요한 정밀도 포함 (예: -04,+05:30)
%Z 시간대 이름, 약어 (예: EDT)<br></br>기본적으로 데이터의 빈 부분은 0으로 채워집니다. 다음 옵션은 % 뒤에 사용됩니다:
- 채우기 없음
_ 공백으로 채우기
0 0으로 채우기
^ 가능하면 대문자 사용 (100% 보장되지 않음)
# 가능하면 대소문자 반전 (100% 보장되지 않음)
(3). 사용 예제
- 현재 날짜 표시
[user@linux ~]$ date +%F
2023-11-15
[user@linux ~]$ date +%Y-%m-%d
2023-11-15
[user@linux ~]$ date +%Y%m%d
20231115
[user@linux ~]$ date +%x
11/15/2023
[user@linux ~]$ date +%m/%d/%Y
11/15/2023
- 현재 시간 표시
[user@linux ~]$ date +%T
14:30:45
[user@linux ~]$ date +%H:%M:%S
14:31:22
[user@linux ~]$ date +%X
02:31:45 PM
[user@linux ~]$ date +%r
02:32:10 PM
[user@linux ~]$ date +%R
14:33
[user@linux ~]$ date +%H:%M
14:33
- 날짜와 시간 함께 표시
[user@linux ~]$ date
Wed Nov 15 14:33:28 KST 2023
[user@linux ~]$ date +"%F %T"
2023-11-15 14:34:05
[user@linux ~]$ date +"%Y-%m-%d %H:%M:%S"
2023-11-15 14:35:18
- 시간 설정
시간 설정에는 root 권한이 필요합니다
[root@linux ~]# date -s "20230101"
2023년 01월 01일 일요일 00:00:00 KST
[root@linux ~]# date
2023년 01월 01일 일요일 00:00:02 KST
[root@linux ~]# date -s 20231115
2023년 11월 15일 수요일 00:00:00 KST
[root@linux ~]# date
2023년 11월 15일 수요일 00:00:02 KST
(4). 확장: 네트워크 시간 동기화
[root@linux ~]# ntpdate -u ntp.kornet.kr
15 Nov 14:42:18 ntpdate[2156]: step time server 210.95.192.115 offset 12345.678901 sec
[root@linux ~]# date
2023년 11월 15일 수요일 14:42:22 KST
일반적으로 사용되는 NTP 서버: 한국표준과학연구원: 141.22.254.2 한국인터넷정보센터: time.kriss.re.kr 미국: time.nist.gov 서울대학교: time.snu.ac.kr 카이스트: time.kaist.ac.kr 포항공과대학교: time.postech.ac.kr 한국외국어대학교: time.hufs.ac.kr Asia: asia.pool.ntp.org