$(date)
bash 쉘 스크립트에서 사용하려고 시도했지만 날짜 YYYY-MM-DD
형식을 원합니다 .
이걸 어떻게 얻습니까?
답변
bash (> = 4.2)에서는 외부 date
(보통 GNU 날짜) 대신 printf의 내장 날짜 형식 기 (bash의 일부)를 사용하는 것이 좋습니다 .
따라서 :
# put current date as yyyy-mm-dd in $date
# -1 -> explicit current date, bash >=4.3 defaults to current time if not provided
# -2 -> start time for shell
printf -v date '%(%Y-%m-%d)T\n' -1
# put current date as yyyy-mm-dd HH:MM:SS in $date
printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1
# to print directly remove -v flag, as such:
printf '%(%Y-%m-%d)T\n' -1
# -> current date printed to terminal
bash (<4.2)에서 :
# put current date as yyyy-mm-dd in $date
date=$(date '+%Y-%m-%d')
# put current date as yyyy-mm-dd HH:MM:SS in $date
date=$(date '+%Y-%m-%d %H:%M:%S')
# print current date directly
echo $(date '+%Y-%m-%d')
다른 사용 가능한 날짜 형식은 날짜 매뉴얼 페이지 에서 볼 수 있습니다 (bash 이외의 외부 명령의 경우).
man date
답변
시험: $(date +%F)
답변
다음과 같이 할 수 있습니다 :
$ date +'%Y-%m-%d'
답변
ISO 8601 표준 날짜 형식을 찾고 있으므로 GNU 날짜 (또는 1988보다 최신 날짜 명령)가있는 경우 다음을 수행하십시오.$(date -I)
답변
date -d '1 hour ago' '+%Y-%m-%d'
출력은입니다 2015-06-14
.
답변
$(date +%F_%H-%M-%S)
사이에 콜론 (:)을 제거하는 데 사용할 수 있습니다.
산출
2018-06-20_09-55-58
답변
최근 Bash (버전 ≥ 4.2)에서는 printf
format 수정 자와 함께 내장 기능 을 사용할 수 있습니다 %(strftime_format)T
.
$ printf '%(%Y-%m-%d)T\n' -1 # Get YYYY-MM-DD (-1 stands for "current time")
2017-11-10
$ printf '%(%F)T\n' -1 # Synonym of the above
2017-11-10
$ printf -v date '%(%F)T' -1 # Capture as var $date
printf
date
Bash 내장이기 때문에 date
외부 명령 이므로 훨씬 빠릅니다 .
또한 서브 쉘을 포크 할 필요가 없으므로 printf -v date ...
보다 빠릅니다 date=$(printf ...)
.