Linux与bash:3.Linux终端命令之进阶命令(curl,jq,sort,uniq,wc)

Posted new nm个对象

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux与bash:3.Linux终端命令之进阶命令(curl,jq,sort,uniq,wc)相关的知识,希望对你有一定的参考价值。

1.curl讲解

(1)curl用法

格式:curl [option] [url]
常用参数:

-A/--user-agent <string>              设置用户代理发送给服务器
-b/--cookie <name=string/file>    cookie字符串或文件读取位置
-c/--cookie-jar <file>                    操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>            断点续转
-D/--dump-header <file>              把header信息写入到该文件中
-e/--referer                                  来源网址
-f/--fail                                          连接失败时不显示http错误
-o/--output                                  把输出写到该文件中
-O/--remote-name                      把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                                    静音模式。不输出任何东西
-T/--upload-file <file>                  上传文件
-u/--user <user[:password]>      设置服务器的用户和密码
-w/--write-out [format]                什么输出完成后
-x/--proxy <host[:port]>              在给定的端口上使用HTTP代理
-#/--progress-bar                        进度条显示当前的传送状态

(2)curl命令

  • curl定义:curl是向服务器发送请求的一个命令
  • https://curl.haxx.se/为curl官网
安装curl
  • sudo apt install curl--------:ubuntu中安装curl
获取帮助
  • curl -h:获取帮助信息
获取对应网址的文本信息
  • curl url地址-------------------:获取对应网址的文本信息,常用来在Linux服务器上测试是否能访问某网站

    #获取www.baidu.com的文本信息
    curl www.baidu.com
    
  • curl -i url地址-------------:获取该网址的文本信息以及协议头部信息

    curl -i www.baidu.com
    

使用代理
  • curl -x proxy url地址---------使用代理获取网页文本信息**(可以配合代理服务器charles使用)

    #使用代理访问百度
    curl -x 127.0.0.1:8080 www.baidu.com
    
使用post访问url
  • 默认的curl都是以gei请求访问网页,使用post请求:curl -X POST url地址

    curl -X POST www.baidu.com
    
  • 携带参数以post方式访问网页:curl -d 参数 url地址

    curl -d 'login=1234' https://www.baidu.com
    
将获取到的内容保存到文件中
  • curl -o tmp.html url地址---------:获取网页文本信息,并保存在tmp.html文件中

    curl -o tmp.html www.baidu.com
    
  • 可以使用curl的内置option:-O(大写)保存网页中的文件。要注意这里后面的url要具体到某个文件,不然抓不下来

    curl -O http://www.linux.com/hello.sh
    
操作cookie

有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie

  • 保存http的response里面的cookie信息。内置option:-c(小写)

    curl -c cookiec.txt  http://www.linux.com
    执行后cookie信息就被存到了cookiec.txt里面了
    
  • 保存http的response里面的header信息。内置option: -D

    curl -D cookied.txt http://www.linux.com
    执行后cookie信息就被存到了cookied.txt里面了
    

注意:-c(小写)产生的cookie和-D里面的cookie是不一样的。

  • 使用cookie。很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option: -b

    curl -b cookiec.txt http://www.linux.com
    
伪造referer(盗链)

很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了
curl中内置option:-e可以让我们设定referer

```
curl -e "www.linux.com" http://mail.linux.com
这样就会让服务器其以为你是从www.linux.com点击某个链接过来的
```
下载文件
  • 利用curl下载文件。使用内置option:-o(小写)

    curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
    
  • 使用内置option:-O(大写)

    curl -O http://www.linux.com/dodo1.JPG
    这样就会以服务器上的名称保存文件到本地
    
  • 循环下载
    有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样

    curl -O http://www.linux.com/dodo[1-5].JPG
    这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来
    
  • 分块下载
    有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r

    curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
    curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
    curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
    cat dodo1_part* > dodo1.JPG
    这样就可以查看dodo1.JPG的内容了
    
  • 通过ftp下载文件
    curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法

    curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
    curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG
    
  • 显示下载进度条

    curl -# -O http://www.linux.com/dodo1.JPG
    
  • 不会显示下载进度信息

    curl -s -O http://www.linux.com/dodo1.JPG
    
  • 上传文件
    curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现

    curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/
    这样就向ftp服务器上传了文件dodo1.JPG
    

2.jq讲解

jq是用户对json数据进行优化的命令

3.sort讲解

(1)sort排序

练习:


4.uniq讲解


注意:因为uniq只会对相邻的行进行比较,所以我们往往先使用sort排序后,再使用uniq来去重

练习:


5.wc统计文本

练习:

注意:空白行也会算成一行,空格,换行符,空行会被算成一个字符

以上是关于Linux与bash:3.Linux终端命令之进阶命令(curl,jq,sort,uniq,wc)的主要内容,如果未能解决你的问题,请参考以下文章

Linux与bash:2.Linux终端命令之三剑客命令(grep,sed,awk)

Linux Shell编程之谈谈bash

Linux进阶第七天

Centos7.5-Linux基本命令操作

Linux与bash:1.Linux终端基础命令

Linux进阶之使用Oh-My-Zsh打造炫酷终端