4
4
5
5
qshell是利用[ 七牛文档上公开的API] ( http://developer.qiniu.com ) 实现的一个方便开发者测试和使用七牛API服务的命令行工具。该工具设计和开发的主要目的就是帮助开发者快速解决问题。目前该工具融合了七牛存储,CDN,以及其他的一些七牛服务中经常使用到的方法对应的便捷命令,比如b64decode,就是用来解码七牛的URL安全的Base64编码用的,所以这是一个面向开发者的工具,任何新的被认为适合加到该工具中的命令需求,都可以在[ ISSUE列表] ( https://github.com/qiniu/qshell/issues ) 里面提出来,我们会尽快评估实现,以帮助大家更好地使用七牛服务。
6
6
7
- ![ qshell-quick-tour.gif] ( http://devtools.qiniu.com/qshell-quick-tour.gif )
8
-
9
-
10
7
## 下载
11
8
12
9
该工具使用Go语言编写而成,当然为了方便不熟悉Go或者急于使用工具来解决问题的开发者,我们提供了预先编译好的各主流操作系统平台的二进制文件供大家下载使用,由于平台的多样性,我们把这些二进制打包放到一个文件里面,请大家根据下面的说明各自选择合适的版本来使用。在文档中的例子里面,为了方便,我们统一使用` qshell ` 这个命令来做介绍。
@@ -15,20 +12,19 @@ qshell是利用[七牛文档上公开的API](http://developer.qiniu.com)实现
15
12
16
13
| 版本 | 支持平台| 链接|
17
14
| --------| ---------| ----|
18
- | qshell v2.2.0 | Mac OSX, Linux, Windows| [ 下载] ( http://devtools.qiniu.com/qshell-v2.2.0 .zip ) |
15
+ | qshell v2.2.1 | Mac OSX, Linux, Windows| [ 下载] ( http://devtools.qiniu.com/qshell-v2.2.1 .zip ) |
19
16
20
17
## 安装
21
18
22
19
该工具由于是命令行工具,所以只需要从上面的下载之后即可使用。其中文件名和对应系统关系如下:
23
20
24
21
| 文件名| 描述|
25
22
| -----| -----|
26
- | qshell-linux-x86 | Linux 32位系统|
27
- | qshell-linux-x64| Linux 64位系统|
28
- | qshell-linux-arm| Linux ARM CPU|
29
- | qshell-windows-x86.exe| Windows 32位系统|
30
- | qshell-windows-x64.exe| Windows 64位系统|
31
- | qshell-darwin-x64| Mac 64位系统,主流的系统|
23
+ | qshell_linux_x86 | Linux 32位系统|
24
+ | qshell_linux_x64| Linux 64位系统|
25
+ | qshell_windows_x86.exe| Windows 32位系统|
26
+ | qshell_windows_x64.exe| Windows 64位系统|
27
+ | qshell_darwin_x64| Mac 64位系统,主流的系统|
32
28
33
29
** Linux和Mac平台**
34
30
@@ -59,48 +55,56 @@ export PATH=$PATH:/home/jemy/tools
59
55
60
56
需要鉴权的命令都需要依赖七牛账号下的 ` AccessKey ` 和 ` SecretKey ` 。所以这类命令运行之前,需要使用 ` account ` 命令来设置下 ` AccessKey ` ,` SecretKey ` 。
61
57
62
- ** 单用户模式:**
63
-
64
58
```
65
- $ qshell account ak sk
59
+ $ qshell account ak sk name
66
60
```
67
61
68
- ** 多用户模式: **
62
+ 其中name表示该账号的名称, 如果ak, sk, name首字母是"-", 需要使用如下的方式添加账号, 这样避免把该项识别成命令行选项:
69
63
70
64
```
71
- $ qshell -m account ak sk
65
+ $ qshell account -- ak sk name
72
66
```
73
67
74
- ## 多用户模式
68
+ 可以连续使用qshell account 添加账号ak, sk, name信息,qshell会保存这些账号的信息, 可以使用qshell user命令列举账号信息,在各个账号之间切换, 删除账号等
75
69
76
- 和其他的工具一样,本工具也会在使用的过程中,向本地磁盘写入一些文件,比如上面的 ` account ` 设置的 ` AccessKey ` 和 ` SecretKey ` 都是加密后保存在本地磁盘上的。另外还有 ` qupload ` 和 ` qdownload ` 功能也会向本地磁盘写入一些文件。
70
+ ## 账户管理
77
71
78
- 默认情况下,工具的使用模式是单用户模式,用户的所有信息写入到磁盘` $HOME_DIR/.qshell ` 下面。即如果你用` account ` 设置了新的密钥,那么这个新的密钥将覆盖旧的密钥。这个` $HOME_DIR ` 在Linux或者Mac下就是` ~ ` 所表示的目录。如果是Windows下则是` C:\Users\jemy ` 这样的路径。
72
+ 使用qshell user子命令可以用来管理记录的多账户信息。
73
+ 1 . qshell user ls可以列举账户下所有的账户信息
74
+ 2 . qshell user cu <userName >可以用来切换账户
75
+ 3 . qshell user cu 不携带<userName >的话会切换到最近的上个账户;比如我在A账户做完操作后,使用qshell user cu B到了B 账户,那么使用qshell user cu可以切回到A账户.
79
76
80
- 但是有些情况下,我们可能拥有多个账号,比如同时拥有测试环境的账号和线上环境的账号,这种情况下,怎么让` qshell ` 同时支持多组` AccessKey ` 和` SecretKey ` 的设置呢?
77
+ ## 开启命令的自动补全
78
+ ** linux上,使用bash**
81
79
82
- 为了解决这个问题,我们引入了选项 ` -m ` 。当在使用 ` qshell ` 的时候,指定该选项的话,就会切换到多用户模式下,在这种模式下,工具会把所有的临时文件都写到工具执行的目录。
80
+ 在centos上,需要安装bash-completion包,默认该包没有安装
83
81
84
- 基于上面的功能,我们可以创建一些专用的目录,用来切换到` qshell ` 的多用户模式运行。假设本地有如目录` /Users/jemy/Temp/qshell/workdir ` ,这个目录下分别有` env_dev ` 和` env_prod ` 两种环境的账号。
82
+ ```
83
+ $ yum install bash-completion -y
85
84
86
- 我们分别在目录` env_dev ` 和` env_prod ` 目录下,运行` qshell -m account ak sk ` 来设置不同账号的密钥对,结果如下:
85
+ ```
86
+
87
+ 给当前的bash加入自动补全, 运行命令
87
88
88
89
```
89
- $ tree -a
90
-
91
- ├── env_dev
92
- │ └── .qshell
93
- │ └── account.json
94
- └── env_prod
95
- └── .qshell
96
- └── account.json
90
+ $ source <(qshell completion bash)
91
+
97
92
```
98
93
99
- 这样其他的依赖` AccessKey ` 和` SecretKey ` 的命令都可以使用` -m ` 选项在这个目录下执行命令,例如` stat ` 获取文件信息:
94
+ 也可以把这个配置加入bash的启动文件中,这样到bash启动的时候,会自动加载qshell的补全配置:
95
+
96
+
97
+ ```
98
+ $ echo "source <(qshell completion bash)" >> ~/.bashrc
99
+ ```
100
+
101
+ ** Mac上,使用zsh**
102
+ 把如下代码加入zsh的启动文件中~ /.zshrc
100
103
101
104
```
102
- $ cd /Users/jemy/Temp/qshell/workdir/env_dev
103
- $ qshell -m stat bucket key
105
+ if [ $commands[qshell] ]; then
106
+ source <(qshell completion zsh)
107
+ fi
104
108
```
105
109
106
110
## 命令选项
@@ -110,9 +114,42 @@ $ qshell -m stat bucket key
110
114
| 参数| 描述|
111
115
| ----| ----|
112
116
| -d| 设置是否输出DEBUG日志,如果指定这个选项,则输出DEBUG级别的日志|
113
- | -m| 切换到多用户模式,这样所有的临时文件写入都在命令运行的目录下|
114
117
| -h| 打印命令列表帮助信息,遇到参数忘记的情况下,可以使用该命令|
115
118
| -v| 打印工具版本,反馈问题的时候,请提前告知工具对应版本号|
119
+ | -C| qshell配置文件, 其配置格式请看下一节|
120
+
121
+ ## 配置文件
122
+
123
+ 1 . 配置文件格式支持json, 如果需要使用配置文件,需要在家目录下创建文件名为.qshell.json的json文件
124
+ 2 . 配置文件可以配置如io host, api host, rs hsot, rsf host, 这些如果没有指定,程序会自动选择
125
+
126
+ 例子:
127
+
128
+ 默认官方的列举空间的文件使用的是rs.qiniu.com域名,如果因为某种原因,比如私有存储,需要替换使用rs-test.qiniu.com这个域名的话,那么只需要
129
+ 在家目录下创建文件名字为.qshell.json的配置文件,文件内容为
130
+ {
131
+ "hosts": {
132
+ "rs_host": "rs-test.qiniu.com"
133
+ }
134
+ }
135
+
136
+ 如果想要更改io host为io-test.qiniu.com的话,只需要继续在上面的hosts中添加,如下:
137
+ {
138
+ "hosts": {
139
+ "rs_host": "rs-test.qiniu.com",
140
+ "io_host": "io-test.qiniu.com"
141
+ }
142
+ }
143
+
144
+ 同理如果全部修改的话
145
+ {
146
+ "hosts": {
147
+ "rs_host": "rs-test.qiniu.com",
148
+ "io_host": "io-test.qiniu.com",
149
+ "api_host": "",
150
+ "rsf_host": ""
151
+ }
152
+ }
116
153
117
154
118
155
## 命令列表
@@ -121,7 +158,8 @@ $ qshell -m stat bucket key
121
158
| ------| ------------| ----------| --------|
122
159
| account| 账号| 设置或显示当前用户的` AccessKey ` 和` SecretKey ` | [ 文档] ( docs/account.md ) |
123
160
| dircache| 存储| 输出本地指定路径下所有的文件列表| [ 文档] ( docs/dircache.md ) |
124
- | listbucket/listbucket2| 存储| 列举七牛空间里面的所有文件| [ 文档] ( docs/listbucket.md ) |
161
+ | listbucket| 存储| 列举七牛空间里面的所有文件| [ 文档] ( docs/listbucket.md ) |
162
+ | listbucket2| 存储| 列举七牛空间里面的所有文件| [ 文档] ( docs/listbucket2.md ) |
125
163
| prefop| 存储| 查询七牛数据处理的结果| [ 文档] ( docs/prefop.md ) |
126
164
| fput| 存储| 以文件表单的方式上传一个文件| [ 文档] ( docs/fput.md ) |
127
165
| rput| 存储| 以分片上传的方式上传一个文件| [ 文档] ( docs/rput.md ) |
@@ -169,36 +207,6 @@ $ qshell -m stat bucket key
169
207
| unzip| 工具| 解压zip文件,支持UTF-8编码和GBK编码| [ 文档] ( docs/unzip.md ) |
170
208
| alilistbucket| 第三方| 列举阿里OSS空间里面的所有文件| [ 文档] ( docs/alilistbucket.md ) |
171
209
172
- ## 项目编译
173
-
174
- 如果对项目编译感兴趣,请按照如下方式进行:
175
-
176
- ```
177
- $ go get github.com/astaxie/beego/logs
178
- $ go get github.com/fsnotify/fsnotify
179
- $ go get github.com/syndtr/goleveldb/leveldb
180
- $ go get github.com/yanunon/oss-go-api/oss
181
- $ go get golang.org/x/text/encoding/simplifiedchinese
182
- $ go get golang.org/x/sys/unix
183
- $ ./build.sh
184
- ```
185
-
186
- 如果上面的 ` golang.org/x ` 下面的包因为被墙而无法下载,那么可以使用 ` git clone ` 分别将依赖的库下载到本地的` GOPATH ` 中:
187
-
188
- ```
189
- git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys
190
- git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
191
- ```
192
-
193
- 对于跨平台的编译脚本 ` cross-build-main.sh ` 编译出来的二进制文件存在的已知问题如下:
194
-
195
- [ crontab下面引用qshell出错] ( https://github.com/qiniu/qshell/issues/68 )
196
-
197
210
## 问题反馈
198
211
199
212
如果您有任何问题,请写在[ ISSUE列表] ( https://github.com/qiniu/qshell/issues ) 里面,我们会尽快回复您。
200
-
201
- ## 技术讨论
202
-
203
- 如果您希望和在工作中使用` qshell ` 的其他人进行交流,可以加入QQ群:343822521 。
204
-
0 commit comments