[bash] OS X의`date` 명령에는 ISO 8601`-I` 옵션이 없습니까?
Bash 스크립트에서 현재 날짜 시간을 ISO 8601 형식 (바람직하게는 UTC)으로 인쇄하고 싶습니다. 이것은 다음과 같이 간단해야합니다 date -I
.
http://ss64.com/bash/date.html
그러나 이것은 내 Mac에서 작동하지 않는 것 같습니다.
$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
실제로이 man date
옵션을 나열하지 않습니다.
왜 이것이 ISO 8601 형식으로 날짜를 인쇄하는지 또는 다른 (쉬운) 방법인지 알고 있습니까? 감사!
답변
당신은 사용할 수 있습니다
date "+%Y-%m-%d"
또는 완전한 ISO-8601 호환 날짜 의 경우 다음 형식 중 하나를 사용하십시오.
date -u +"%Y-%m-%dT%H:%M:%SZ"
산출:
2011-08-27T23:22:37Z
또는
date +%Y-%m-%dT%H:%M:%S%z
산출:
2011-08-27T15:22:37-0800
답변
GNU의 날짜 date -I
와 동일 date +%F
하고, -Iseconds
그리고 -Iminutes
UTC 오프셋과도 시간을 포함한다.
$ date +%F # -I or +%Y-%m-%d
2013-05-03
$ date +%FT%T%z # -Iseconds or +%Y-%m-%dT%H:%M:%S%z
2013-05-03T15:59:24+0300
$ date +%FT%H:%M # -Iminutes or +%Y-%m-%dT%H:%M%z
2013-05-03T15:59+0300
-u
같다 TZ=UTC
. +00:00
로 교체 할 수 있습니다 Z
.
$ date -u +%FT%TZ
2013-05-03T12:59:24Z
유효한 ISO 8601 날짜 또는 시간 형식이기도합니다.
20130503T15 (%Y%m%dT%M)
2013-05 (%Y%m)
2013-W18 (%Y-W%V)
2013-W18-5 (%Y-W%V-%u)
2013W185 (%YW%V%u)
2013-123 (%Y-%j, ordinal date)
2013 (%Y)
1559 (%H%M)
15 (%H)
15:59:24+03 (UTC offset doesn't have to include minutes)
이것들은 아닙니다 :
2013-05-03 15:59 (T is required in the extended format)
201305 (it could be confused with the YYMMDD format)
20130503T15:59 (basic and exteded formats can't be mixed)
답변
GNU와 BSD 날짜 모두에서 작동하는 간단한 대안은 다음과 같습니다.
date -u +%FT%T%z
답변
coreutils 패키지는 GNU 버전의 도구를 제공합니다. 설치하기 위해서:
$ brew install coreutils
제공되는 내용을 볼 수 있습니다.
$ brew list coreutils
날짜와 함께 제공됩니다.
$ brew list coreutils | grep date
이것은 표준 GNU 날짜 명령이므로 -I 스위치를 사용합니다.
$ gdate -I
2016-08-09
답변
일반적인 date
형식 지정 옵션을 사용하십시오.
date '+%Y-%m-%d'
편집 : 시간과 UTC를 포함하려면 다음과 같습니다.
date -u -Iseconds
date -u '+%Y-%m-%dT%k:%M:%S%z'
답변
Bash의 기능이 아니며 date
바이너리 의 기능입니다 . Linux에서는 일반적으로 GNU coreutils 버전이 date
있지만 OSX에는 BSD 레거시 유틸리티가 있습니다. GNU 버전은 반드시 옵션 패키지로 설치하거나 직접 교체 할 수 있습니다. 예를 들어 Perl과 같이 간단한 단일 라이너 여야한다고 생각합니다.
답변
다른 답변을 한 단계 더 발전 시키면 ~ / .bashrc 또는 ~ / .zshrc에 함수를 추가하여 날짜 -I
플래그 를 추가 할 수 있습니다 .
date() {
if [ "$1" = "-I" ]; then
command date "+%Y-%m-%dT%H:%M:%S%z"
else
command date "$@"
fi
}