美文网首页
mac上几个有趣的命令(一)

mac上几个有趣的命令(一)

作者: 追风骚年 | 来源:发表于2018-10-21 00:13 被阅读222次

    首先我是一个 Mac 党,但是对于 Linux 也尤为喜爱,他们上面有那么一些命令总是那么饶有趣味,又由于都是类 Unix 系统,很多命令都是通用的,本文的代码也都是在 Mac 上面完成

    curl

    一个大名鼎鼎的命令,作为一个程序员,如果 curl 都不知道,那就真的很尴尬,主要是做网络请求

    直接返回下载文件内容到终端

    $ curl baidu.com
    
    <html>
    <meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
    </html>
    

    下载文件到指定文件

    $ curl baidu.com -o baidu.html
    $ cat baidu.html
    
    <html>
    <meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
    </html>
    

    下载文件到默认文件

    $ curl https://nodejs.org/dist/v8.12.0/node-v8.12.0.pkg -O
    $ ls node-v8.12.0.pkg
    node-v8.12.0.pkg
    

    查看返回头信息

    $ curl -i baidu.com
    
    HTTP/1.1 200 OK
    Date: Sat, 20 Oct 2018 14:30:47 GMT
    Server: Apache
    Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
    ETag: "51-47cf7e6ee8400"
    Accept-Ranges: bytes
    Content-Length: 81
    Cache-Control: max-age=86400
    Expires: Sun, 21 Oct 2018 14:30:47 GMT
    Connection: Keep-Alive
    Content-Type: text/html
    Proxy-Connection: keep-alive
    
    <html>
    <meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
    </html>
    

    查看请求的整个过程

    $ curl -v baidu.com
    
    * Rebuilt URL to: baidu.com/
    *   Trying 123.125.115.110...
    * TCP_NODELAY set
    * Connected to baidu.com (123.125.115.110) port 80 (#0)
    > GET / HTTP/1.1
    > Host: baidu.com
    > User-Agent: curl/7.54.0
    > Accept: */*
    > 
    < HTTP/1.1 200 OK
    < Date: Sat, 20 Oct 2018 14:40:22 GMT
    < Server: Apache
    < Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
    < ETag: "51-47cf7e6ee8400"
    < Accept-Ranges: bytes
    < Content-Length: 81
    < Cache-Control: max-age=86400
    < Expires: Sun, 21 Oct 2018 14:40:22 GMT
    < Connection: Keep-Alive
    < Content-Type: text/html
    < 
    <html>
    <meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
    </html>
    * Connection #0 to host baidu.com left intact
    

    发送 Post 请求

    不带参数

    $ curl -X POST baidu.com
    

    form形式

    将以 Content-Type: application/x-www-form-urlencoded 形式提交

    $ curl -X POST -d 'a=b' baidu.com
    

    json形式

    将以 Content-Type: application/json 形式提交

    $ curl -X POST baidu.com -H 'content-type: application/json' -d '{"a":"b"}'
    

    发送其他 method 请求

    如果你们公司也在用 restful api ,很幸运的是 curl 会是一个好帮手

    $ curl -X GET baidu.com
    $ curl -X POST baidu.com
    $ curl -X PUT baidu.com
    $ curl -X DELETE baidu.com
    

    发送带自定义 header 请求

    $ curl -X POST -H 'custom-key: custom-value' baidu.com
    

    查看当前 ip

    这算是一个非常实用的技巧了,因为我这里开了代理,所以网络 ip 显示的是美国

    $ curl ip.cn
    当前 IP:138.128.193.*** 来自:美国
    

    ping

    ping(packet internet groper)通过发送icmp(internet control messages protocol)协议包查看当前机器和目标机器的连通性,mac上面如果不指定 ping 次数,则会一直执行

    $ ping baidu.com
    

    ctrl-c 强行停止

    PING baidu.com (123.125.115.110): 56 data bytes
    64 bytes from 123.125.115.110: icmp_seq=0 ttl=55 time=111.843 ms
    64 bytes from 123.125.115.110: icmp_seq=1 ttl=55 time=113.706 ms
    64 bytes from 123.125.115.110: icmp_seq=2 ttl=55 time=26.261 ms
    64 bytes from 123.125.115.110: icmp_seq=3 ttl=55 time=25.522 ms
    64 bytes from 123.125.115.110: icmp_seq=4 ttl=55 time=26.935 ms
    ...
    

    通过 -c 指定执行次数

    $ ping  -c3 baidu.com
    
    PING baidu.com (123.125.115.110): 56 data bytes
    64 bytes from 123.125.115.110: icmp_seq=0 ttl=55 time=232.282 ms
    64 bytes from 123.125.115.110: icmp_seq=1 ttl=55 time=44.364 ms
    64 bytes from 123.125.115.110: icmp_seq=2 ttl=55 time=38.667 ms
    
    --- baidu.com ping statistics ---
    3 packets transmitted, 3 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 38.667/105.104/232.282/89.958 ms
    

    执行结束会一段对本次所以请求的汇报,发送了多少次包,多少返回了,多少丢失了,round-trip time 时间 最短/平均/最长/标准差

    traceroute

    traceroute 其实也是发送 icmp 协议报文查看到达目标 ip 中间经过所有的路由信息

    $ traceroute www.baidu.com
    

    结果如下

    traceroute: Warning: www.baidu.com has multiple addresses; using 61.135.169.121
    traceroute to www.a.shifen.com (61.135.169.121), 64 hops max, 52 byte packets
     1  * * *
     2  * * *
     3  * * *
     4  * * *
    
    

    尴尬的是后面直接星号了,因为大多数网关都禁止对 icmp 报文作出响应

    相关文章

      网友评论

          本文标题:mac上几个有趣的命令(一)

          本文链接:https://www.haomeiwen.com/subject/abyvzftx.html