다음 형식의 지침을 보고 있습니다.
$ printf [format] $elapsed
초 단위 로 표현됩니다 $elapsed
. "hh:mm:ss"를 출력하고 싶습니다. 나는 format
그것을 이해할 수 없다남성. 누구든지 제안을 할 수 있나요?
답변1
printf
ksh93 셸의 내장 기능을 사용하고 $elapsed
86400(1일) 미만이라고 가정하면 다음과 같습니다.
TZ=UTC0 printf '%(%T)T\n' "#$elapsed"
또는 printf
최신 버전의 bash 셸에 내장된 기능을 사용하세요(ksh93 기능의 하위 집합을 호환되지 않는 방식으로 복사함).
TZ=UTC0 printf '%(%T)T\n' "$elapsed"
%(strftime-format)T
타임스탬프로 해석되는 매개변수를 취하고 strftime()
형식 사양에 따라 형식을 지정하는 ksh93 확장입니다. 여기서 %T
약어는 %H:%M:%S
HH:MM:SS 24시간 형식으로 시간을 제공합니다. Unix epoch 시간 ksh93
을 포함하여 다양한 타임스탬프 형식을 처리하며 다음 과 같이 해석되는 경우를 제외하고 Unix epoch 시간으로 해석되는 숫자만 처리합니다.#number
bash
-1
지금그리고 -2
쉘이 호출된 시간으로 해석됩니다.
zsh
셸과 strftime
내장 구성요소를 사용하세요 .
zmodload zsh/datetime
TZ=UTC0 strftime %T $elapsed
GNU 또는 busybox 사용 date
:
date -ud "@$elapsed" +%T
$elapsed
이는 기본적으로 1970-01-01 00:00:00 +0000 이후의 Unix 초 수인 Unix epoch 시간으로 해석되므로 1970년 1월 1일에 해당하는 UTC 시간을 얻을 TZ=UTC0
수 있습니다 .-u
그런데,당신이 링크한 매뉴얼 페이지printf
GNU 구현과 printf
내장 bash
GNU 셸( printf
표준 유틸리티의 완벽하게 호환되지 않는 두 가지 구현) 간의 혼합을 문서화하려는 시도(및 실패)처럼 보입니다 . 저는 해당 사이트를 신뢰하지 않습니다.
달리기man printf
귀하의 시스템에서매뉴얼 페이지 받기당신의독립 printf
실행형 유틸리티 또는 info bash printf
또는 info zsh printf
매뉴얼 페이지당신의printf
shell zsh나 bash 에는 자체 내장 문서가 없습니다 (대부분의 쉘에는 있습니다).
1 그러나 fish
쉘 내에서 실행 하면 man printf
Fish 내장 기능에 대한 매뉴얼 페이지가 제공됩니다 printf
.