5.linux进价命令curl和jq
linux的进价命令
1. curl 命令
curl命令是一个工具,主要用于请求的发送,get,post请求,支持的协议有 DICT,FILE,FTP,FTPS,HTTP
1. -x参数指定代理
# 192.168.1.101:8801 加入Charles代理设置的是这个ip地址和端口,则通过-x参数指定后,访问百度时,charles就会抓到包了
curl -x 192.168.1.108:8801 https://www.baidu.com
2. 发送get请求
-G: 指明使用get请求,如果没有写 -G, curl默认都是get请求
-d: 指定请求数据
curl https://www.baidu.com
curl -G https://www.baidu.com
curl -X GET https://www.baidu.com # -X GET 明确指定get请求
3. 发送post请求
-d: 指定post的请求体
curl -d "login=vic" https://www.baidu.com
curl -X POST https://www.baidu.com
4. 其他
# 1. 保存响应内容:把百度的访问结果保存在tmp.html里
curl -o tmp.html https://www.baidu.com
# 2. 输出通信的整个过程
curl -v https://www.baidu.com
# 3. 不输出错误和进度信息,过滤掉无用的多余的信息
curl -s https://www.baidu.com
2. jq 命令
https://stedolan.github.io/jq/
- 安装
官网下载之后,mac将下载的文件放到 /usr/local/bin目录下,然后source ~/.bash_profile
之后,就可以用了
jq命令是一个工具,主要是用于从json里提取数据
. 格式化
echo '{"a":1,"b":2}' | jq '.'
# 提取内容
echo '{"foo":33, "bar":"ok"}' | jq .foo
# 从数组中提取单个数据
echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[0]
# 从数组中提取所有数据
echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[]
# 过滤多个值:只能提取出来第一个和第二个{"a":1,"b":2},{"c":3,"d":4}
echo '[{"a":1,"b":2},{"c":3,"d":4},{"e":3,"f":4}]' | jq .[0,1]
# 数据重组成数组, [.a,.b] 需要用’‘包裹起来重组为一个数组,.a 和 .b就是提取后的值
echo '{"a":1,"b":2,"c":3,"d":4,"e":3,"f":4}' | jq '[.a,.b]'
# 数据重组成对象
echo '{"a":1,"b":2,"c":3,"d":4,"e":3,"f":4}' | jq '{"temp":.d}'
# 获取数组的长度
echo $content | jq '.data|length'
echo $content | jq '.data' | jq 'length'