lua os(操作系统)库

2018-05-09 11:05:12

lua os库提供了简单的跟操作系统有关的功能

os.clock()

返回当前当前cpu使用的秒数

例子

--用来计算中间的遍历花费了多少cpu时间
local x = os.clock()
local s = 0
for i = 1, 10000000 do s = s + i end
print(string.format("elapsed time: %.2f\n", os.clock() - x))


os.date([format [, time]])

用来格式化时间戳为可读时间,time为可选时间戳,省略时取当下

os.time ([table])

默认获取当前时间戳,也可以指定table参数

例子

--2018-05-09 09:20:04
local now = os.date("%Y-%m-%d %H:%M:%S")

-- %a abbreviated weekday name (e.g., Wed)
-- %A full weekday name (e.g., Wednesday)
-- %b abbreviated month name (e.g., Sep)
-- %B full month name (e.g., September)
-- %c date and time (e.g., 09/16/98 23:48:10)
-- %d 一个月里的几号[01–31]
-- %H 24小时[00–23]
-- %I 12小时[01–12]
-- %j 一年中的第几天[001–366]
-- %M 分[00–59]
-- %m 月份[01–12]
-- %p am(上午),pm(下午)
-- %S 秒[00–60]
-- %w 星期几[0–6 = 星期天–星期六]
-- %x date (e.g., 09/16/98)
-- %X time (e.g., 23:48:10)
-- %y two-digit year (98) [00–99]
-- %Y 年(1998)
-- %% the character ‘%’

--获取当前时间戳秒-1525829060
local secs = os.time()

local year = string.sub(now,1,4)
local month = string.sub(now,6,7)
local day = string.sub(now,9,10)
local hour = string.sub(now,12,13)
local minute = string.sub(now,15,16)
local second = string.sub(now,18,19)

--获取7天前的时间
ta = {
    year=year,
    month=month,
    day=day-7,
    hour=hour,
    min=minute,
    sec=second
}
--2018-05-02 09:50:57
local t = os.date("%Y-%m-%d %H:%M:%S", os.time(ta))


--获取本年2月份的天数
--3月份开头减去1天就是2月份的最后一天
ta = {
    year=year,
    month=3,
    day=0,
}

--28
local days = os.date("%d", os.time(ta))

--我相信想计算其他复杂的时间格式,都可以通过上面的例子来举一反三了


os.exit(0)

结束程序并返回状态码,0代表成功


os.getenv(varname)

获取坏境变量
--/root
os.getenv("HOME")


os.execute(cmd)

执行操作系统命令并返回状态码,0代表成功,此函数等同于c语言中的system函数
--0
local stat = os.execute('ls -al')


os.setlocale (locale [, category])

主要是设置地区信息(地域信息)。 地区信息是针对一个地理区域的语言、货币、时间以及其他信息,主要是为了满足不同地区的人们的不同阅读习惯。
返回值:
locale名称,返回nil代表失败(一般是由于当前系统不支持指定的locale名)  

参数:

第一个参数为locale名,第二个为类目(用来指定应用到哪里默认为全部)
locale:
''空字符  locale将会设置成由当前执行坏境决定的locale
nil            只是返回当前locale
C             设置成标准C locale

category

"collate"            控制字符串的字母排序
"ctype"               控制单个字符类型以及大小写约定
"monetary"        此选项对lua不起作用
"numeric"          控制数字的格式化方式
"time"                控制date,time的格式化如os.date
"all"                    包含以上全部

shell例子

#shell查看当前系统支持哪些locale
locale -a

#部分输出如下
:<<!
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
!

#查看当前bash的locale
locale

#输出如下
:<<!
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
!

lua例子

--获取当前地区信息
--C
local res = os.setlocale(nil)

--Wed May  9 10:42:04 2018
res = os.date('%c')

--zh_CN.utf8
os.setlocale("zh_CN.utf8","time")

--2018年05月09日 星期三 10时54分32秒
res = os.date('%c')

--不同坏境结果可能会略微不同


os.remove(filename)

删除文件或空目录,失败返回nil以及描述信息


os.rename(oldname,newname)

重命名文件或目录,失败返回nil以及描述信息  


os.tmpname()

自动产生临时文件并返回文件名如/tmp/lua_zH52pu,如果要使用,必须手动打开文件,最后不使用时必须手动删除。
io.tmpfile()产生的临时文件程序结束后会自动删除  


总结

1.本文只是对os库做简单的介绍,如果有疑问可以给我留言
2.lua的版本为5.1,运行环境centos7 64位
3.原文地址http://www.freecls.com/a/2712/12

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。