qshell是利用七牛文档上公开的API实现的一个方便开发者测试和使用七牛API服务的命令行工具。该工具设计和开发的主要目的就是帮助开发者快速解决问题。目前该工具融合了七牛存储,CDN,以及其他的一些七牛服务中经常使用到的方法对应的便捷命令,比如b64decode,就是用来解码七牛的URL安全的Base64编码用的,所以这是一个面向开发者的工具,任何新的被认为适合加到该工具中的命令需求,都可以在ISSUE列表里面提出来,我们会尽快评估实现,以帮助大家更好地使用七牛服务。
该工具使用Go语言编写而成,当然为了方便不熟悉Go或者急于使用工具来解决问题的开发者,我们提供了预先编译好的各主流操作系统平台的二进制文件供大家下载使用,由于平台的多样性,我们把这些二进制打包放到一个文件里面,请大家根据下面的说明各自选择合适的版本来使用。在文档中的例子里面,为了方便,我们统一使用qshell
这个命令来做介绍。
更新日志 查看
版本 | 支持平台 | 链接 |
---|---|---|
qshell v2.4.2 | Windows X86 | 下载 |
qshell v2.4.2 | Windows amd64 | 下载 |
qshell v2.4.2 | Linux X86 | 下载 |
qshell v2.4.2 | Linux amd64 | 下载 |
qshell v2.4.2 | Linux Arm | 下载 |
qshell v2.4.2 | Mac OS | 下载 |
该工具由于是命令行工具,所以只需要从上面的下载之后即可使用。其中文件名和对应系统关系如下:
文件名 | 描述 |
---|---|
qshell_linux_x86 | Linux 32位系统 |
qshell_linux_x64 | Linux 64位系统 |
qshell_windows_x86.exe | Windows 32位系统 |
qshell_windows_x64.exe | Windows 64位系统 |
qshell_darwin_x64 | Mac 64位系统,主流的系统 |
Linux和Mac平台
(1)权限
如果在Linux或者Mac系统上遇到Permission Denied
的错误,请使用命令chmod +x qshell
来为文件添加可执行权限。这里的qshell
是上面文件重命名之后的简写。
(2)任何位置运行
对于Linux或者Mac,如果希望能够在任何位置都可以执行,那么可以把qshell
所在的目录加入到环境变量$PATH
中去。假设qshell
命令被解压到路径/home/jemy/tools
目录下面,那么我们可以把如下的命令写入到你所使用的bash所对应的配置文件中,如果是/bin/bash
,那么就是~/.bashrc
文件,如果是/bin/zsh
,那么就是~/.zshrc
文件中。写入的内容为:
export PATH=$PATH:/home/jemy/tools
保存完毕之后,可以通过两种方式立即生效,其一为输入source ~/.zshrc
或者source ~/.bashrc
来使配置立即生效,或者完全关闭命令行,然后重新打开一个即可,接下来就可以在任何位置使用qshell
命令了。
Windows平台
(1)闪退问题 本工具是一个命令行工具,在Windows下面请先打开命令行终端,然后输入工具名称执行,不要双击打开,否则会出现闪退现象。
(2)任何位置运行
如果你希望可以在任意目录下使用qshell
,请将qshell
工具可执行文件所在目录添加到系统的环境变量中。由于Windows系统是图形界面,所以方便一点。假设qshell.exe
命令被解压到路径E:\jemy\tools
目录下面,那么我们把这个目录放到系统的环境变量PATH
里面。
- 添加密钥和账户名称
该工具有两类命令,一类需要鉴权,另一类不需要。
需要鉴权的命令都需要依赖七牛账号下的 AccessKey
, SecretKey
和 Name
。所以这类命令运行之前,需要使用 account
命令来添加 AccessKey
,SecretKey
和Name
。
Name
是用户可以自定义的字符串,用来唯一表示AccessKey/SecretKey账户,qshell会对添加的每一个账户信息加密保存,可以使用自命令user
进行切换,切换账户的时候,需要使用账户唯一标识
Name
。
$ qshell account <Your AccessKey> <Your SecretKey> <Your Name>
其中name表示该账号的名称, 如果ak, sk, name首字母是"-", 需要使用如下的方式添加账号, 这样避免把该项识别成命令行选项:
$ qshell account -- <Your AccessKey> <Your SecretKey> <Your Name>
可以连续使用qshell account 添加账号ak, sk, name信息,qshell会保存这些账号的信息, 可以使用qshell user命令列举账号信息,在各个账号之间切换, 删除账号等。 如果使用的2.3.0之前的版本account命令记录的账户信息,需要先使用qshell user clean清楚保存的账户信息,然后使用qshell account命令重新记录账户信息。
也可以使用qshell的配置文件添加access_key和secret_key信息,具体配置方法参考下面配置文件一节。
- 添加完账户后,就可以使用qshell上传,下载文件了
qshell支持多种方式的账户管理:
- 使用qshell account 记录账户信息到本地的数据库
- 使用qshell -C 配置文件的方式来设置账户信息
- 有的qshell子命令支持通过--access-key, --secret-key选项来设置ak/sk信息
那么有可能上面三种方式都提供了账户的信息,因此这三种方式有个优先级(从高到低): 3 > 2 > 1
也就是说,如果命令行提供了ak/sk那么使用命令行的信息;如果没有提供就使用配置文件中的信息,如果配置文件没有提供ak/sk, 那么会去本地数据库查找当前的用户。
使用qshell user子命令可以用来管理记录的多账户信息。
- qshell user ls可以列举账户下所有的账户信息
- qshell user cu 可以用来切换账户
- qshell user cu 不携带的话会切换到最近的上个账户;比如我在A账户做完操作后,使用qshell user cu B到了B 账户,那么使用qshell user cu可以切回到A账户.
- qshell user lookup 查找用户是否在本地数据库中
是使用qshell account 记录的时候的名字,这个名字可以任意指定。
linux上,使用bash
在centos上,需要安装bash-completion包,默认该包没有安装
$ yum install bash-completion -y
给当前的bash加入自动补全, 运行命令
$ source <(qshell completion bash)
也可以把这个配置加入bash的启动文件中,这样到bash启动的时候,会自动加载qshell的补全配置:
$ echo "source <(qshell completion bash)" >> ~/.bashrc
Mac上,使用zsh 把如下代码加入zsh的启动文件中~/.zshrc, 然后source ~/.zshrc
if [ $commands[qshell] ]; then
source <(qshell completion zsh)
fi
该工具还有一些有用的选项参数如下:
参数 | 描述 |
---|---|
-d | 设置是否输出DEBUG日志,如果指定这个选项,则输出DEBUG级别的日志 |
-h | 打印命令列表帮助信息,遇到参数忘记的情况下,可以使用该命令 |
-v | 打印工具版本,反馈问题的时候,请提前告知工具对应版本号 |
-C | qshell配置文件, 其配置格式请看下一节 |
-L | 使用当前工作路径作为qshell的配置目录 |
- 配置文件格式支持json, 如果需要使用配置文件,需要在家目录下创建文件名为.qshell.json的json文件
- 配置文件可以配置如io host, api host, rs hsot, rsf host, 这些如果没有指定,程序会自动选择
- 配置文件支持设置ak, sk
例子:
- 默认官方的列举空间的文件使用的是rsf.qiniu.com域名,如果因为某种原因,比如私有存储,需要替换使用rs-test.qiniu.com这个域名的话,那么只需要 在家目录下创建文件名字为.qshell.json的配置文件,文件内容为
{
"hosts": {
"rsf": "rs-test.qiniu.com"
}
}
如果想要更改io host为io-test.qiniu.com的话,只需要继续在上面的hosts中添加,如下:
{
"hosts": {
"rs": "rs-test.qiniu.com",
"io": "io-test.qiniu.com"
}
}
同理如果全部修改的话
{
"hosts": {
"rs": "rs-test.qiniu.com",
"io": "io-test.qiniu.com",
"api": "",
"rsf": ""
}
}
- 如果不想使用qshell account ak sk name的方式记录密钥信息,也可以在配置文件中指定ak, sk
{
"access_key": "",
"secret_key": "",
}
这样qshell会优先使用配置文件中配置的ak/sk信息,如果在这个配置文件中没有找到密钥信息,那么会去qshell account记录的本地数据库寻找.
命令 | 类别 | 描述 | 详细 |
---|---|---|---|
account | 账号 | 设置或显示当前用户的AccessKey 和SecretKey |
文档 |
batchdelete | 删除 | 批量删除七牛空间中的文件,可以直接根据listbucket 的结果来删除 |
文档 |
delete | 删除 | 删除七牛空间中的一个文件 | 文档 |
batchchgm | 修改 | 批量修改七牛空间中文件的MimeType | 文档 |
chgm | 修改 | 修改七牛空间中的一个文件的MimeType | 文档 |
batchchtype | 修改 | 批量修改七牛空间中的文件的存储类型,支持普通存储(0)和低频存储(1) | 文档 |
chtype | 修改 | 修改七牛空间中的一个文件的存储类型,支持普通存储(0)和低频存储(1) | 文档 |
batchexpire | 修改 | 批量修改七牛空间中的文件的生存时间 | 文档 |
expire | 修改 | 修改七牛空间中的一个文件的生存时间 | 文档 |
batchcopy | 拷贝 | 批量复制七牛空间中的文件到另一个空间 | 文档 |
copy | 拷贝 | 复制七牛空间中的一个文件 | 文档 |
batchmove | 移动 | 批量移动七牛空间中的文件到另一个空间 | 文档 |
move | 移动 | 移动或重命名七牛空间中的一个文件 | 文档 |
batchrename | 重命名 | 批量重命名七牛空间中的文件 | 文档 |
batchstat | 查询 | 批量查询七牛空间中文件的基本信息 | 文档 |
stat | 查询 | 查询七牛空间中一个文件的基本信息 | 文档 |
buckets | 查询 | 获取当前账号下所有的空间名称 | 文档 |
domains | 查询 | 获取指定空间的所有关联域名 | 文档 |
listbucket | 列举 | 列举七牛空间里面的所有文件 | 文档 |
listbucket2 | 列举 | 列举七牛空间里面的所有文件 | 文档 |
fput | 上传 | 以文件表单的方式上传一个文件 | 文档 |
rput | 上传 | 以分片上传的方式上传一个文件 | 文档 |
qupload | 上传 | 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(配置式) | 文档 |
qupload2 | 上传 | 同步数据到七牛空间, 带同步进度信息,和数据上传完整性检查(命令式) | 文档 |
qdownload | 下载 | 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步 | 文档 |
get | 下载 | 下载存储空间中的文件 | 文档 |
fetch | 抓取 | 从Internet上抓取一个资源并存储到七牛空间中 | 文档 |
batchfetch | 抓取 | 从Internet上抓取一个资源并存储到七牛空间中 | 文档 |
sync | 抓取 | 从Internet上抓取一个资源并存储到七牛空间中,适合大文件的场合 | 文档 |
abfetch | 抓取 | 异步抓取网络资源到七牛存储空间 | 文档 |
m3u8delete | m3u8 | 根据流媒体播放列表文件删除七牛空间中的流媒体切片 | 文档 |
m3u8replace | m3u8 | 修改流媒体播放列表文件中的切片引用域名 | 文档 |
batchsign | 其他 | 批量根据资源的公开外链生成资源的私有外链 | 文档 |
dircache | 其他 | 输出本地指定路径下所有的文件列表 | 文档 |
prefetch | 其他 | 更新七牛空间中从源站镜像过来的文件 | 文档 |
privateurl | 其他 | 生成私有空间资源的访问外链 | 文档 |
命令 | 描述 | 详细 |
---|---|---|
cdnrefresh | 批量刷新cdn的访问外链或目录 | 文档 |
cdnprefetch | 批量预取cdn的访问外链 | 文档 |
命令 | 描述 | 详细 |
---|---|---|
b64encode | base64编码工具,可选是否使用UrlSafe方式,默认UrlSafe | 文档 |
b64decode | base64解码工具,可选是否使用UrlSafe方式,默认UrlSafe | 文档 |
urlencode | url编码工具 | 文档 |
urldecode | url解码工具 | 文档 |
ts2d | 将timestamp(单位秒)转为UTC+8:00中国日期,主要用来检查上传策略的deadline参数 | 文档 |
tms2d | 将timestamp(单位毫秒)转为UTC+8:00中国日期 | 文档 |
tns2d | 将timestamp(单位100纳秒)转为UTC+8:00中国日期 | 文档 |
d2ts | 将日期转为timestamp(单位秒) | 文档 |
ip | 根据淘宝的公开API查询ip地址的地理位置 | 文档 |
unzip | 解压zip文件,支持UTF-8编码和GBK编码 | 文档 |
reqid | 七牛自定义头部X-Reqid解码工具 | 文档 |
qetag | 根据七牛的qetag算法来计算文件的hash | 文档 |
saveas | 实时处理的saveas链接快捷生成工具 | 文档 |
命令 | 类别 | 描述 | 详细 |
---|---|---|---|
pfop | 提交 | 提交异步音视频处理请求 | 文档 |
prefop | 查询 | 查询七牛数据处理的结果 | 文档 |
命令 | 类别 | 描述 | 详细 |
---|---|---|---|
token | 其他 | 计算upToken, Qbox token, Qiniu Token | 文档 |
命令 | 类别 | 描述 | 详细 |
---|---|---|---|
alilistbucket | 列举 | 列举阿里OSS空间里面的所有文件 | 文档 |
awslist | 列举 | 列举亚马逊的存储空间 | 文档 |
awsfetch | 抓取 | 从亚马逊存储迁移数据到七牛存储 | 文档 |
如果您有任何问题,请写在ISSUE列表里面,我们会尽快回复您。