date的%h和%b格式代码产生相同输出的历史原因是什么?


5

是否有历史原因date%h,并%b格式代码产生相同的输出?

$ echo $(date +\%h)
Mar

$ echo $(date +\%b)
Mar

date格式代码中也存在其他冗余,但今天早上引起了我的注意。另见本页


确实。 %h似乎这两种选择更加奇怪。
wallyk 2016年

我的猜测是,最初有两种不同的实现使用了不同的格式代码。为了兼容性,两者都保留了下来。
Barmar 2016年

Answers:


1

根据http://linux.die.net/man/3/strftime%h在单一UNIX规范中(下面用'SU'表示)但%b不是。

%b
The abbreviated month name according to the current locale.

%h
Equivalent to %b. (SU)

这是我能找到的唯一区别。man date/ strptime/ strftime不包含此信息。


这很好。谢谢。在该页面上进一步阅读,我找到了答案的其余部分。该date功能包含这些冗余以符合各种标准。具体到我的问题,%b符合ANSI C标准,而如您所述,%h符合单一UNIX规范。因此,为了与各种标准兼容,存在冗余。各种编码符合的附加标准是SVr4,C89,C99,Olson的时区包,glibc,glibc2,POSIX.1和POSIX.2。与此处的评论相结合,我会给你勾选标记。
2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.