ubuntu安裝UCI的教程以及UCI的常用命令和API

ubuntu安裝UCI的教程以及UCI的常用命令和API

ubuntu安裝UCI

安装cmake

sudo apt-get install cmake

安装依赖库libubox

克隆libubox原始码
git clone http://git.nbd.name/luci2/libubox.git libubox.git cd libubox.git
编译
cmake -DBUILD_LUA=off
安裝
sudo make install

安裝UCI

克隆UCI原始码
git clone https://git.openwrt.org/project/uci.git uci.git cd uci.git
编译
cmake -DBUILD_LUA=off
安裝
sudo make install
新增依赖库路径

编辑/etc/ld.so.conf档案,在最后一行新增上“/usr/local/lib”
在这里插入图片描述

执行ldconfig命令使依赖路径生效
sudo ldconfig

完成上述步骤后可以敲入uci命令获得以下结果表示uci安装成功
ubuntu安裝UCI的教程以及UCI的常用命令和API_第1张图片

测试UCI代码

UCI文件语法:
config 'section-type' 'section'
        option  'key'       'value'
        list    'list_key'  'list_value'

其中以config关键字代表起始,
section-type是节点类型,section是节点名字
option 选项 表示节点中的一个元素
key 键
value 值
list 列表选项 表示列表形式的一组参数。
list_key 列表键
list_value 列表值
实例:

config aaa 123
       option bbb 234
       list ccc 345

在这里插入图片描述

UCI中的常用命令

注意:
任何写入类的语法,最终都要执行生效修改,否则所做修改只在缓存中
使用 uci commit 生效修改

以下命令均在此代码下进行测试:

config  class  student
       option  name  David
       list     age    22  
uci get .
取得节点类型

在这里插入图片描述

uci get .
.

在这里插入图片描述

uci show  显示全部 UCI 配置

在这里插入图片描述

uci show .
显示指定节点名字配置

在这里插入图片描述

uci show .
.

在这里插入图片描述

uci changes 显示尚未生效的修改记录

在这里插入图片描述
修改名字:

匿名节点

1)uci add  -type> 增加一个匿名节点到文件

在这里插入图片描述

2)uci show -X .
.

ubuntu安裝UCI的教程以及UCI的常用命令和API_第2张图片

3) uci set .
=-type> 增加一个节点到文件中 uci set .
.
.

ubuntu安裝UCI的教程以及UCI的常用命令和API_第3张图片

修改

uci set .
=-type> 修改一个节点的类型 uci set .
.

ubuntu安裝UCI的教程以及UCI的常用命令和API_第4张图片

删除

1)	uci delete .
删除指定名字的节点

在这里插入图片描述
ubuntu安裝UCI的教程以及UCI的常用命令和API_第5张图片

2)	uci delete .
.

ubuntu安裝UCI的教程以及UCI的常用命令和API_第6张图片

3)	uci delete .
. 删除列表
4)	uci del_list .
.

API的学习和应用

文件语法
在UCI的配置文件通常包含一个或多个配置语句,包含一个或多个用来定义实际值的选项语句的所谓的节。
下面是一个简单的配置示例文件:

  1. config ‘example’ ‘test’语句标志着一个节的开始。这里的配置类型是example,配置名是test。配置中也允许出现匿名节,即自定义了配置类型,而没有配置名的节。配置类型对应配置处理程序来说是十分重要的,因为配置程序需要根据这些信息来处理这些配置项。
  2. option ‘string’ ‘some value’ 和 option ‘boolean’ ‘1’定义了一些简单值。文本选项和布尔选项在语法上并没有差异。布尔选项中可以用’0’ ,’no’, ‘off’,或者’false’来表示false值,或者也可以用’1’, ‘yes’,’on’或者’true’来表示真值。
  3. 以list关键字开头的多个行,可用于定义包含多个值的选项。所有共享一个名称的list语句,会组装形成一个值列表,列表中每个值出现的顺序,和它在配置文件中的顺序相同。如上例种中,列表的名称是’collection’,它包含了两个值,即’first item’和’second item’。 ‘option’和’list’语句的缩进可以增加配置文件的可读性,但是在语法不是必须的。
  4. 通常不需要为标识符和值加引号,只有当值包括空格或者制表符的时候,才必须加引号。同时,在使用引号的时候,可以用双引号代替单引号。

常用API

1、uci_alloc_context: 动态申请一个uci上下文结构

struct uci_context *uci_alloc_context(void);

2、uci_free_context: 释放由uci_alloc_context申请的uci上下文结构且包括它的所有数据

void uci_free_context(struct uci_context *ctx);

3、uci_lookup_ptr:由给定的元组查找元素

int uci_lookup_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str, bool extended);

4、uci_set :写入配置

int uci_set(struct uci_context *ctx, struct uci_ptr *ptr);

5、uci_unload : 卸载包

int uci_unload(struct uci_context *ctx, struct uci_package *p);

6、uci_commit : 将缓冲区的更改保存到配置文件 还有uci_save ,有区别

int uci_commit(struct uci_context *ctx, struct uci_package **p, bool overwrite);

7、uci_foreach_element : 遍历uci的每个节点
8、uci_perror : 获取最后一个uci错误的错误字符串

void uci_perror(struct uci_context *ctx, const char *str);

9、uci_add_section:配置一个节点的值,如果节点不存在则创建

int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res);

10、uci_add_list : 追加一个list类型到节点

int uci_add_list(struct uci_context *ctx, struct uci_ptr *ptr);

11、uci_lookup_section : 查看一个节点

uci_section *uci_lookup_section(struct uci_context *ctx, struct uci_package *p, const char *name)

12、uci_lookup_option : 查看一个选项

 uci_option *uci_lookup_option(struct uci_context *ctx, struct uci_section *s, const char *name)

代码实现

在这里插入图片描述

1) 调用api打印节点选项中的值

ubuntu安裝UCI的教程以及UCI的常用命令和API_第7张图片

运行结果
在这里插入图片描述

2) 修改文件的配置的值

ubuntu安裝UCI的教程以及UCI的常用命令和API_第8张图片
运行结果
ubuntu安裝UCI的教程以及UCI的常用命令和API_第9张图片

你可能感兴趣的:(UCI,ubuntu安装UCI,Linux,UCI常用命令,UCI的API)