您的位置:首页 > 运维架构 > Linux

linux指令(stat date cal)

2017-03-20 19:06 337 查看


一、stat指令
ls 命令可能是每一个 Unix 使用者第一个学习的命令之一, 但它仅仅显示了 stat 命令能给出的信息的一小部分。



这里ll显示的时间仅仅是文件修改的时间
stat 命令从文件的索引节点获取信息。使用 stat 命令, 你会看到下面这些:



正如你可能已经了解的那样, 每一个系统里的文件都存有三组日期和时间, 它们包括最近修改时间(即使用 ls -l 命令时显示的日期和时间), 最近状态改变时间(包括对文件重命名)和最近访问时间。
access time ,modify time: ,change time
既然已经知道了这三个时间的属性那么我们就可以对它进行修改
(1)、修改access time的时间(表示我们最后一次访问(仅仅是访问,没有改动)文件的时间 )



(2)修改change time时间(表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等 )



(3).modify time (表示我们最后一次修改文件的时间 )



由此,我们可以知道

1,当我们仅仅只是读取文件时,access time 改变,而modify,change time 不会改变

2,当修改文件时,access,modify,change time 都会跟着改变

3,当修改文件属性时,change time 改变,而access,modify time 不变。

如果我们喜欢的话, 我们也可以通过其他命令来获取这些信息。

stat 命令也可应用与文件夹。
在这个例子中, 我们可以看到有许多的链接。



stat 命令还可以一次显示所有我们想要的信息。 下面的例子中, 我们只想查看文件类型, 然后是硬连接数。



在下面的例子中, 我们查看了文件权限 -- 分别以两种可用的格式 -- 然后是文件的 SELinux 安全环境。最后,我们我们可以以从 Epoch 开始的秒数格式来查看文件访问时间。
1.$ stat --format=%a trythats
2.700
3.$ stat --format=%A trythat
4.-rwx------
5.$ stat --format=%C trythat
6.(null)
7.$ stat --format=%X bin
8.1411282845

下面全部是可用的选项:
1.%a 八进制表示的访问权限
2.%A 可读格式表示的访问权限
3.%b 分配的块数(参见%B)
4.%B %b 参数显示的每个块的字节数
5.%d 十进制表示的设备号
6.%D 十六进制表示的设备号
7.%f 十六进制表示的Raw模式
8.%F 文件类型
9.%g 属主的组 ID
10.%G 属主的组名
11.%h 硬连接数
12.%i Inode号
13.%n 文件名
14.%N 如果是符号链接,显示器所链接的文件名
15.%o I/O 块大小
16.%s 全部占用的字节大小
17.%t 十六进制的主设备号
18.%T 十六进制的副设备号
19.%u 属主的用户 ID
20.%U 属主的用户名
21.%x 最后访问时间
22.%X 最后访问时间,自Epoch开始的秒数
23.%y 最后修改时间
24.%Y 最后修改时间,自Epoch开始的秒数
25.%z 最后改变时间
26.%Z 最后改变时间,自Epoch开始的秒数

针对文件系统还有如下格式选项:
1.%a 普通用户可用的块数
2.%b 文件系统的全部数据块数
3.%c 文件系统的全部文件节点数
4.%d 文件系统的可用文件节点数
5.%f 文件系统的可用节点数
6.%C SELinux的安全上下文
7.%i 十六进制表示的文件系统 ID
8.%l 文件名的最大长度
9.%n 文件系统的文件名
10.%s 块大小(用于更快的传输)
11.%S 基本块大小(用于块计数)
12.%t 十六进制表示的文件系统类型
13.%T 可读格式表示的文件系统类型

二、date指令

时间相关:date显⽰示:
date指定格式显⽰示时间:date +%Y_%m_%ddate
+%Y:%m:

%d
date命令本⾝身提供了⽇日期的加减运算
date⽤用法:date [OPTION]... [+FORMAT]

date [-u|--utc|--universal] [MMDDhhmm[[CC]YY]
[.ss]]

date可以⽤用来显⽰示或设定系统的⽇日期与时间。

1.在显⽰示⽅方⾯面,使⽤用者可以设定欲显⽰示的格式,格式设定为⼀一个加号后接数个标记,其中可⽤用的标记列表如下: 

%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) 在设定时间⽅方⾯面
date -s //设置当前时间,只有root权限才能设置,其他只能查看。


date -s 20080523 //设置成20080523,这样会把具体时间设置成空
00:00:00
date -s 01:01:01 //设置具体时间,不会对⽇日期做更改

date -s “01:01:01 2008-05-23″ //这样可以设置全部时间

date -s “01:01:01 20080523″ //这样可以设置全部时间

date -s “2008-05-23 01:01:01″ //这样可以设置全部时间

date -s “20080523 01:01:01″ //这样可以设置全部时间


3.加减
date +%=Y%m%d //显⽰示现在天年⽉月⽇日

date +%Y%m%d --date="+1 day" //显⽰示后⼀一天的⽇日期

date +%Y%m%d --date="-1 day" //显⽰示前⼀一天的⽇日期

date +%Y%m%d --date="-1 month" //显⽰示上⼀一⽉月的⽇日期

date +%Y%m%d --date="+1 month" //显⽰示下⼀一⽉月的⽇日期

date +%Y%m%d --date="-1 year" //显⽰示前⼀一年的⽇日期

date +%Y%m%d --date="+1 year" //显⽰示下⼀一年的⽇日期

时间戳

时间->时间戳:date +%s时间戳->时间:date
+%Y:%m:%d -d @1425384141 Unix时间戳(英⽂文为Unix epoch, Unix time, POSIX
time或Unix
timestamp)是从1970年1⽉月1⽇日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
实例如下:



三、cal指令
cal命令可以⽤用来显⽰示公历(阳历)⽇日历。公历是现在国际通⽤用

的历法,⼜又称格列历,通称阳历。“阳历”⼜又名“太阳历”,系以地球绕⾏行太阳⼀一周为⼀一年,为⻄西⽅方各国所通⽤用,故⼜又名“⻄西历”。命令格式:
cal [参数][⽉月份][年份]
命令功能:
⽤用于查看⽇日历等时间信息,如只有⼀一个参数,则表⽰示年份
(1-9999),如有两个参数,则表⽰示⽉月份和年份

命令参数:
1 显示一整年的时间

-1显⽰示⼀一个⽉月的⽉月历
-3显⽰示系统前⼀一个⽉月,当前⽉月,下⼀一个⽉月的⽉月历

显⽰示星期天为⼀一个星期的第⼀一天,默认的格式

-m显⽰示星期⼀一为⼀一个星期的第⼀一天
-j 显⽰示在当年中的第⼏几天(⼀一年⽇日期按天算,从1⽉月1号算起,默认显⽰示当前⽉月在⼀一年中的天数)

-y
显⽰示当前年份的⽇日历

⽰例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: