diff --git a/README.md b/README.md index 38fe622..9abd098 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,8 @@ Quick Reference ## Linux 命令 -[Chmod](./docs/chmod.md) +[Curl](./docs/curl.md) +[Chmod](./docs/chmod.md) [Cron](./docs/cron.md) [Git](./docs/git.md) [Grep](./docs/grep.md) diff --git a/docs/curl.md b/docs/curl.md new file mode 100644 index 0000000..5cead24 --- /dev/null +++ b/docs/curl.md @@ -0,0 +1,176 @@ +Curl 备忘清单 +=== + +此 [Curl](https://github.com/curl/curl) 备忘清单包含命令和一些常见的 Curl 技巧示例。 + +入门 +---- + +### 介绍 + +Curl 是一种在服务器之间传输数据的工具,支持协议,包括 HTTP/FTP/IMAP/LDAP/POP3/SCP/SFTP/SMB/SMTP 等 + +- [Curl GitHub 源码仓库](https://github.com/curl/curl) _(github.com)_ +- [Curl 官方网站](https://curl.se/) _(curl.se)_ + + +### Options + + +```bash +-o # --output: 写入文件 +-u user:pass # --user: 验证 +``` + +--- + +```bash +-v # --verbose: 在操作期间使 curl 冗长 +-vv # 更冗长 +-s # --silent: 不显示进度表或错误 +-S # --show-error: 与 --silent (-sS) 一起使用时,显示错误但没有进度表 +``` + +--- + +```bash +-i # --include: 在输出中包含 HTTP 标头 +-I # --head: 仅标头 +``` + +### 请求 + +```bash +-X POST # --request +-L # 如果页面重定向,请点击链接 +-F # --form: multipart/form-data 的 HTTP POST 数据 +``` + + +### 数据 + +```bash +# --data: HTTP post 数据 +# URL 编码(例如,status="Hello") +-d 'data' + +# --data 通过文件 +-d @file + +# --get: 通过 get 发送 -d 数据 +-G +``` + +### 头信息 Headers + +```bash +-A # --user-agent + +-b name=val # --cookie + +-b FILE # --cookie + +-H "X-Foo: y" # --header + +--compressed # 使用 deflate/gzip +``` + +### SSL + +```bash + --cacert + --capath +``` + +```bash +-E, --cert # --cert: 客户端证书文件 + --cert-type # der/pem/eng +-k, --insecure # 对于自签名证书 +``` + +#### 安装 + +```bash +apk add --update curl # alpine linux 中安装 +``` + +示例 +---- + + +### CURL GET/HEAD + + +命令 | 说明 +:- | :- +`curl -I https://www.baidu.com` | `curl` 发请求 +`curl -v -I https://www.baidu.com` | 带有详细信息的 `curl` 发请求 +`curl -X GET https://www.baidu.com` | 使用显式 http 方法进行 `curl` +`curl --noproxy 127.0.0.1 http://www.stackoverflow.com` | 没有 http 代理的 `curl` +`curl --connect-timeout 10 -I -k https://www.baidu.com` | `curl` 默认没有超时 +`curl --verbose --header "Host: www.mytest.com:8182" www.baidu.com` | `curl` 得到额外的标题 +`curl -k -v https://www.google.com` | `curl` 获取带有标题的响应 + + +### 多文件上传 + + +```bash +$ curl -v -include \ + --form key1=value1 \ + --form upload=@localfilename URL +``` + +### 为 curl 响应美化 json 输出 + + +```bash +$ curl -XGET http://${elasticsearch_ip}:9200/_cluster/nodes | python -m json.tool +``` + + +### CURL POST + + +命令 | 说明 +:- | :- +`curl -d "name=username&password=123456" ` | `curl` 发请求 +`curl -H "content-type: application/json" -d "{ \"woof\": \"bark\"}"` | `curl` 发送 json + +### CURL 脚本安装 rvm + + +```shell +curl -sSL https://get.rvm.io | bash +``` + +### CURL 高级 + + +命令 | 说明 +:- | :- +`curl -L -s http://ipecho.net/plain, curl -L -s http://whatismijnip.nl` | 获取我的公共 `IP` +`curl -u $username:$password http://repo.dennyzhang.com/README.txt` | 带凭证的 `curl` +`curl -v -F key1=value1 -F upload=@localfilename ` | `curl` 上传 +`curl -k -v --http2 https://www.google.com/` | 使用 http2 curl +`curl -T cryptopp552.zip -u test:test ftp://10.32.99.187/` | curl `ftp` 上传 +`curl -u test:test ftp://10.32.99.187/cryptopp552.zip -o cryptopp552.zip` | curl `ftp` 下载 +`curl -v -u admin:admin123 --upload-file package1.zip http://mysever:8081/dir/package1.zip` | 使用凭证 `curl` 上传 + +### 检查网站响应时间 + + +```shell +curl -s -w \ + '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nAppCon time:\t%{time_appconnect}\nRedirect time:\t%{time_redirect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' \ + -o /dev/null https://www.google.com +``` + + +### 使用 Curl 检查远程资源是否可用 + + +```bash +curl -o /dev/null --silent -Iw "%{http_code}" https://example.com/my.remote.tarball.gz +``` + \ No newline at end of file diff --git a/scripts/style.css b/scripts/style.css index 656f04a..d40604f 100644 --- a/scripts/style.css +++ b/scripts/style.css @@ -450,6 +450,8 @@ a.text-grey { .wrap-header.h1wrap .wrap-body { color: var(--color-fg-subtle); + max-width: 850px; + margin: 0 auto; } .wrap-header.h1wrap > h1 { @@ -638,7 +640,7 @@ body:not(.home) .h2wrap-body > .wrap:hover .h3wrap > h3 a::after { } .h2wrap-body ul.style-timeline li::before { color: #228e6c; - background-color: #fff; + background-color: var(--color-canvas-default); counter-increment: stepCount; content: counter(stepCount); border-radius: initial;