openwrt学习之UCI模块

UCI模块,Unified Configuration Interface,通用配置接口,是openwrt的核心模块之一

是用于管理openwrt系统的配置文件,提供了API库函数和命令行接口供用户调用

这些配置文件默认保存在/etc/config/目录下,每一个文件即是一个uci配置文件

文件语法:

UCI配置文件通常由一个或多个config语句组成

        config后面的interface是一个config的type,由自己定义,可以重复出现

        type后面是section,需要单引号括起,也由自己定义,在同一个文件中不可以重复出现

        搜索该section下的配置时需要用到这个section名

        option一般放具体配置名,value是该配置对应的值,一般由单引号括起

        list是一个列表名,可以包含多个值

注:option和list语句前面的缩进是为了提高配置文件可读性,在语法上不是必需的

openwrt学习之UCI模块

 命令行用法:

这里列出几个常用命令:

        uci commit、uci get、uci set、uci add_list、uci del_list、uci show

以下为一个uci配置文件,文件名为test,放置路径为/etc/config/

openwrt学习之UCI模块

1、uci get:获取uci配置

root@OpenWrt:/etc/config# uci get test.test1.name
jason
root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux
root@OpenWrt:/etc/config# uci get test.test2.skill
none

2、uci set: 设置uci配置

root@OpenWrt:/etc/config# uci get test.test1.name
jason
root@OpenWrt:/etc/config# uci set test.test1.name='xxx'
root@OpenWrt:/etc/config# uci get test.test1.name
xxx

3、uci add_list: 添加uci的指定的列表的值

root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux
root@OpenWrt:/etc/config# uci add_list test.test1.skill='html'
root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux html

4、uci del_list: 删除uci的指定的列表的某一值

root@OpenWrt:/etc/config# uci get test.test1.skill
c java linux html
root@OpenWrt:/etc/config# uci del_list test.test1.skill='c'
root@OpenWrt:/etc/config# uci get test.test1.skill
java linux html

5、uci show: 显示uci文件的配置

若只输入uci show,则会显示指定目录下的所有uci配置文件的配置,默认为/etc/config/下的uci文件,会显示出很多,一般不会这样查询

1、test为上面列出的uci文件名,uci show test会显示出test文件里的所有配置信息
root@OpenWrt:/etc/config# uci show test
test.test1=first
test.test1.age='1'
test.test1.skill='java' 'linux' 'html'
test.test1.name='xxx'
test.test2=second
test.test2.name='jack'
test.test2.age='0'
test.test2.skill='none'

2、test1为test文件里的一个section,该命令会显示该section下的所有配置信息
root@OpenWrt:/etc/config# uci show test.test1
test.test1=first
test.test1.age='1'
test.test1.skill='java' 'linux' 'html'
test.test1.name='xxx'

3、age为test文件里test1这个section里的一个option
root@OpenWrt:/etc/config# uci show test.test1.age
test.test1.age='1'

4、skill为test文件里test1这个section里的一个list
root@OpenWrt:/etc/config# uci show test.test1.skill
test.test1.skill='java' 'linux' 'html'

6、uci commit:提交uci配置的更改

在经过上面所有操作之后,uci show test为如下信息
root@OpenWrt:/etc/config# uci show test
test.test1=first
test.test1.age='1'
test.test1.skill='java' 'linux' 'html'
test.test1.name='xxx'
test.test2=second
test.test2.name='jack'
test.test2.age='0'
test.test2.skill='none'

但打开test文件,test文件内容如下
config first 'test1'
        option name 'jason'
        option age '1'
        list skill 'c'
        list skill 'java'
        list skill 'linux'

config second 'test2'
        option name 'jack'
        option age '0'
        list skill 'none'

经过上述的修改操作后,命令行显示出test文件的配置是修改后的配置,但test文件本身是没有被修改的
若要让命令行的修改操作生效,则在修改完后需要执行uci commit命令,才会将修改的内容同步到test文件
上一篇:poj1509最小表示法


下一篇:uni-app(2.框架基础)