반응형

 

쉘 스크립트에서 날짜 형식을 사용하는 방법

 

정리. 수알치 오상문 

 

HowTo Format Date For Display or Use In a Shell Script라는 글을 정리한 내용입니다.

 

=============================================================================

이글은 리눅스, 유닉스 종류의 OS에서 사용하는 쉘 스크립트에 출력하는 날짜 형식을 제어하는 방법을 다룬다.

날짜 출력 형식 제어는 date 표준 명령을 쉘 스크립트에서 이용하면 가능하다.

 

문법

date +형식지정

또는

date +"%형식지정"

또는

date +"%형식지정%형식지정"

또는

date +"%형식지정-%형식지정"

 

월-일-연도 형식으로 출력하기

터미널에서 다음처럼 명령해보자. 

$ date +"%m-%d-%y"

결과:

02-27-07

4자리 연도로 출력하려면 y를 대문자로 수정하면 된다.

$ date +"%m-%d-%Y"

간단하게 월/일/연도 형식으로 출력하려면 다음 형식을 이용해도 된다

$ date +"%D"

 

시간만 출력하기

다음처럼 명령을 입력하여 실행한다.

$ date +"%T"

 

결과:

19:55:04

 

지역 12시간제로 출력하려면 다음처럼 입력한다. 

$ date +"%r"

결과:

07:56:05 PM

 

시:분 형식은 다음처럼 입력한다.

$ date +"%H-%M"

결과:

00-50

 

쉘 변수에 날짜/시간 형식으로 저장하기

 

쉘 프롬프트에서 아래처럼 명령을 입력하면 $NOW 변수에 값이 저장된다.

 

$ NOW=$(date +"%m-%d-%Y")

변수에 저장된 값을 화면에 출력하려면 echo 또는 printf 기능( echo / printf command) 를 이용한다.

$ echo $NOW

 

배시 쉘 스크립트 예제

다음은 오늘 날짜가 포함된 백업 파일명으로 백업하는 스크립트 예제 일부이다.

#!/bin/bash
NOW=$(date +"%m-%d-%Y")
FILE="backup.$NOW.tar.gz"
echo "/nas42/backup.$NOW.tar.gz 파일로 백업 중이니 잠시 기다려 주시기 바랍니다."
# 이하 ... 나머지 스크립트
# tar xcvf /nas42/backup.$NOW.tar.gz /home/ /etc/ /var
 

 

date 명령에서 제공하는 형식지정어 리스트

형식지정어는 출력을 제어하는데 아래 목록들의 한 조합으로 이루어질 수 있다. 

 

%형식지정어 설명
%%  '%' 문자 자체
%a 요일 약어 (예, Sun...MOn, 일...월) - local 기준
%A 요일 전체 이름 (예, Sunday...Monday, 일요일...월요일) - local 기준
%b 달 약어 (예, Jan...Dec, 1월...12월) - local 기준
%B 달 전체 이름 (예, January...December, 1월...12월) - local 기준
%c 날짜와 시간 (예, Thu Mar 3 23:05:25 2005, 2015년 12월 25일 (수) 오전 12시 50분 16초) - local 기준
%C 세기 (4자리 연도에서 앞 두 자리만 나타낸다. 예, 21)
%d 그 달의 일 (예, 01...31)
%D 날짜 mm/dd/yy (즉, %m/%d/%y)
%e 빈칸 추가된 그 달의 일 (즉, %_d)
%F 전체 날짜 yyyy-mm-dd (즉, %Y-%m-%d)
%g 년도의 뒷 두자리 (%G와 반대) -- ISO
%G 년도 모든 자리 (참조 %V) -- ISO
%h %b와 같음
%H 시간 (00..23)
%I 시간 (01..12)
%j 그 해의 일수 (001..366)
%k 시간 ( 0..23)
%l 시간 ( 1..12)
%m 달 (01..12)
%M 분 (00..59)
%n 다음 줄
%N 나노초 (000000000..999999999)
%p 오전 또는 오후 (AM 또는 PM), 알 수 없을 땐 빈칸임 - local 기준
%P %p와 같지만, 소문자임
%r 12시간제 시간 (예, 11:11:04 PM, 오후 11시 11분 04초) - local 기준
%R 24시간제 시간과 분 (%H:%M과 비슷)
%s 1970-01-01 00:00:00 UTC 이후로 지난 초
%S 초 (00..60)
%t 탭 문자
%T 시간 (즉, %H:%M:%S)
%u 주중 요일 (1..7); 1은 월요일
%U 일요일 기준으로 1년중 몇 번째 주 (00..53)
%V 월요일 기준으로 1년중 몇 번째 주 (01..53) - ISO
%w 주중 요일 (0..6), 0은 일요일
%W 월요일 기준으로 1년 중 몇 번째 주 (00..53)
%x 날짜 (예, 12/31/99) - local 기준
%X 시간 (예, 23:13:48) - local 기준
%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 알파벳 타임존 약어 (예, KST)

 

<원본: http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ >

 

 

 

 

반응형

+ Recent posts