uci命令、shell接⼝、API接⼝
uci 命令:
uci help:
Usage: uci [<options>]<command> [<arguments>]
Commands:
batch
export [<config>] 导出配置⽂件
import [<config>] 以uci语法导⼊配置⽂件
changes [<config>] 列出配置⽂件分阶段修改的内容(没有commit),若未指定配置⽂件,则导出所有配置⽂件的修改
commit [<config>] 对给定的配置⽂件写⼊修改,如果没有指定参数则将所有的配置⽂件写⼊⽂件系统
add <config><ction-type> 增加指定配置⽂件的类型为ction-type的匿名区段
add_list <config>.<ction>.<option>=<string> 对已存在的list选项增加字符串
del_list <config>.<ction>.<option>=<string> 删除已存在的list选项的字符串
show [<config>[.<ction>[.<option>]]] 显⽰指定的选项、配置节或配置⽂件
农机监理get <config>.<ction>[.<option>] 获取指定区段选项的值
t <config>.<ction>[.<option>]=<value> 设置指定配置节选项的值,或者是增加⼀个配置节,类型设置为指定的值
delete <config>[.<ction>[[.<option>][=<id>]]] 删除指定配置节或选项
rename <config>.<ction>[.<option>]=<name> 对指定的选项或配置节重命名
revert <config>[.<ction>[.<option>]] 恢复指定的选项,配置节或配置⽂件
reorder <config>.<ction>=<position>
Options:
-c <path> 设置配置⽂件的搜索路径 (default: /etc/config)
-d <str> 在uci显⽰中设置列表值的分隔符 in uci show
手机短信铃声
-f <file> 使⽤<file>作为输⼊,⽽不是stdin
-m 导⼊时,将数据合并到现有包中
-n 名称未命名部分导出(默认)
-N 不要命名unname dctions
-p <path> 添加配置更改⽂件的搜索路径
-P <path> 添加配置更改⽂件的搜索路径,并使⽤默认值
-q 安静模式(不打印错误信息)
-s 强制严格模式(停⽌解析器错误,默认)
-
S 停⽌严格模式
-X 不要在'show'上使⽤扩展语法
uci shell 接⼝:
注:以"uci_"开头的函数和以“config_”开头的函数⼤多数功能完全相同,唯⼀不同的是uci_get等函数直接从⽂件中获取,“config_get”函数从环境变量中读取
/lib/config/uci.sh
#参考对应的命令实现
uci_load #从uci⽂件中加载配置并设置到环境变量中
uci_t_default
uci_revert_state
uci_t_state()
uci_toggle_state豁然开朗的反义词
uci_t
uci_get_state #指定从/var/state中获取状态值
uci_get #从uci⽂件中获取值
uci_add
uci_rename
uci_remove
uci_commit
/lib/functions.sh
注意:在使⽤“config_”开头的函数时要先使⽤config_load,将配置⽂件载⼊环境变量
#在字符串前加‘:’并返回“:123”
w=debug 123
echo $w
最新的图片输出:":123"
config
#将配置节设置到环境变量中,供uci.sh调⽤
option
#将配置节中的选项设置到环境变量中,供uci.sh调⽤
list
#将配置节中的链表设置到环境变量中,供uci.sh调⽤
#config_unt
#调⽤config_t 清空<ction>.<option>的value值
#config_unt <ction> <option>
#config_load: 调⽤uci_load函数从配置⽂件中读取配置然后设置到环境变量中
config_load <config>
#config_get:从当前环境变量中获取配置值
# variable:⽤来存储config值的变量
#ction/option:要获取节点/选项的名字
config_get <variable> <ction> <option> [<default>]
#config_get_bool:从当前环境变量中获取配置值 ,并把值转换成整数
config_get_bool <variable> <ction> <option> [<default>]
#config_t:将变量设置到环境变量中以便后续读取(注:并未设置到配置⽂件中)
#ction/option
#value:要为该节点设置的值
config_t <ction> <option> <value>
#config_foreach:遍历每个ction去调⽤callback_func函数(callback_func 的⼊参为ction name)
#[<ction type>]:只遍历这个类型的
config_foreach <callback_func> [<ction type>]
#config_list_foreach:遍历ction下list的option值,并调⽤callback_func函数(⼊参为list option的值,有多少值调⽤多少次)config_list_foreach <ction> <list> <callback_func>
#加载/etc/modus.d/*下⾯的所有模块
inrt_modules
#应⽤shell脚本
include <shell script> [<shell script>......]
append
list_contains
ret_cb
package
default_prerm
default_postinst
find_mtd_index
find_mtd_part
group_add
group_exists
group_add_next
group_add_ur
ur_add
ur_exists
uci重要的结构体:
struct uci_context
{
帅男人
/* list of config packages */
struct uci_list root;
/* parr context, u for error handling only */ struct uci_par_context *pctx;
/* backend for import and export */
struct uci_backend *backend;
struct uci_list backends;
/
* uci runtime flags */
enum uci_flags flags;
char *confdir;
char *savedir;
/* arch path for delta files */
struct uci_list delta_path;
/* private: */
int err;
const char *func;
jmp_buf trap;
bool internal, nested;
char *buf;
甲泼尼龙说明书int bufsz;
};
uci_context:uci上下⽂结构,贯彻查询、更改配置⽂件全过程
struct uci_package
{
struct uci_element e;
struct uci_list ctions;
struct uci_context *ctx;
bool has_delta;
char *path;
/
学拉二胡
* private: */
struct uci_backend *backend;
void *priv;
int n_ction;
struct uci_list delta;
struct uci_list saved_delta;
};
uci_package:对应⼀个配置⽂件
struct uci_ction
{
宝宝学水果
struct uci_element e;
struct uci_list options;
struct uci_package *package;
bool anonymous;
char *type;
};
uci_ction:对应配置⽂件中的节
struct uci_option
{
struct uci_element e;
struct uci_ction *ction;
enum uci_option_type type;
union {
struct uci_list list;
char *string;
} v;
};
uci_option:对应配置⽂件节中的option和list
struct uci_ptr
{
enum uci_type target;