이“printf”명령은 무엇을합니까?


15

나는 튜토리얼을 겪고 있었고 거기에서 명령을 받았다.

printf "%(%s)T"

이 명령의 출력은 다음과 같습니다.

1454299615

아무도이 명령이 무엇이며 출력이 무엇을 의미하는지 말해 줄 수 있습니까?


이것은 쉘에 의존하는 것 같습니다. 당신 printf은 내장입니까? /usr/bin/printfUbuntu 14.04에서 오류가 발생했습니다 printf: %(: invalid conversion specification. 당신이 사용하는 경우 bash. man bash기본 제공 문서를 사용해보십시오 .
arielf

답변:


17

형식화 된 시간을로 표현하는 방법 printf입니다.

형식은 다음과 같습니다.

%(FORMAT)T

어디 FORMAT의해 정의된다 strftime(3).

따라서 신기원 시간 (1970-01-01 00:00:00 UTC 이후의 초 단위 시간)을 얻으려면 다음 strftime(3)형식이 필요 합니다 %s.

printf "%(%s)T\n"

참고 또한 필요 \n로 줄 바꿈을 추가하는 말 printf(달리 echo기본적으로 추가되지 않습니다).

예:

$ printf "%(%s)T\n"
1454300377

$ printf "%(%Y-%m-%d)T\n"
2016-02-01

$ printf "%(%Y-%m-%d %H:%M:%S)T\n"
2016-02-01 10:20:27

완벽을 기하기 위해 date비슷한 strftime(3)형식으로 명령을 사용 하여 시간을 얻을 수도 있습니다.

$ date '+%s'
1454300542

$ date '+%Y-%m-%d'    ## Short form: date -I
2016-02-01

$ date '+%Y-%m-%d %H:%M:%S'
2016-02-01 10:22:47

참고 :이 동작은 bashksh의 내장 기능 printf에만 적용 /usr/bin/printf되며 csh, 및 zsh내장 기능 에서는 작동하지 않습니다 .


@rtecxs 난 그냥 명확하게 물건을 유지하기 위해 다른 곳으로 편집을 옮겼습니다 .. 어쨌든 감사합니다 :)
heemayl

이 기능은 문서화되어 있습니까? printf(1)맨 페이지 에서 보지 못했습니다 .
Nate Eldredge

@NateEldredge printf는 여기에 내장되어 있습니다 (외부는 동일한 동작을 help printf
갖지만
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.