‘date + FORMAT’명령 — % a, % A, % b 등은 무엇입니까? 사용자 정의 형식으로 출력 일시하게하려면

date명령은 현재 날짜와 시간을 다음과 같이 출력합니다 Fri Apr 12 15:04:03 UTC 2013.

우리가 사용할 수있는 사용자 정의 형식으로 출력 일시하게하려면 date +FORMAT이 같은 예를 들어, date "+%Y-%m-%dT%H:%M:%S%:z"같은 것을 제공합니다 2013-04-12T15:04:37+00:00.

그러나 나는 무엇을 알고 싶어 %Y, %m, %d, %H, %M, %S집합 (즉, 용어)라고, 등. 또한, T다른 것과는 달리 소위 무엇 입니까?



답변

date명령 의 POSIX 사양에 사용 된 용어 는 “변환 사양”입니다.

의 형식 문자열 date명령 밀접 C의 대한 형식 문자열에 기초 printf함수; C 표준은 또한 %d“변환 사양” 과 같은 것을 말합니다 .

T앞에는 %문자가 없습니다 : “다른 모든 문자는 변경없이 출력으로 복사됩니다.”

의 POSIX 설명의 변경 내역 섹션에 따르면 date:

LC_TIME 범주와의 일관성을 위해 필드 디스크립터 대신 변환 스펙을 참조하도록 DESCRIPTION이 업데이트되었습니다.

따라서 이전 버전의 사양에서는 “필드 설명자”라는 문구가 사용되었지만 “변환 사양”은 현재 공식 용어입니다.

물론 당신이 의미하지 않는 그런 식으로 그들에게 참조.


답변

“이스케이프 시퀀스”또는 (이 경우 “이스케이프 된 시퀀스의 특수 문자”)가 일반적인 참조 방법이라고 생각합니다. 백 슬래시 및 이스케이프 처리 된 시퀀스는 C (예 : printf)에서 많이 사용되므로 쉘에 대한 프롬프트 지정과 같이 여러 Unix 명령으로 필터링되었습니다.

“탈출 시퀀스”는 “% Y”, “% m”, “% d”등입니다. “특수 문자”는 “Y”, “m”, “d”등입니다. “%”는 “이스케이프 문자”(다음 문자에 특이하고 특별한 의미를 부여하는 문자)입니다.


답변

이 문서는 IBM의 정보 센터에서 명확하게한다고 영문 에서 %Y, %m, %d, %H, %M, %S, 등이 “라고 필드 설명자 “.

각 선행되어야 필드 설명 A를 % (퍼센트 기호). 시스템은 필드 설명자를 지정된 값으로 바꿉니다. […] date명령은 다른 문자를 변경하지 않고 출력에 복사합니다.

그것은 내 두 가지 질문 (약 % n & T)에 대답합니다. 그리고 나는 이것이 가능한 권위있는 것이라고 생각합니다.


답변

다른 사람들이 말했듯이, T은 문자 그대로 T입니다. 그러나 구체적으로 말하면 예제 는 날짜 및 시간에 대한 ISO-8601 사양을 date "+%Y-%m-%dT%H:%M:%S%:z"준수하는 형식 문자열 인 것으로 보입니다 . 여기에 날짜와 시간을 구분하는 구분자가 있습니다.T