0%

Linux最常用的几个时间日期命令

桃花谢了春红,太匆匆,无奈朝来风雨晚来风。

时光只解催人老,不信多情,长恨离亭,泪滴春衫酒易醒。

时间就在指缝间,悄然的离去了。


一日难再晨及时当勉励 date

date命令可以用来打印显示亦或者更改日期和时间。

看看官方的定义如下:

date - print or set the system date and time

用法如下:

1
2
$ date [OPTION]... [+FORMAT]
$ date [-u | --utc| --universal] [MMDDhhmm[[CC]YY][.ss]]

较常用的OPTION为:

  • -R : 显示时区
  • -u, --utc, --universal:打印或者设置世界协调时
  • -d, --date=STRING:显示STRING的时间

默认输入

date 命令默认情况下为CST时区,

1
2
$ date
Mon Jun 5 15:11:44 CST 2014

显示时区

如果加上 -R参数就可以带上时区,比如我们的东八区

1
2
$ date -R
Mon, 05 Jun 2014 15:15:25 +0800

世界协调时

选项-u, --utc, --universal可以显示世界协调时

1
2
3
4
5
6
7
8
$ date -u
Mon Jun 5 07:15:46 UTC 2014

$ date --utc
Mon Jun 5 07:15:48 UTC 2014

$ date --universal
Mon Jun 5 07:15:55 UTC 2014

格式化日期

可以通过不同的参数来格式化日期,这里需要注意的是:不同的大小写代表的是不同的含义

比较常用的日期和时间如下:

1
2
3
4
5
6
7
8
# 显示年月日时分秒
$ date +%Y-%m-%dT%H:%M:%S
2013-01-17T18:01:08

# 或者 下面一样的效果

$ data +%FT%T
2013-01-17T18:02:12

时光总是催人老 time

Linux time命令的用途,在于测量指定命令消耗的时间。

最常用的在于大概评估一个程序的运行时间。

这个命令很容易给人的印象是与date混淆起来

官方定义为:

time - time a simple command or give resource usage

可以给出包括系统的粗略时间。

语法

1
$ time [options] command [arguments...]

参数

​ - 可以认为没有参数

示例

会显示程序或命令执行的消耗时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ time ls /var
account crash games lib log ......

real 0m0.014s
user 0m0.003s
sys 0m0.010s


$ time ps -aux
root 295490 0.0 0.0 0 0 ? S Feb20 0:10 [ldlm_cb00_019
root 297717 0.0 0.0 0 0 ? S< Jan29 0:04 [kworker/58:1H
root 304801 0.0 0.0 0 0 ? S Mar19 0:00 [kworker/1:1]
root 311110 0.0 0.0 0 0 ? S Mar20 0:00 [kworker/66:0]
root 313146 0.0 0.0 0 0 ? S Mar20 0:01 [kworker/73:2]
root 313461 0.0 0.0 0 0 ? S< Jan29 0:00 [kworker/44:2H
root 313914 0.0 0.0 0 0 ? S Feb21 0:10 [kworker/9:2]
root 314118 0.0 0.0 0 0 ? S Feb21 3:34 [kworker/18:1]
root 315801 0.0 0.0 0 0 ? S Mar20 0:00 [kworker/79:2]

real 0m0.180s
user 0m0.019s
sys 0m0.114

唯一需要留意的是上面的三个含义:

  1. real : 程序从开始调用到最后终止之间经过的实时时间
  2. user : 程序本身,以及它所调用的库中的子例程使用的CPU 时间
  3. sys : 程序直接或间接调用的系统调用执行的CPU 时间

休息一会 sleep

Linux sleep命令可以用来将目前动作延迟一段时间。

sleep的官方定义为:

sleep - delay for a specified amount of time

或许你觉得计算机太累,让它稍事休息,亦或许过个个把钟头需要喝杯水,此时sleep就有点小作用了。

其用法如下:

1
$ sleep [--help] [--version] number[smhd]

除了帮助和版本信息,基本没有参数了。

其中的number是必须的,也就是sleep多久的数字,默认为s秒。其他的几个含义为:

  • s second 秒
  • m minute分钟
  • h hour 小时
  • d day 天

休息5分钟

工作太累了,学习太累了,躺着太累了,休息5分钟

1
$ sleep 5m

1小时后提醒我

1
$ sleep 1h

时分秒搭配使用

当然,sleep也是支持时分秒搭配使用的,如下所示:

1
$ sleep 1h 2m 3s

将会sleep 1个小时2分钟3秒。

倒计时计时器

当然也可以做个循环计时器,通过sleep 1

1
$ echo "five"   && sleep 1 && echo "four"   && sleep 1 && sleep 1 && echo "three"   && sleep 1 && echo "two" && sleep 1 && echo "one" && echo "Stop"

结合脚本

sleep在程序里面使用比较频繁,特别是单片机的走马灯等。而Linux的sleep,也是比较常与bash脚本来配合使用,如下:

1
2
3
4
5
#!/bin/bash
echo -e "start to sleep 15 seconds......"
sleep 15
echo -e "continue to run program......"
./program

可看黄道吉日的 cal

cal用于显示当前日历信息或者指定日期的公历信息。

cal的官方定义为:

cal, ncal — displays a calendar and the date of Easter

cal也是来自于calendar的前三个字母。

其用法有好几种,比如可以为:

1
2
3
4
5
6
$ cal [-31jy] [-A number] [-B number] [-d yyyy-mm] [[month] year]
$ cal [-31j] [-A number] [-B number] [-d yyyy-mm] -m month [year]
$ ncal [-C] [-31jy] [-A number] [-B number] [-d yyyy-mm] [[month] year]
$ ncal [-C] [-31j] [-A number] [-B number] [-d yyyy-mm] -m month [year]
$ ncal [-31bhjJpwySM] [-A number] [-B number] [-H yyyy-mm-dd] [-d yyyy-mm] [-s country_code] [[month] year]
$ ncal [-31bhJeoSM] [-A number] [-B number] [-d yyyy-mm] [year]

cal可以没有参数,也可以多个参数组合。

[[month] year]的含义是,比如有year这个参数,然后可以出现month year两个参数。

主要使用的参数为:

  • -3 :显示前后和当前3个月的日历
  • -y :显示一年的日历,此时不要指定月份参数
  • -j :显示在当年中的第几天(儒略日)

显示当前月份的日历

默认无参数会显示当前的月份等信息

1
2
3
4
5
6
7
8
$ cal
February 2011
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28

显示指定年月的日历

比如希望看看2012年12月份,可以运行如下命令:

1
2
3
4
5
6
7
8
9
$ cal 12 2012
December 2012
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

显示3个月的日历

-3将显示当前月份、前一个月、后一个月,共计3个月的日历。

1
2
3
4
5
6
7
8
9
10
$ cal -3
2011
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2 3 4 5
2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28 27 28 29 30 31
30 31

显示一年的日历

使用-y参数,可以查看一年的日历。

1
2
3
4
5
6
7
8
9
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
$ cal -y
2011
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2 3 4 5
2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28 27 28 29 30 31
30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 7 1 2 3 4
3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
24 25 26 27 28 29 30 29 30 31 26 27 28 29 30


July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 1 2 3
3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
31

October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2 3
2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
30 31

显示儒略日

-j用于显示儒略日,这里的儒略日的概念为从1月1日开始计算的多少天,这个在倒计时的时候挺好用的。

1
2
3
4
5
6
7
8
9
$ cal -j 
cal 02 2011 -j
February 2011
Su Mo Tu We Th Fr Sa
32 33 34 35 36
37 38 39 40 41 42 43
44 45 46 47 48 49 50
51 52 53 54 55 56 57
58 59

Linux 炫技收集

点滴技巧,让你的Linux使用更加得心应手。
linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的linux技巧。

炫技 - 快速执行上一条命令

第一种方法:在终端输入两个感叹号,然后回车就可以快速地执行上一条命令了。

1
$ !!

!$

上一个命令

这个命令目测,用的人不多,其实比较有用,且有效。

1
$ cd !$

表明的意思是将上一个命令的参数作为cd的参数来使用。

清空文件内容

比如有一个大文件,你想快速删除,或者不想删除,但是想清空内容:

1
>filenamefilename

将日志同时记录文件并打印到控制台

在执行shell脚本,常常会将日志重定向,但是这样的话,控制台就没有打印了,如何使得既能记录日志文件,又能将日志输出到控制台呢?

1
$ ./test.sh |tee test.log

终止并恢复进程执行

我们使用ctrl+z 暂停一个进程的执行,也可以使用fg恢复执行。例如我们使用

1
$ cat filename

当我们发现文件内容可能很多时,使用ctrl+z暂停程序,而如果又想要从刚才的地方继续执行,则只需要使用fg命令即可恢复执行。或者使用bg使得进程继续在后台执行。

计算程序运行时间

我们可能会进程写一些小程序,并且想要知道它的运行时间,实际上我们可以很好的利用time命令帮我们计算,例如:

1
2
3
4
$ time ./app 
real 0m0.088s
user 0m0.084s
sys 0m0.004s

它会显示系统时间,用户时间以及实际使用的总时间。

屏幕冻结

程序运行时,终端可能输出大量的日志,你想简单查看一下,又不想记录日志文件,此时可以使用ctrl+s键,冻结屏幕,使得日志不再继续输出,而如果想要恢复,可使用ctrl+q退出冻结。

终端快捷操作

删除从光标到结尾处的命令文本

ctrl+k

历史命令快速执行

我们都知道history记录了执行的历史命令,而使用 !+历史命令前的数字,可快速执行历史命令。另外,还可以使用ctrl+r搜索执行过的命令。

时间炫技

下面这个命令基本就能得到所有的信息了

1
2
3
$ date +%Y年%m月%d日%H时%M分%S秒第%j日%q季度第%U周周%A时区%Z

2014年05月06日13时13分14秒第126日2季度第18周周Tuesday时区CST

sed command examples

When you copy a DOS file to Unix, you could find \r\n in the end of each line. This example converts the DOS file format to Unix file format using sed command.

1
$sed 's/.$//' filename

Print file content in reverse order

1
$ sed -n '1!G;h;$p' thegeekstuff.txt

Add line number for all non-empty-lines in a file

1
$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

More sed examples: Advanced Sed Substitution Examples

黑珠圆笔

文文:爸爸..,给我用一下你的黑珠圆笔

爸爸:【黑线飘过】啥?

文文:黑珠圆笔,就这个 【手里拿着一个黑色圆珠笔】

爸爸:好吧,这就是黑珠圆笔

老脚和小脚

文文:爸爸..,我的脚好看吧

爸爸:好看,特别好看,跟爸爸的一样

文文:不一样,爸爸的是老脚,我的是漂亮的小脚

山姆·麦克布雷尼

山姆·麦克布雷尼(Sam McBratney),1945年出生于爱尔兰的贝尔法斯特。他在爱尔兰的著名学府都柏林主日学院求学多年,原本只是位教师,却在为患有阅读障碍的学生创作故事的同时,喜爱上了故事里丰富的想象力,进而陆续创作了数十本童书,包括JUST ONE!、《你们都是我的最爱》以及全球销售超过一千五百万本的《猜猜我有多爱你》。

安妮塔·婕朗(Anita Jeram),出生于英国朴次茅斯。在曼彻斯特工艺专科学校学习过美术,当她还是一个学生的时候,就为孩子们出版了第一本书。主要作品有《亲亲晚安》(Kiss Good Night)、《塞姆,你觉得不舒服吗?》(Don’t You Feel Well,Sam?)、《小兔,我的甜心》(Bunny,My Honey)。

山姆·麦克布雷尼1945年出生于爱尔兰的贝尔法斯特。他在爱尔兰的著名学府都柏林主日学院求学多年,后成为职业作家。继《猜猜我有多爱你》之后,他又与安妮塔·婕朗合作了《你们都是我的最爱》。

路德维格贝梅尔曼斯

路德维格·贝梅尔曼斯1898年4月27日出生于奥地利蒂罗尔州。他的父亲是一位画家,母亲是一位富有的啤酒酿造商的女儿。在他很小的时候,父母就离婚了,他跟随外公长大。他喜欢画画,却遭到了外公的反对。作为一名“问题少年”,他从公立学校转到私立学校,不断地惹是生非,后来还是辍学了。他拿着一叠叔叔写给纽约有名旅馆经理的介绍信,远渡重洋去了美国。可他在纽约的旅馆里没干多久,就因为穿着一只黄色的鞋子和一只白色的鞋子上班而丢掉了饭碗。不过,只要他还能付得起学费,他就去上美术课。1917年,他应征入伍,没有上前线,而是被送到了佐治亚州的一家精神病院当了一名陪伴和德语教师。后来根据这段亲身经历,他还写了一本名叫《我与美国的战争》的引人发笑的传记。第一次世界大战结束后,他又重新回到纽约,并且加入了美国籍。1925年,他得到了一个与别人共同经营“哈布斯堡王朝餐厅”的机会,他在餐厅的墙壁上画画,在自己住的公寓的窗户、窗帘和墙壁上画故乡的风景。有一天,Viking 出版社的童书编辑梅·玛斯看到了这些画,便鼓励他创作图画书。1939年出版的《玛德琳》不但成了他的代表作,还为他赢得了凯迪克奖银奖。十几年后,他又推出了《玛德琳的救援》、《玛德琳和坏帽子》、《玛德琳和吉普赛人》、《玛德琳在伦敦》,其中《玛德琳的救援》获得了1954年凯迪克奖金奖。他一生只创作了十三本图画书。

你看起来好像很好吃

可爱萌萌哒霸王龙

很久以前,在一个晴朗的日子里,山嘭嘭嘭地喷火,地咚咚咚地摇晃。这时,甲龙宝宝出生了。一天,它遇到了一头霸王龙,霸王龙流着口水,想要猛扑过去。就在这时,霸王龙忽然听到“爸爸”,原想吃掉小甲龙的霸王龙被小甲龙的一句“我想早点长得像爸爸一样!”击中了心底的柔情,从而改变了小甲龙和霸王龙之间的关系。小甲龙与霸王龙之间的感人的亲情让人为之动容,孩子在听故事之余,更可以潜移默化地体验到爱与被爱的快乐、人与人之间交往的真谛。

你真好

可爱的薄片龙改变了霸王龙

从前,有一只粗暴的、坏心眼的、狡猾的、任性的霸王龙,他总是欺负弱小。但他掉到海里,被善良的薄片龙救出来后,他就跟薄片龙交上朋友。他们天天在一起,霸王龙想到永远跟薄片龙在一起。可是,一天薄片龙被海里的坏家伙咬……

我爱你

可爱萌萌哒霸王龙

以前,以前,很久以前,恐龙们住在世界上各个地方。住在北方的恐龙和住在南方的恐龙完全不一样,颜色、长相,甚至说的语言都不一样。住在北方的霸王龙在下雪天里找不到吃的,饿的实在不行了,被一只它蓓翼龙骗去南方,它蓓翼龙咬伤后,看见了三只正在吃红果子的三只平头龙……