1
0
forked from x/ContextOS

mac add 添加了nfs使用说明

This commit is contained in:
shaoying 2018-03-24 20:07:57 +08:00
parent 8a6638ea04
commit 61fa3661d0

View File

@ -12,6 +12,7 @@ context: 终端工具链,各种实用的功能模块,通过简洁的接口
* 2.0 应用示例--启动WEB服务器
* 2.1 常用命令
* 2.2 web模块的命令
* 2.3 nfs模块的命令
* 3 context开发
* 3.0 context模块开发入门
* 3.1 context模块的生命周期与继承多态
@ -91,6 +92,20 @@ $ tail -f var/bench.log
如第一行日志消息编号为22消息类型是start启动模块是ctx发送给cli模块的消息。
从日志中可以看出bench在启动时启动了词法解析模块lex与语法解析模块yac并加载了启动脚本etc/init.shy。
#### 2.0.3 运行本机命令
当输入的命令在bench中没有实现时bench会调用本地shell对命令进行解释执行。
```sh
$ bench
> pwd
/Users/shaoying/context
> ls
etc
var
LICNESE
README.md
...
```
### 2.1 常用命令
#### 2.1.1 缓存管理cache
```sh
@ -228,6 +243,49 @@ web> route script /s echo.shy
```
content代表脚本的文件名即web服务请求此route路径时回复的内容为content指定的脚本运行后输出的内容。
### 2.3 nfs模块的命令
nfs模块文件读写读写模块可以读写本地文件或远程文件。
```sh
$ bench
> ~nfs
> genqr qr.png hello
```
启动bench进入nfs模块调用genqr生成二维码图片。
可以看到在bench的当前运行目录生了一个png图片可以用手机扫描一下查看二维码内容。
nfs模块还支持文件的远程传输。
```sh
$ bench
> ~nfs
> listen ":9191"
```
启动bench进入nfs模块调用listen开启一个文件服务器监听的端口为"0.0.0.0:9191"。
在另外一个目录,一定注意是另外一个目录中。运行以下命令。
```sh
$ bench
> ~nfs
> dial ":9191"
> context
nfs(ctx::aaa::): begin() 存储中心
file2(nfs::aaa::): start(etc/init.shy) 扫描文件
file3(nfs::aaa::): start(127.0.0.1:63458->127.0.0.1:9191) 打开文件
file1(nfs::aaa::): start(var/bench.log) 打开文件
stdio(nfs::aaa::): start(stdio) 扫描文件
> send pwd
/Users/shaoying/context
> pwd
/Users/shaoying/context/tmp
> recv file qr.png
> ls
qr.png
```
启动bench进入nfs模块调用dial连接文件服务器。
输入context命令可以查看所有子模块这里可以看到多了一个file3的模块从备注信息中可以看出这是一个网络连接。
输入send可以执行远程命令如send pwd就可以查看远程bench运行的当前目录。
输入pwd查看当前bench的运行目录。
输入recv命令就可以把远程文件复制到本地。
## 3 context开发
### 3.0 context模块开发入门
在context目录下创建目录src/example/demo然后打开src/example/demo/demo.go文件并输入以下代码。
@ -348,8 +406,11 @@ Config为配置项模块内的一些常量或是可配置的数据就可
Command的命令项模块向外提供的各种API接口或是CLI接口都统一定义为command即可以被其它模块在代码中直接调用也可以在命令行实时调用。
通过这种方式直接解除了模块的依赖关系,每个模块都可以独立编译,独立运行。
通过脚本或是配置把各种模块组合在一起,完成复杂的功能。这样大大降低了代码的重复性,提高了代码的通用性。
Cache为缓存项的定义Name为缓存项的名字Value为缓存项的值Help为缓存项的帮助信息Hand为缓存项读写函数可选。
Config为配置项的定义Name为配置项的名字Value为配置项的值Help为配置项的帮助信息Hand为配置项读写函数可选。
Command为命令项的定义Name为命令项的名字Help为命令项的帮助信息Hand为命令项执行函数。
```go
@ -363,6 +424,7 @@ echo命令按照缓存项format的格式输出配置项default的内容。
这样可以从命令行查看缓存项format的值就可以知道echo命令输出的格式。
这样可以从命令行设置配置项default的值就可以改变echo命令输出的内容。
命令Hand函数是消息驱动的。所以各种通过消息m就可以调用到各种函数。
m.Cap()读写当前模块的某个缓存项。
m.Conf()读写当前模块的某个配置项。
m.Echo()输出命令执行结果。
@ -685,6 +747,7 @@ Call()发送消息,命令执行完成后会调用参数的中的回调函数
如果返回值为false则代表消息还未处理完成。在其它事件中调用Back()可以再调用回调函数。
```go
Commands: map[string]*ctx.Command{
"send": &ctx.Command{
Name: "send module",
Help: "send something",
@ -738,8 +801,6 @@ one> context demo
demo> send one
hello world nice
```
## 4 context核心模块详解
### 4.0 ctx模块中心
### 4.1 cli命令中心