로깅을 조금 더 쉽게하기 위해 쉘 스크립트에서 타임 스탬프 변수를 만들려고합니다. 스크립트 시작 부분에 변수를 작성하고 발행 할 때마다 현재 시간을 인쇄하고 싶습니다 echo $timestamp
. 생각보다 어렵다는 것이 증명되었습니다. 내가 시도한 몇 가지 사항은 다음과 같습니다.
timestamp="(date +"%T")"
에코가 출력됩니다 (date +"%T")
timestamp="$(date +"%T")"
echo는 변수가 초기화 된 시간을 인쇄합니다.
내가 시도한 다른 것은 더 이상 작동하지 않는 약간의 변형입니다. 누구든지 내가하려는 일을 성취하는 방법을 알고 있습니까?
답변
고정 변수가 정의 된 시간이 아닌 현재 타임 스탬프를 얻으려면 변수가 아닌 함수를 사용하는 것이 좋습니다 .
#!/bin/bash
# Define a timestamp function
timestamp() {
date +"%T"
}
# do something...
timestamp # print timestamp
# do something else...
timestamp # print another timestamp
# continue...
%T
지정자가 제공 한 형식이 마음에 들지 않으면에서 허용하는 다른 시간 변환 지정자를 결합 할 수 있습니다 date
. GNU의 date
경우 공식 문서에서 https://www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers 에서 이러한 지정자의 전체 목록을 찾을 수 있습니다.
답변
유닉스 타임 스탬프를 얻으려면 다음을 사용해야합니다.
timestamp=$(date +%s)
%T
당신에게 시간을 줄 것입니다; %H:%M:%S
( http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ 를 통해 ) 와 동일
답변
DATE=`date "+%Y%m%d"`
DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too
답변
ISO 8601 형식 ( 2018-12-23T12:34:56
)은 UNIX 타임 스탬프보다 읽기 쉽습니다. 그러나 일부 OS :
에서는 파일 이름을 가질 수 없습니다 . 따라서 대신 다음과 같은 것을 사용하는 것이 좋습니다.
2018-12-23_12-34-56
다음 명령을 사용하여이 형식의 타임 스탬프를 얻을 수 있습니다.
TIMESTAMP=`date +%Y-%m-%d_%H-%M-%S`
이것은 많은 응용 프로그램에서 사용하는 형식입니다. 이것에 대한 또 다른 좋은 점은 파일 이름이 이것으로 시작하면 알파벳순으로 정렬 할 수 있으며 날짜순으로 정렬된다는 것입니다.
답변
우분투 14.04를 사용하고 있습니다.
내 시스템의 올바른 방법은입니다 date +%s
.
의 출력 date +%T
은 같습니다 12:25:25
.
답변
명령 대체를 사용하십시오.
timestamp=$( date +%T )
답변
당신이 사용할 수있는
timestamp=`date --rfc-3339=seconds`
이것은 형식으로 제공 2014-02-01 15:12:35-05:00
백틱 ( `
) 문자는 그 사이에있는 것을 평가하여 결과를 줄에 포함시킵니다. date --help
다른 옵션이 있습니다.