Linux进阶命令
linux 进阶命令
简介
在 Linux 中,curl
和 jq
是两个非常强大的命令行工具,分别用于网络请求和 JSON 数据处理,可以极大提高数据处理和接口测试的效率。
Linux 进阶命令学习
- curl
- jq
curl 接口请求
什么是 curl
curl
是一个用于从服务器传输数据的命令工具,支持多种协议。如FTP
、FTPS
、HTTP
、HTTPS
、TFTP
、SFTP
等。curl
是非交互式的,非常适合脚本和自动化任务。
应用场景
- 测试 API 接口
- 下载文件
- 上传文件
- 检查网站状态
curl 基本用法
发起 GET 请求
GET 请求用于从服务器获取数据。
-
最基本的 GET 请求,只需要提供目标 URL
curl http://example.com
- 不指定请求方法时,默认会发起一个 GET 请求。
-
使用
-G
选项curl -G https://example.com
-G
选项明确指定发起一个 GET 请求。
- 使用
-X GET
选项
curl -X GET http://example.com
-X GET
:明确指定使用 GET 方法,但通常不需要,因为默认就是 GET 请求。
-
带参数的 GET 请求,当需要带参数进行 GET 请求时,可以使用
-G
选项和-d
选项curl -G -d "param1=value1" -d "param2=value2" http://example.com
-G
选项指定 GET 请求,而-d
选项则用于传递请求参数。curl
会自动将参数附加到 URL 的查询字符串中。
发起 POST 请求
curl
工具仅支持 GET 请求,还能发起 POST 请求。
-
使用
-d
选项curl -d "name=xxx" http://example.com
-d
选项用于指定要发送的数据,curl
默认会将请求方法设置为 POST,因此不需要额外指定方法。
-
使用
-X POST
选项curl -X POST -d "name=xxx" http://example.com
-X POST
明确指定使用 POST 方法,-d
选项用于指定要发送的数据。
-
带有多个字段的 POST 请求
curl -d "name=JohnDoe" -d "age=30" http://example.com/submit
- 将发送
name=JohnDoe&age=30
的 POST 请求。
- 将发送
-
发送 JSON 数据
curl -H "Content-Type: application/json" -d '{"name": "JohnDoe", "age": 30}' http://example.com/api
-H
选项设置Content-Type
为application/json
,表示发送 JSON 数据。
其他常用参数
在使用 curl
进行网络请求时,可以使用多个参数为定制请求方式和处理响应内容。
-o filename:保存响应内容
使用-o
参数可以将响应内容保存到指定的文件中。
curl -o response.html http://example.com
-i:显示头信息
使用-i
参数可以在输出中包含响应头信息。
curl -i http://example.com
-I:仅显示头信息
使用 -I
参数可以只获取响应头信息,而不下载响应体。
curl -I http://example.com
-s:静默模式
使用 -s
参数可以让 curl
静默运行,不输出错误和进度信息。适用于脚本中。
curl -s http://example.com
-v:输出通信过程
使用 -v
参数可以让 curl
显示详细的通信过程信息,包括请求和响应头信息。
curl -v http://example.com
-H headers:添加头信息
使用 -H 参数可以为请求添加自定义头信息。
curl -H "Authorization: Bearer token" http://example.com
-x "ip:port":使用代理
使用 -x 参数可以为请求指定代理服务器及其端口。
curl -x "192.168.1.100:8080" http://example.com
jq 工具详解
什么是 jq
- jq 不是 jQuery
- jq 是一个轻量级且灵活的命令行工具,用于解析、查询和操作 JSON 数据。
jq 的安装
在大多数 Linux 发行版上,可以通过包管理安装 jq。
-
在 centos
yum install jq
-
在 ubuntu
apt-get install jq
jq 的基本用法
jq 格式化
使用 jq 格式化 JSON 数据
echo '<JSON数据>' | jq '.'
示例
echo '{"a":1,"b":2}' | jq '.'
输出
{
"a": 1,
"b": 2
}
JSON 数据提取
提取指定 key 的值
echo '<JSON数据>' | jq '.<key>'
-
示例
echo '{"foo":53,"bar":"some datas"}' | jq .foo 输出 53
从数组中提取单个元素
echo '<JSON数据>' | jq '.[<索引>]'
-
示例
echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[0] 输出 { "a": 1, "b": 2 }
从数组中提取所有元素
echo '<JSON数据>' | jq '.[]'
-
示例
echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[] 结果 { "a": 1, "b": 2 } { "c": 3, "d": 4 }
从数组中提取多个值
echo '<JSON数据>' | jq '.[<索引1>,<索引2>,...]'
-
示例
echo '[{"a":1,"b":2},{"c":3,"d":4},{"e":5,"f":6}]' | jq .[0,2] 结果 { "a": 1, "b": 2 } { "e": 5, "f": 6 }
JSON 数据重组
数据重组成数组
echo '<JSON数据>' | jq '[.<key1>, .<key2>, ...]'
-
示例
echo '{"a":1,"b":2,"c":3,"d":4}' | jq '[.a, .b]' 结果 [ 1, 2 ]
数据重组成对象
echo '<JSON数据>' | jq '{"<新key>": .<原key>}'
-
示例
echo '{"a":1,"b":2,"c":3,"d":4}' | jq '{"tmp": .b}' 结果 { "tmp": 2 }
使用 jq,将指定内容翻倍
假设我们有以下 JSON 数据
{
"value": 5
}
将value
的值翻倍
echo '<JSON数据>' | jq '.<key> = .<key> * <倍数>'
-
示例
echo '{"value":5}' | jq '.value = .value * 2' 输出 { "value": 10 }
总结
- 简介
- curl 基本用法
- js 的基本用法