쉘 스크립트에서 날짜 형식을 사용하는 방법
정리. 수알치 오상문
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/ >
'Linux, Mac' 카테고리의 다른 글
이것이 리눅스다(CentOS 8) (0) | 2021.11.27 |
---|---|
리눅스(Linux) 웹서버 구축 (CentOS7, Nginx, Volta, node, pm2, python) (0) | 2021.11.27 |
우분투에서 Visual Studio Code에서 C/C++ 프로그래밍 (0) | 2021.02.15 |
작고 가벼운 리눅스 여섯 가지 (0) | 2020.01.19 |
리눅스(우분투) 멀티 부팅 순서 변경 (GRUB 부팅 설정 변경) (0) | 2018.12.03 |