cal用于显示日历,不传任何参数时,只显示当前月的日历。可用选项有:
-1, --one:显示当前月份日历。默认选项。
-3, --three:显示前一月、当前月以及后一月日历。
-s, --sunday:显示的日历中,星期的第一天为星期日,默认格式。
-m, --monday:显示的日历中,星期的第一天为星期一。
-j, --julian:显示儒略历日历。
-y, --year:显示整年的日历,若后面没有数字,则显示当前年的日历,若有数字,则显示指定数字年的日历。有效数字为1-9999。
-V, --version:显示版本信息。
-h, --help:显示帮助文档。
cal还可以使用选项,指定想要显示日历的年/月/日。格式为[[[day] month] year],也就是当只有一个数字时,该数字按年解析,年的有效范围是1-9999。如果有两个数字则会按月、年解析,月的有效范围1-12。三个数字则按日、月、年解析,日的有效范围取决于指定的年、月。通过选项与日期的组合可以进行灵活的展示。其中-1与-3和-s与-m分别为互斥选项,如果同时出现则后面的会覆盖前面的值,最后一个出现的生效。如cal -1 -3等效于cal -3。
cal#显示当前月的日历。
cal -1 #等效于cal。
cal -3 #显示前一月、当前月及后一月。
cal -s #显示当前月的日历,日历中,每周的第一天为星期日。等效于cal。
cal -m #显示当前月的日历,日历中,每周的第一天为星期一。
cal -3 -s #显示前一月、当前月及后一月,每周的第一天为星期日。
cal -3 -m #显示前一月、当前月及后一月,每周的第一天为星期一。
cal -j -m #显示当前月的儒略历日历,每周的第一天为星期一。
cal -j -s -3 #显示前一月、当前月及后一月的儒略历日历,每周的第一天为星期一。
cal -y #显示当前年的一整年的日历。等效于cal -y 2019、cal -s -y 2019。
cal -y -j #显示当前年的儒略历日历。等效于cal -y -j 2019、cal -s -y -j 2019。
cal -v #显示版本信息。
cal -h #显示帮助文档。
cal 33 #显示公元33年的整年日历。等效于cal -s -y 33。
cal 12 2018 #显示公元2018年12月的日历。等效于cal -1 -s 12 2018。
cal -3 12 2018 #显示公元2018年11月、12月及2019年1月的日历。
cal 11 12 2018 #显示公元2018年12月的日历,并且2018年12月11日高亮显示。
cal -3 11 12 2018 #显示公元2018年11月、12月及2019年1月的日历,并且2018年12月11日高亮显示。
cal -3 -j 11 12 2018 #显示公元2018年11月、12月及2019年1月的儒略历日历,并且2018年12月11日高亮显示。
date显示或设置当前日期/时间。可用选项有:
-d datestr,--date=datestr:显示时间描述符datestr所描述的的日期和时间。datestr几乎可以采用任何通用格式。可以包含月份名称、时区、"am\pm"、“yesterday”、“tomorrow”等等。
-f datefile,--file=datefile:将datefile中的每一行用-d进行解析,并显示解析后的日期和时间。如果datefile是“-”,则使用标准输入,当有许多日期要处理时,建议使用这种方式,因为多次启动date可执行文件的系统开销可能非常大。
-I[TIMESPEC],--iso-8601[=TIMESPEC]:以ISO 8601格式(%Y-%m-%d)显示日期。参数TIMESPEC指定要包含的时间的附加项的数量。可接受的值有“auto”(只打印日期,默认值)、“hours”(把小时添加到日期后面)、“minutes”(把小时和分钟添加到日期后面)、“seconds”(把小时、分钟和秒添加到日期后面)、“ns”(把小时、分钟、秒和纳秒添加到日期后面)。如果显示任何时间项,则使用格式“%:z”包含时区。这种格式适合做为-d与-f选项的输入,无论当前语言环境如何。
-r file,--reference=file:显示文件最后一次修改的日期和时间,而不是当前的日期和时间。
-R,--rfc-email:使用格式“%a, %d %b %Y %H:%M:%S %z”显示日期和时间,因为是在C语言环境中求值,所以缩写总是用英语表示。这种格式符合因特网消息格式(互联网电子邮件的现行和以前的标准)5322、2822和822。为了与旧版本的date兼容,--rfc-2822和--rfc-822是--rfc-email的别名。
--rfc-3339=TIMESPEC:使用因特网消息格式RFC3339格式显示日期时间。与类似--iso-8601,只不过是用空格分隔日期和时间而不是字符“T”,这种格式适合做为-d与-f选项的输入,无论当前语言环境如何。TIMESPEC指定要包含的时间的附加项的数量,可接受的参数有“date”(只打印日期,%Y-%m-%d)、“seconds”(打印完整的日期和完整的时间,用空格隔开,输出以数字时间偏移量结束,%Y-%m-%d %H:%M:%S%:z)、“ns”(与seconds类似,但是会打印纳秒,%Y-%m-%d %H:%M:%S.%N%:z)。
-s datestr,--set=datestr:将时间设置为时间描述符datestr所描述的日期和时间。
-u,--utc,--universal:打印或设置时间。使用世界标准时间,就像将环境变量TZ设置为“UTC0”一样。通常,系统忽略闰秒,从而实现UTC的近似,而不是真正的UTC。如果不加参数,则打印当前时间。如果给定参数,则按照参数中的时间进行设置。参数的格式为“MMDDhhmm[[CC]YY][.ss]”。其中“MM”代表月,“DD”代表一月中的第几天,“hh”代表小时,“mm”代表分,“CC”代表前的前两位,“YY”代表年的后两位,“.SS”代表表。此格式仅用于此选项,--date与--set不能使用。
--help:打印帮助文档。
--version:打印版本信息。
使用date时,如果不指定输出格式,则默认格式取决于区域设置LC_TIME,默认的区域设置是“C”(“POSIX”的别名),此区域设置下默认的日期时间格式为“"+%a %b %e %H:%M:%S %Z %Y"”,如“Mon Jan 21 11:41:57 CST 2019”。还可以使用“+”后面跟着格式字符串来按指定的日期时间的格式进行打印。格式字符串中,除了转换说明符之外的其他字符将按原值打印。
date #按默认的格式打印日期。
date -d "@1536854105" +"%Y-%m-%d" #使用%Y-%m-%d格式打印-d描述的时间。
date -Iseconds #以ISO 8601格式打印当前时间,精确到秒。
date -r a.sh -Ins #以ISO 8601格式打印a.sh的最后修改时间,精确到纳秒。
date -R #以rfc-email格式打印当前时间
date --rfc-3339=seconds #以rfc-3339格式打印当前时间,精确到秒。
date -s "2019-01-21 16:32:28" #将时间设置为指定的时间。
date -u #打印UTC时间。
date -u "012116372019.56"#将时间设置为指定的时间。
打印或设置硬件时钟时间。参数分为两部分,一部分是函数,另一部分是选项。
可选函数:
-h, --help :打印帮助文档。
-r, --show:读取硬件时钟并打印结果。
--set:将硬件时钟设置为--date指定的时间。
-s, --hctosys:将系统时间设置为硬件时钟时间。
-w, --systohc:将硬件时钟时间设置为软件时间。
--systz:根据当前时区设置系统时间,系统时间仅在启动后的第一次调用时重置。
--adjust:从时钟最后一次设置或校正到现在的系统漂移校正硬件时钟。
-c, --compare:定期比较系统时钟和CMOS时钟。
--getepoch:打印内核硬件时钟的纪元值,只有在Alpha机器上才有意义。
--setepoch:将内核硬件时钟的纪元值设置为--epoch指定的值,只有在Alpha机器上才有意义。
--predict:预测由--date指定的时间的硬件时间。
-V, --version:打印版本信息。
可选选项:
-u, --utc:硬件时钟的UTC时间。
--localtime:硬件时间的时间。
-f, --rtc
--directisa:直接访问ISA总线,而不是/dev/rtc,只有在ISA或Alpha机器上才有意义。
--badyear:由于BIOS的问题,忽略硬件时钟的年。
--date
--epoch
--noadjfile:不访问 /etc/adjtime,需要与--utc或--localtime一起使用。
--adjfile
--test:测试程序,不改变任何设置
-D, --debug:调试模式,有助于理解hwclock内部工作过程。
hwclock -r #打印硬件时钟的本地时间。
hwclock -r -u #打印硬件时钟的UTC时间。
hwclock -r -u --noadjfile #打印硬件时钟的UTC时间,不访问校正文件/etc/adjtime。
hwclock -s #将系统时间设置为硬件时钟时间。
hwclock -w #将硬件时钟时间设置为软件时间。
hwclock --predict --date "2019-01-22 13:19:02" #预测2019-01-22 13:19:02的硬件时间。
hwclock --getepoch #获取纪元年份。
hwclock -c #定期比较系统时钟和CMOS时钟。