Skip to content

Linux进阶命令

linux 进阶命令

简介

在 Linux 中,curljq 是两个非常强大的命令行工具,分别用于网络请求和 JSON 数据处理,可以极大提高数据处理和接口测试的效率。

Linux 进阶命令学习

  • curl
  • jq

curl 接口请求

什么是 curl

  • curl 是一个用于从服务器传输数据的命令工具,支持多种协议。如FTPFTPSHTTPHTTPSTFTPSFTP等。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-Typeapplication/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 的基本用法