嵌入式 linux下date命令详解以及如何在Makefile中定义宏并在c中进行使用来定义软件版本号
2014-01-10 14:32
901 查看
定义版本号:Makefile 示例:
EXEC = systools
#OBJS = *.c cgihtml/*.c channel/*.c md5/*.c
OBJS = *.c cgihtml/*.c md5/*.c rs2ip/*.c
#OBJS = *.c md5/*.c
VERSION="2.6.100"
#Notice that the date is GMT
BUILD_TIME="$(shell TZ=CST date -u "+%Y-%m-%d %H:%M:%S CST")"
all: $(EXEC)
$(EXEC): $(OBJS)
FLTFLAGS="$(FLTFLAGS) -s 65536" \
$(CC) -DINHAND_INNER_VERSION=\"$(VERSION)\" -DINHAND_PRODUCT_BUILD_TIME=\"$(BUILD_TIME)\" $(LDFLAGS) -Imd5 -Irs2ip -I./ -o $@ $(OBJS) $(LIBCRYPT) $(LDLIBS$(LDLIBS_$@))
#$(CC) $(LDFLAGS) -Icgihtml -Imd5 -I./ -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))
#$(CC) $(LDFLAGS) -Icgihtml -Ichannel -Imd5 -I./ -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))
romfs:
$(ROMFSINST) /bin/$(EXEC)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
-rm -f $(EXEC) cgihtml/*.o
注:
红色标记的变量在C是按照字符串进行打印即可!
date命令详解:
使用方式 :
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
说明 :
date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
时间方面 :
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
参数 :
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
例子 :
显示时间后跳行,再显示目前日期 :
date '+%T%n%D'
显示月份与日数 :
date '+%B %d'
显示日期与设定时间(12:34:56) :
date --date '12:34:56'
注意 :
当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
http://witmax.cn/linux-date.html
显示时间是个常用的命令,在写shell脚本中也经常会用到与日期相关文件名或时间显示。无论是linux还是windows下都是date命令。
Linux下date命令用法
date [OPTION]… [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date命令参数
-d, –date=STRING 显示STRING指定的时间 -f, –file=DATEFILE 类似–date参数显示DATEFILE文件中的每行时间 -ITIMESPEC, –iso-8601[=TIMESPEC] 以ISO 8601 格式显示日期/时间。TIMESPEC为”date”(只显示日期)、”hours”、”minutes”、”senconds”(显示时间精度)之一,默认为”date”。 -r, –reference=FILE 显示文件的最后修改时间 -R, –rfc-2822 以RFC-2822兼容日期格式显示时间 -s, –set=STRING 设置时间为STRING -u, –utc, –universal 显示或设定为Coordinated Universal Time时间格式
date命令输出显示格式
%% 字符% %a 星期的缩写(Sun..Sat) %A 星期的完整名称 (Sunday..Saturday) %b 月份的缩写(Jan..Dec) %B 月份的完整名称(January..December) %c 日期时间(Sat Nov 04 12:02:33 EST 1989) %C 世纪(年份除100后去整) [00-99] %d 一个月的第几天(01..31) %D 日期(mm/dd/yy)
%e 一个月的第几天 ( 1..31) %F 日期,同%Y-%m-%d
%g 年份(yy) %G 年份(yyyy)
%h 同%b %H 小时(00..23)
%I 小时(01..12)
%j 一年的第几天(001..366) %k 小时( 0..23)
%l 小时( 1..12)
%m 月份(01..12)
%M 分钟(00..59)
%n 换行 %N 纳秒(000000000..999999999) %p AM or PM
%P am or pm
%r 12小时制时间(hh:mm:ss [AP]M) %R 24小时制时间(hh:mm)
%s 从00:00:00 1970-01-01 UTC开始的秒数 %S 秒(00..60)
%t 制表符 %T 24小时制时间(hh:mm:ss) %u 一周的第几天(1..7); 1 表示星期一 %U 一年的第几周,周日为每周的第一天(00..53) %V 一年的第几周,周一为每周的第一天 (01..53) %w 一周的第几天 (0..6); 0 代表周日 %W 一年的第几周,周一为每周的第一天(00..53) %x 日期(mm/dd/yy)
%X 时间(%H:%M:%S)
%y 年份(00..99)
%Y 年份 (1970…)
%z RFC-2822 风格数字格式时区(-0500) %Z 时区(e.g., EDT), 无法确定时区则为空
以下是做的一些实验,便于理解
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
EXEC = systools
#OBJS = *.c cgihtml/*.c channel/*.c md5/*.c
OBJS = *.c cgihtml/*.c md5/*.c rs2ip/*.c
#OBJS = *.c md5/*.c
VERSION="2.6.100"
#Notice that the date is GMT
BUILD_TIME="$(shell TZ=CST date -u "+%Y-%m-%d %H:%M:%S CST")"
all: $(EXEC)
$(EXEC): $(OBJS)
FLTFLAGS="$(FLTFLAGS) -s 65536" \
$(CC) -DINHAND_INNER_VERSION=\"$(VERSION)\" -DINHAND_PRODUCT_BUILD_TIME=\"$(BUILD_TIME)\" $(LDFLAGS) -Imd5 -Irs2ip -I./ -o $@ $(OBJS) $(LIBCRYPT) $(LDLIBS$(LDLIBS_$@))
#$(CC) $(LDFLAGS) -Icgihtml -Imd5 -I./ -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))
#$(CC) $(LDFLAGS) -Icgihtml -Ichannel -Imd5 -I./ -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))
romfs:
$(ROMFSINST) /bin/$(EXEC)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
-rm -f $(EXEC) cgihtml/*.o
注:
红色标记的变量在C是按照字符串进行打印即可!
date命令详解:
使用方式 :
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
说明 :
date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
时间方面 :
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
参数 :
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
例子 :
显示时间后跳行,再显示目前日期 :
date '+%T%n%D'
显示月份与日数 :
date '+%B %d'
显示日期与设定时间(12:34:56) :
date --date '12:34:56'
注意 :
当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
http://witmax.cn/linux-date.html
显示时间是个常用的命令,在写shell脚本中也经常会用到与日期相关文件名或时间显示。无论是linux还是windows下都是date命令。
Linux下date命令用法
date [OPTION]… [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date命令参数
-d, –date=STRING 显示STRING指定的时间 -f, –file=DATEFILE 类似–date参数显示DATEFILE文件中的每行时间 -ITIMESPEC, –iso-8601[=TIMESPEC] 以ISO 8601 格式显示日期/时间。TIMESPEC为”date”(只显示日期)、”hours”、”minutes”、”senconds”(显示时间精度)之一,默认为”date”。 -r, –reference=FILE 显示文件的最后修改时间 -R, –rfc-2822 以RFC-2822兼容日期格式显示时间 -s, –set=STRING 设置时间为STRING -u, –utc, –universal 显示或设定为Coordinated Universal Time时间格式
date命令输出显示格式
%% 字符% %a 星期的缩写(Sun..Sat) %A 星期的完整名称 (Sunday..Saturday) %b 月份的缩写(Jan..Dec) %B 月份的完整名称(January..December) %c 日期时间(Sat Nov 04 12:02:33 EST 1989) %C 世纪(年份除100后去整) [00-99] %d 一个月的第几天(01..31) %D 日期(mm/dd/yy)
%e 一个月的第几天 ( 1..31) %F 日期,同%Y-%m-%d
%g 年份(yy) %G 年份(yyyy)
%h 同%b %H 小时(00..23)
%I 小时(01..12)
%j 一年的第几天(001..366) %k 小时( 0..23)
%l 小时( 1..12)
%m 月份(01..12)
%M 分钟(00..59)
%n 换行 %N 纳秒(000000000..999999999) %p AM or PM
%P am or pm
%r 12小时制时间(hh:mm:ss [AP]M) %R 24小时制时间(hh:mm)
%s 从00:00:00 1970-01-01 UTC开始的秒数 %S 秒(00..60)
%t 制表符 %T 24小时制时间(hh:mm:ss) %u 一周的第几天(1..7); 1 表示星期一 %U 一年的第几周,周日为每周的第一天(00..53) %V 一年的第几周,周一为每周的第一天 (01..53) %w 一周的第几天 (0..6); 0 代表周日 %W 一年的第几周,周一为每周的第一天(00..53) %x 日期(mm/dd/yy)
%X 时间(%H:%M:%S)
%y 年份(00..99)
%Y 年份 (1970…)
%z RFC-2822 风格数字格式时区(-0500) %Z 时区(e.g., EDT), 无法确定时区则为空
以下是做的一些实验,便于理解
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$date -d "2010-11-1523:00:01"
Mon Nov 15 23:00:01 PST 2010
$date -d "2010/11/15 23:0:2"
Mon Nov 15 23:00:02 PST 2010
$date -d "2010/11/15T23:0:2"
Mon Nov 15 08:00:02 PST 2010
$
$echo "2010-11-1523:00:01" > date.txt
$echo "2010/11/15 23:00:02" >> date.txt
$cat date.txt
2010-11-1523:00:01
2010/11/15 23:00:02
$date -f date.txt
Mon Nov 15 23:00:01 PST 2010
Mon Nov 15 23:00:02 PST 2010
$
$ls -l
total 4
-rw-r--r-- 1 znan sybase 40 Nov 15 21:14 date.txt
$date -r date.txt
Mon Nov 15 21:14:36 PST 2010
$
$date -I
2010-11-15
$date -Ihours
2010-11-15T21-0800
$date -Iminutes
2010-11-15T21:16-0800
$date -Iseconds
2010-11-15T21:16:24-0800
$
$date -R
Mon, 15 Nov 2010 21:47:08 -0800
$date -u
Tue Nov 16 05:47:13 UTC 2010
$
$date +"Today is %A."
Today is Monday.
$date +"Date:%b. %e, %G"
Date:Nov. 15, 2010
$date +"Date: %b.%e, %G"
Date: Nov.15, 2010
$date +"%x %X"
11/15/2010 09:50:21 PM
$date +"%Y-%m-%d %H:%M:%S"
2010-11-1521:51:32
$date +"%Y-%m-%d %I:%M:%S %p"
2010-11-1509:51:55 PM
$
相关文章推荐
- 如何使用eclipse进行嵌入式Linux的开发
- 如何使用 date 命令 | Linux 中国
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- Linux如何安装使用pidstat命令以对进程数据进行监控
- 嵌入式 Linux学习之dpkg命令详解以及apt-get命令
- 如何使用命令进行Mac和Linux之间的文件传输
- Date命令详解——如何设置linux系统时间
- 如何使用eclipse进行嵌入式Linux的开发
- 如何使用eclipse进行嵌入式Linux的开发
- 在linux下如何使用Makefile对fortran程序进行编译
- linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
- C语言中的复杂声明和定义,以及如何使用typedef进行简化
- linux中make命令的简单使用以及Makefile文件的书写
- linux中make命令的简单使用以及Makefile文件的书写
- Linux下使用rsync进行数据备份的命令详解
- Linux 中makefile的命令包定义及使用
- 在Linux平台上使用Cmake进行交叉编译替代嵌入式平台所使用的Makefile
- linux下如何使用sftp命令进行文件上传和下载
- 嵌入式 linux系统如何查看内存使用情况详解
- ntpdate命令_Linux ntpdate 命令用法详解:使用网络计时协议(NTP)设置日期和时间