date
명령어는 리눅스 배포판과 macOS의 기본 쉘인 Bash에서 일반적으로 사용됩니다. 이 글에서는 명령줄에서 날짜를 자유자재로 다루는 방법과 쉘 스크립트에서 날짜를 단순 출력 이상의 용도로 활용하는 방법을 상세히 설명합니다.
먼저, date
명령어를 실행해 봅시다. 현재 시간대의 날짜와 시간이 출력됩니다.
date
기본 출력 형식은 다소 전통적입니다. 시간대 정보 뒤에 연도가 표시되는 대신 월과 일이 먼저 나오는 이유는 무엇일까요? 걱정하지 마세요. date
명령어는 다양한 출력 형식을 지원하며, 40가지가 넘는 옵션을 통해 원하는 대로 정확하게 출력 형식을 지정할 수 있습니다.
옵션을 사용하려면 date
명령어 뒤에 공백, 더하기 기호 +
, 백분율 기호 %
와 함께 옵션을 입력합니다. 예를 들어, %c
옵션은 현재 로케일의 형식에 맞춰 날짜와 시간을 출력합니다. 로케일은 운영체제 설치 시 설정한 지리적, 문화적 정보에 따라 결정되며, 통화 기호, 용지 크기, 시간대 등 여러 요소를 포함합니다.
date +%c
이제 연도가 출력 결과에서 더 자연스러운 위치에 나타납니다.
여러 옵션을 동시에 적용할 수도 있습니다. 이러한 옵션들을 형식 문자열이라고 부릅니다. 날짜(%A
), 일(%d
), 월 이름(%B
)을 함께 출력하려면 다음 명령어를 사용합니다.
date +%A%d%B
명령은 실행되었지만, 결과가 보기 좋지 않습니다. 걱정하지 마세요. 형식 문자열을 따옴표로 묶으면 공백을 포함할 수 있습니다. +
기호는 따옴표 밖에 있어야 한다는 점을 주의하세요.
date +"%A %d %B"
형식 문자열에 텍스트를 추가하는 것도 가능합니다.
date +"Today is: %A %d %B"
date
명령어의 다양한 옵션을 모두 보려면 매뉴얼 페이지를 참조하는 것이 좋습니다. 그러나 많은 옵션 중에서 원하는 것을 찾는 것은 다소 복잡할 수 있습니다. 그래서 여기서는 옵션을 그룹별로 나누어 더 쉽게 살펴볼 수 있도록 정리했습니다.
날짜 및 시간 표시 옵션
%c
: 시간대를 포함하여 사용자의 로케일 형식으로 날짜와 시간을 표시합니다.
날짜 표시 옵션
%D
: 날짜를 mm/dd/yy 형식으로 출력합니다.%F
: 날짜를 yyyy-mm-dd 형식으로 출력합니다.%x
: 사용자의 로케일 형식으로 날짜를 출력합니다.
요일 표시 옵션
%a
: 월, 화, 수 등과 같이 요일의 약자를 출력합니다.%A
: 월요일, 화요일, 수요일 등과 같이 요일의 전체 이름을 출력합니다.%u
: 월요일=1, 화요일=2, 수요일=3 등과 같이 숫자로 요일을 출력합니다.%w
: 일요일=0, 월요일=1, 화요일=2 등과 같이 숫자로 요일을 출력합니다.%d
: 01, 02, 03… 09 등과 같이 필요에 따라 앞에 0을 붙여서 날짜를 출력합니다.%e
: ‘ 1’, ‘ 2’, … ‘ 9’ 와 같이 필요에 따라 앞에 공백을 붙여 날짜를 출력합니다. (아포스트로피는 출력되지 않습니다.)%j
: 필요한 경우 최대 2개의 선행 0을 붙여 날짜를 출력합니다.
주 표시 옵션
%U
: 일요일을 주의 첫 번째 날로 간주하여 연중 주 번호를 출력합니다. 예를 들어, 해당 연도의 세 번째 주, 해당 연도의 20번째 주 등입니다.%V
: 월요일을 주의 첫 번째 날로 간주하여 ISO 연중 주 번호를 출력합니다.%W
: 월요일을 주의 첫 번째 날로 간주하여 연중 주 번호를 출력합니다.
월 표시 옵션
%b
또는 %h
: Jan, Feb, Mar 등과 같이 월 이름의 약자를 출력합니다.%B
: 1월, 2월, 3월 등과 같이 월의 전체 이름을 출력합니다.%m
: 01, 02, 03… 12와 같이 필요에 따라 앞에 0을 붙여 월 수를 출력합니다.
연도 표시 옵션
%C
: 연도 없이 세기를 출력합니다. 예를 들어, 2019년에는 20을 출력합니다.%y
: 연도를 두 자리 숫자로 출력합니다. 예를 들어, 2019년에는 19를 출력합니다.%Y
: 연도를 네 자리 숫자로 출력합니다.
시간 표시 옵션
%T
: 시간을 HH:MM:SS 형식으로 출력합니다.%R
: 초 없이 시간을 HH:MM 형식으로 출력합니다.%r
: 12시간제와 오전/오후 표시기를 사용하여 시간을 출력합니다.%X
: 로케일 형식에 따라 24시간제 시간을 출력합니다. (테스트 결과, 이 옵션은 %r과 동일하게 동작했습니다. 영국 로케일, GMT 시간대 설정에서 AM/PM 표기가 없는 24시간제 시간을 예상했지만 결과는 %r과 같았습니다.)
시간 표시 옵션
%H
: 00, 01, 02… 23과 같이 24시간제 시간을 출력합니다.%I
: 12시간제 시간을 출력합니다. (필요한 경우 앞에 0을 붙입니다.)
분 표시 옵션
%M
: 01, 02, 03… 59와 같이 분을 출력합니다. (필요한 경우 앞에 0을 붙입니다.)
초 표시 옵션
%s
: 1970년 1월 1일 00:00:00 이후의 초 수를 출력합니다. 이를 유닉스 시간이라고 합니다.%S
: 01, 02, 03… 59와 같이 초를 출력합니다. (필요한 경우 앞에 0을 붙입니다.)%N
: 나노초를 출력합니다.
시간대 정보 표시 옵션
%z
: 시간대와 UTC 간의 시차를 출력합니다.%:z
: 시간과 분 사이에 콜론 :
을 사용하여 시간대와 UTC 간의 시차를 출력합니다.%::z
: 시간, 분, 초 사이에 콜론 :
을 사용하여 시간대와 UTC 간의 시차를 출력합니다.%Z
: 알파벳 시간대 이름을 출력합니다.
서식 관련 옵션
%p
: AM 또는 PM 표시기를 대문자로 출력합니다.%P
: am 또는 pm 표시기를 소문자로 출력합니다. (두 옵션의 대소문자가 반대라는 점을 주의하세요.)%t
: 탭을 출력합니다.%n
: 새 줄을 출력합니다.
기타 옵션 수정 옵션
이러한 수정자는 %와 다른 옵션 문자 사이에 삽입하여 표시 방식을 변경할 수 있습니다. 예를 들어, %-S
는 한 자리 초 값 앞에 있는 0을 제거합니다.
-
: 단일 하이픈은 단일 숫자 값에서 0 채우기를 방지합니다._
: 단일 밑줄은 단일 숫자 값 앞에 공백을 추가합니다.0
: 한 자리 값 앞에 0을 붙입니다.^
: 가능한 경우 대문자를 사용합니다 (모든 옵션이 이 수정자를 따르는 것은 아닙니다).#
: 가능한 경우 옵션의 기본 케이스와 반대를 사용합니다 (모든 옵션이 이 수정자를 따르는 것은 아닙니다).
두 가지 유용한 팁
파일의 마지막 수정 시간을 알아보려면 -r
옵션을 사용합니다. 이 옵션은 %
기호 대신 -
(하이픈)을 사용하며, +
기호는 필요하지 않습니다. 홈 폴더에서 다음 명령을 시도해 보세요.
date -r .bashrc
TZ
설정을 사용하면 명령 실행 중에 시간대를 변경할 수 있습니다.
TZ=GMT date +%c
스크립트에서 날짜 활용
Bash 쉘 스크립트에서 날짜와 시간을 출력하는 방법은 간단합니다. 다음 내용을 담은 텍스트 파일을 생성하고 gd.sh
로 저장하세요.
#!/bin/bash TODAY=$(date +"Today is %A, %d of %B") TIMENOW=$(date +"The local time is %r") TIME_UK=$(TZ=BST date +"The time in the UK is %r") echo $TODAY echo $TIMENOW echo $TIME_UK
다음 명령어를 실행하여 스크립트에 실행 권한을 부여하고 실행 가능하게 만드세요.
chmod +x gd.sh
다음 명령으로 스크립트를 실행하세요.
./gd.sh
date
명령을 사용하여 타임스탬프를 만들 수 있습니다. 아래 스크립트는 타임스탬프를 사용하여 디렉토리를 만들고, 현재 폴더의 모든 텍스트 파일을 복사합니다. 스크립트를 주기적으로 실행하면 텍스트 파일의 다양한 스냅샷을 저장하는 폴더를 만들 수 있습니다. 이것은 강력한 백업 시스템이 아니며, 단지 예시를 위한 것입니다.
다음 내용을 담은 텍스트 파일을 만들고 snapshot.sh
로 저장하세요.
#!/bin/bash # 날짜와 시간 가져오기 date_stamp=$(date +"%F-%H-%M-%S") # 해당 이름으로 디렉토리 생성 mkdir "$date_stamp" # 현재 폴더에서 파일을 복사 cp *.txt "$date_stamp" # 완료 메시지 출력 후 종료 echo "Text files copied to directory: "$date_stamp
다음 명령어를 실행하여 스크립트에 실행 권한을 부여하고 실행 가능하게 만드세요.
chmod +x snapshot.sh
다음 명령으로 스크립트를 실행하세요.
./snapshot.sh
스크립트가 실행된 날짜와 시간을 이름으로 하는 디렉토리가 생성된 것을 확인할 수 있습니다. 해당 디렉토리 안에는 텍스트 파일의 복사본이 있습니다.
약간의 아이디어와 창의력을 발휘하면 date
명령어 또한 매우 유용하게 사용할 수 있습니다.