Files
reference/docs/curl.html

308 lines
31 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>Curl 备忘清单
&#x26; curl cheatsheet &#x26; Quick Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta description="此 Curl 备忘清单包含命令和一些常见的 Curl 技巧示例。为开发人员分享快速参考备忘单。">
<meta keywords="Quick,Reference,cheatsheet,curl">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%221em%22%20width%3D%221em%22%3E%20%3Cpath%20d%3D%22m21.66%2010.44-.98%204.18c-.84%203.61-2.5%205.07-5.62%204.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2%201.17-2.42%203.16-3.07%206.5-2.28l1.67.39c4.19.98%205.47%203.05%204.49%207.23Z%22%20fill%3D%22%23c9d1d9%22%2F%3E%20%3Cpath%20d%3D%22M15.06%2019.39c-.62.42-1.4.77-2.35%201.08l-1.58.52c-3.97%201.28-6.06.21-7.35-3.76L2.5%2013.28c-1.28-3.97-.22-6.07%203.75-7.35l1.58-.52c.41-.13.8-.24%201.17-.31-.3.61-.54%201.35-.74%202.2l-.98%204.19c-.98%204.18.31%206.24%204.48%207.23l1.68.4c.58.14%201.12.23%201.62.27Zm2.43-8.88c-.06%200-.12-.01-.19-.02l-4.85-1.23a.75.75%200%200%201%20.37-1.45l4.85%201.23a.748.748%200%200%201-.18%201.47Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3Cpath%20d%3D%22M14.56%2013.89c-.06%200-.12-.01-.19-.02l-2.91-.74a.75.75%200%200%201%20.37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3C%2Fsvg%3E" type="image/svg+xml">
<link rel="stylesheet" href="../style/style.css">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/curl.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script>
const LOCAL_NANE = '_dark_mode_theme_'
const rememberedValue = localStorage.getItem(LOCAL_NANE);
if (rememberedValue && ['light', 'dark'].includes(rememberedValue)) {
document.documentElement.setAttribute('data-color-mode', rememberedValue);
}
const button = document.querySelector('#darkMode');
button.onclick = () => {
const theme = document.documentElement.dataset.colorMode;
const mode = theme === 'light' ? 'dark' : 'light';
document.documentElement.setAttribute('data-color-mode', mode);
localStorage.setItem(LOCAL_NANE, mode);
}
</script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap max-container"><header class="wrap-header h1wrap"><h1 id="curl-备忘清单"><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em">
<path d="M107.946667 838.4l57.173333 23.893333v-385.28l-103.68 250.026667c-17.493333 43.52 3.413333 93.44 46.506667 111.36z m832-157.866667L728.32 169.813333a85.888 85.888 0 0 0-77.226667-52.48c-11.093333 0-22.613333 1.706667-33.706666 6.4L302.933333 253.866667a85.290667 85.290667 0 0 0-46.08 110.933333l211.626667 510.72a85.248 85.248 0 0 0 110.933333 46.08l314.026667-130.133333a85.077333 85.077333 0 0 0 46.506667-110.933334zM336.213333 373.333333c-23.466667 0-42.666667-19.2-42.666666-42.666666s19.2-42.666667 42.666666-42.666667 42.666667 19.2 42.666667 42.666667-19.2 42.666667-42.666667 42.666666z m-85.333333 469.333334c0 46.933333 38.4 85.333333 85.333333 85.333333h61.866667l-147.2-355.84v270.506667z"></path>
</svg><a aria-hidden="true" tabindex="-1" href="#curl-备忘清单"><span class="icon icon-link"></span></a>Curl 备忘清单</h1><div class="wrap-body">
<p><a href="https://github.com/curl/curl">Curl</a> 备忘清单包含命令和一些常见的 Curl 技巧示例。</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" href="#介绍">介绍</a><a aria-hidden="true" class="leve3 tocs-link" href="#options">Options</a><a aria-hidden="true" class="leve3 tocs-link" href="#请求">请求</a><a aria-hidden="true" class="leve3 tocs-link" href="#数据">数据</a><a aria-hidden="true" class="leve3 tocs-link" href="#头信息-headers">头信息 Headers</a><a aria-hidden="true" class="leve3 tocs-link" href="#ssl">SSL</a><a aria-hidden="true" class="leve4 tocs-link" href="#安装">安装</a><a aria-hidden="true" class="leve2 tocs-link" href="#示例">示例</a><a aria-hidden="true" class="leve3 tocs-link" href="#curl-gethead">CURL GET/HEAD</a><a aria-hidden="true" class="leve3 tocs-link" href="#多文件上传">多文件上传</a><a aria-hidden="true" class="leve3 tocs-link" href="#为-curl-响应美化-json-输出">为 curl 响应美化 json 输出</a><a aria-hidden="true" class="leve3 tocs-link" href="#curl-post">CURL POST</a><a aria-hidden="true" class="leve3 tocs-link" href="#curl-脚本安装-rvm">CURL 脚本安装 rvm</a><a aria-hidden="true" class="leve3 tocs-link" href="#curl-高级">CURL 高级</a><a aria-hidden="true" class="leve3 tocs-link" href="#检查网站响应时间">检查网站响应时间</a><a aria-hidden="true" class="leve3 tocs-link" href="#使用-curl-检查远程资源是否可用">使用 Curl 检查远程资源是否可用</a><a aria-hidden="true" class="leve3 tocs-link" href="#正在下载文件">正在下载文件</a><a aria-hidden="true" class="leve3 tocs-link" href="#下载文件保存文件而不更改其名称">下载文件,保存文件而不更改其名称</a><a aria-hidden="true" class="leve3 tocs-link" href="#继续部分下载">继续部分下载</a><a aria-hidden="true" class="leve3 tocs-link" href="#从多个域下载文件">从多个域下载文件</a><a aria-hidden="true" class="leve3 tocs-link" href="#下载一系列文件">下载一系列文件</a></div></div><div class="h1wrap-body"><div class="wrap"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap"><div class="wrap-header h3wrap"><h3 id="介绍"><a aria-hidden="true" tabindex="-1" href="#介绍"><span class="icon icon-link"></span></a>介绍</h3><div class="wrap-body">
<p>Curl 是一种在服务器之间传输数据的工具,支持协议,包括 HTTP/FTP/IMAP/LDAP/POP3/SCP/SFTP/SMB/SMTP 等</p>
<ul>
<li><a href="https://github.com/curl/curl">Curl GitHub 源码仓库</a> <em>(github.com)</em></li>
<li><a href="https://curl.se/">Curl 官方网站</a> <em>(curl.se)</em></li>
</ul>
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3 id="options"><a aria-hidden="true" tabindex="-1" href="#options"><span class="icon icon-link"></span></a>Options</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-2-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token parameter variable">-o</span> <span class="token operator">&#x3C;</span>file<span class="token operator">></span> <span class="token comment"># --output: 写入文件</span>
</span><span class="code-line"><span class="token parameter variable">-u</span> user:pass <span class="token comment"># --user: 验证</span>
</span></code></pre>
<hr>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token parameter variable">-v</span> <span class="token comment"># --verbose: 在操作期间使 curl 冗长</span>
</span><span class="code-line"><span class="token parameter variable">-vv</span> <span class="token comment"># 更冗长</span>
</span><span class="code-line"><span class="token parameter variable">-s</span> <span class="token comment"># --silent: 不显示进度表或错误</span>
</span><span class="code-line"><span class="token parameter variable">-S</span> <span class="token comment"># --show-error: 与 --silent (-sS) 一起使用时,显示错误但没有进度表</span>
</span></code></pre>
<hr>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token parameter variable">-i</span> <span class="token comment"># --include: 在输出中包含 HTTP 标头</span>
</span><span class="code-line"><span class="token parameter variable">-I</span> <span class="token comment"># --head: 仅标头</span>
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="请求"><a aria-hidden="true" tabindex="-1" href="#请求"><span class="icon icon-link"></span></a>请求</h3><div class="wrap-body">
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line"><span class="token parameter variable">-X</span> POST <span class="token comment"># --request</span>
</span><span class="code-line"><span class="token parameter variable">-L</span> <span class="token comment"># 如果页面重定向,请点击链接</span>
</span><span class="code-line"><span class="token parameter variable">-F</span> <span class="token comment"># --form: multipart/form-data 的 HTTP POST 数据</span>
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="数据"><a aria-hidden="true" tabindex="-1" href="#数据"><span class="icon icon-link"></span></a>数据</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># --data: HTTP post 数据</span>
</span><span class="code-line"><span class="token comment"># URL 编码(例如status="Hello")</span>
</span><span class="code-line"><span class="token parameter variable">-d</span> <span class="token string">'data'</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># --data 通过文件</span>
</span><span class="code-line"><span class="token parameter variable">-d</span> @file
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># --get: 通过 get 发送 -d 数据</span>
</span><span class="code-line"><span class="token parameter variable">-G</span>
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="头信息-headers"><a aria-hidden="true" tabindex="-1" href="#头信息-headers"><span class="icon icon-link"></span></a>头信息 Headers</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token parameter variable">-A</span> <span class="token operator">&#x3C;</span>str<span class="token operator">></span> <span class="token comment"># --user-agent</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token parameter variable">-b</span> <span class="token assign-left variable">name</span><span class="token operator">=</span>val <span class="token comment"># --cookie</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token parameter variable">-b</span> FILE <span class="token comment"># --cookie</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token parameter variable">-H</span> <span class="token string">"X-Foo: y"</span> <span class="token comment"># --header</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token parameter variable">--compressed</span> <span class="token comment"># 使用 deflate/gzip</span>
</span></code></pre>
</div></div></div><div class="wrap"><div class="wrap-header h3wrap"><h3 id="ssl"><a aria-hidden="true" tabindex="-1" href="#ssl"><span class="icon icon-link"></span></a>SSL</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"> <span class="token parameter variable">--cacert</span> <span class="token operator">&#x3C;</span>file<span class="token operator">></span>
</span><span class="code-line"> <span class="token parameter variable">--capath</span> <span class="token operator">&#x3C;</span>dir<span class="token operator">></span>
</span></code></pre>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">-E, <span class="token parameter variable">--cert</span> <span class="token operator">&#x3C;</span>cert<span class="token operator">></span> <span class="token comment"># --cert: 客户端证书文件</span>
</span><span class="code-line"> --cert-type <span class="token comment"># der/pem/eng</span>
</span><span class="code-line">-k, <span class="token parameter variable">--insecure</span> <span class="token comment"># 对于自签名证书</span>
</span></code></pre>
</div></div><div class="h3wrap-body"><div class="wrap"><div class="wrap-header h4wrap"><h4 id="安装"><a aria-hidden="true" tabindex="-1" href="#安装"><span class="icon icon-link"></span></a>安装</h4><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">apk <span class="token function">add</span> <span class="token parameter variable">--update</span> <span class="token function">curl</span> <span class="token comment"># alpine linux 中安装</span>
</span></code></pre>
</div></div></div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2 id="示例"><a aria-hidden="true" tabindex="-1" href="#示例"><span class="icon icon-link"></span></a>示例</h2><div class="wrap-body">
<!--rehype:body-class=cols-6-->
</div></div><div class="h2wrap-body cols-6"><div class="wrap col-span-4 row-span-2"><div class="wrap-header h3wrap"><h3 id="curl-gethead"><a aria-hidden="true" tabindex="-1" href="#curl-gethead"><span class="icon icon-link"></span></a>CURL GET/HEAD</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-4 row-span-2-->
<table class="auto-wrap"><thead><tr><th align="left">命令</th><th align="left">说明</th></tr></thead><tbody><tr><td align="left"><code>curl -I https://www.baidu.com</code></td><td align="left"><code>curl</code> 发请求</td></tr><tr><td align="left"><code>curl -v -I https://www.baidu.com</code></td><td align="left">带有详细信息的 <code>curl</code> 发请求</td></tr><tr><td align="left"><code>curl -X GET https://www.baidu.com</code></td><td align="left">使用显式 http 方法进行 <code>curl</code></td></tr><tr><td align="left"><code>curl --noproxy 127.0.0.1 http://www.stackoverflow.com</code></td><td align="left">没有 http 代理的 <code>curl</code></td></tr><tr><td align="left"><code>curl --connect-timeout 10 -I -k https://www.baidu.com</code></td><td align="left"><code>curl</code> 默认没有超时</td></tr><tr><td align="left"><code>curl --verbose --header "Host: www.mytest.com:8182" www.baidu.com</code></td><td align="left"><code>curl</code> 得到额外的标题</td></tr><tr><td align="left"><code>curl -k -v https://www.google.com</code></td><td align="left"><code>curl</code> 获取带有标题的响应</td></tr></tbody></table>
<!--rehype:class=auto-wrap-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="多文件上传"><a aria-hidden="true" tabindex="-1" href="#多文件上传"><span class="icon icon-link"></span></a>多文件上传</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ <span class="token function">curl</span> <span class="token parameter variable">-v</span> <span class="token parameter variable">-include</span> <span class="token punctuation">\</span>
</span><span class="code-line"> <span class="token parameter variable">--form</span> <span class="token assign-left variable">key1</span><span class="token operator">=</span>value1 <span class="token punctuation">\</span>
</span><span class="code-line"> <span class="token parameter variable">--form</span> <span class="token assign-left variable">upload</span><span class="token operator">=</span>@localfilename URL
</span></code></pre>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="为-curl-响应美化-json-输出"><a aria-hidden="true" tabindex="-1" href="#为-curl-响应美化-json-输出"><span class="icon icon-link"></span></a>为 curl 响应美化 json 输出</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ <span class="token function">curl</span> <span class="token parameter variable">-XGET</span> http://<span class="token variable">${elasticsearch_ip}</span>:9200/_cluster/nodes <span class="token operator">|</span> python <span class="token parameter variable">-m</span> json.tool
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap col-span-4"><div class="wrap-header h3wrap"><h3 id="curl-post"><a aria-hidden="true" tabindex="-1" href="#curl-post"><span class="icon icon-link"></span></a>CURL POST</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-4-->
<table class="auto-wrap"><thead><tr><th align="left">命令</th><th align="left">说明</th></tr></thead><tbody><tr><td align="left"><code>curl -d "name=username&#x26;password=123456" &#x3C;URL></code></td><td align="left"><code>curl</code> 发请求</td></tr><tr><td align="left"><code>curl &#x3C;URL> -H "content-type: application/json" -d "{ \"woof\": \"bark\"}"</code></td><td align="left"><code>curl</code> 发送 json</td></tr></tbody></table>
<!--rehype:class=auto-wrap-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="curl-脚本安装-rvm"><a aria-hidden="true" tabindex="-1" href="#curl-脚本安装-rvm"><span class="icon icon-link"></span></a>CURL 脚本安装 rvm</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line"><span class="token function">curl</span> <span class="token parameter variable">-sSL</span> https://get.rvm.io <span class="token operator">|</span> <span class="token function">bash</span>
</span></code></pre>
</div></div></div><div class="wrap col-span-6"><div class="wrap-header h3wrap"><h3 id="curl-高级"><a aria-hidden="true" tabindex="-1" href="#curl-高级"><span class="icon icon-link"></span></a>CURL 高级</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-6-->
<table class="auto-wrap"><thead><tr><th align="left">命令</th><th align="left">说明</th></tr></thead><tbody><tr><td align="left"><code>curl -L -s http://ipecho.net/plain, curl -L -s http://whatismijnip.nl</code></td><td align="left">获取我的公共 <code>IP</code></td></tr><tr><td align="left"><code>curl -u $username:$password http://repo.dennyzhang.com/README.txt</code></td><td align="left">带凭证的 <code>curl</code></td></tr><tr><td align="left"><code>curl -v -F key1=value1 -F upload=@localfilename &#x3C;URL></code></td><td align="left"><code>curl</code> 上传</td></tr><tr><td align="left"><code>curl -k -v --http2 https://www.google.com/</code></td><td align="left">使用 http2 curl</td></tr><tr><td align="left"><code>curl -T cryptopp552.zip -u test:test ftp://10.32.99.187/</code></td><td align="left">curl <code>ftp</code> 上传</td></tr><tr><td align="left"><code>curl -u test:test ftp://10.32.99.187/cryptopp552.zip -o cryptopp552.zip</code></td><td align="left">curl <code>ftp</code> 下载</td></tr><tr><td align="left"><code>curl -v -u admin:admin123 --upload-file package1.zip http://mysever:8081/dir/package1.zip</code></td><td align="left">使用凭证 <code>curl</code> 上传</td></tr></tbody></table>
<!--rehype:class=auto-wrap-->
</div></div></div><div class="wrap col-span-4"><div class="wrap-header h3wrap"><h3 id="检查网站响应时间"><a aria-hidden="true" tabindex="-1" href="#检查网站响应时间"><span class="icon icon-link"></span></a>检查网站响应时间</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-4-->
<pre class="wrap-text "><code class="language-shell code-highlight"><span class="code-line"><span class="token function">curl</span> <span class="token parameter variable">-s</span> <span class="token parameter variable">-w</span> <span class="token punctuation">\</span>
</span><span class="code-line"> <span class="token string">'\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'</span> <span class="token punctuation">\</span>
</span><span class="code-line"> <span class="token parameter variable">-o</span> /dev/null https://www.google.com
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3 id="使用-curl-检查远程资源是否可用"><a aria-hidden="true" tabindex="-1" href="#使用-curl-检查远程资源是否可用"><span class="icon icon-link"></span></a>使用 Curl 检查远程资源是否可用</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> <span class="token parameter variable">-o</span> /dev/null <span class="token parameter variable">--silent</span> <span class="token parameter variable">-Iw</span> <span class="token string">"%{http_code}"</span> https://example.com/my.remote.tarball.gz
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap col-span-3"><div class="wrap-header h3wrap"><h3 id="正在下载文件"><a aria-hidden="true" tabindex="-1" href="#正在下载文件"><span class="icon icon-link"></span></a>正在下载文件</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> https://example.com <span class="token operator">|</span> <span class="token punctuation">\</span>
</span><span class="code-line"><span class="token function">grep</span> --only-matching <span class="token string">'src="[^"]*.[png]"'</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
</span><span class="code-line"><span class="token function">cut</span> -d<span class="token punctuation">\</span>" <span class="token parameter variable">-f2</span> <span class="token operator">|</span> <span class="token punctuation">\</span>
</span><span class="code-line"><span class="token keyword">while</span> <span class="token builtin class-name">read</span> i<span class="token punctuation">;</span> <span class="token keyword">do</span> <span class="token function">curl</span> https://example.com/<span class="token string">"<span class="token variable">${i}</span>"</span> <span class="token punctuation">\</span>
</span><span class="code-line"><span class="token parameter variable">-o</span> <span class="token string">"<span class="token variable">${i<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span><span class="token punctuation">;</span> <span class="token keyword">done</span>
</span></code></pre>
<p>从站点下载所有 PNG 文件使用GNU grep</p>
</div></div></div><div class="wrap col-span-3"><div class="wrap-header h3wrap"><h3 id="下载文件保存文件而不更改其名称"><a aria-hidden="true" tabindex="-1" href="#下载文件保存文件而不更改其名称"><span class="icon icon-link"></span></a>下载文件,保存文件而不更改其名称</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> --remote-name <span class="token string">"https://example.com/linux-distro.iso"</span>
</span></code></pre>
<p>重命名文件</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> --remote-name <span class="token string">"http://example.com/index.html"</span> <span class="token parameter variable">--output</span> foo.html
</span></code></pre>
</div></div></div><div class="wrap col-span-3"><div class="wrap-header h3wrap"><h3 id="继续部分下载"><a aria-hidden="true" tabindex="-1" href="#继续部分下载"><span class="icon icon-link"></span></a>继续部分下载</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> --remote-name --continue-at - <span class="token string">"https://example.com/linux-distro.iso"</span>
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap col-span-3"><div class="wrap-header h3wrap"><h3 id="从多个域下载文件"><a aria-hidden="true" tabindex="-1" href="#从多个域下载文件"><span class="icon icon-link"></span></a>从多个域下载文件</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> <span class="token string">"https://www.{example,w3,iana}.org/index.html"</span> <span class="token parameter variable">--output</span> <span class="token string">"file_#1.html"</span>
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap col-span-3"><div class="wrap-header h3wrap"><h3 id="下载一系列文件"><a aria-hidden="true" tabindex="-1" href="#下载一系列文件"><span class="icon icon-link"></span></a>下载一系列文件</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line"><span class="token function">curl</span> <span class="token string">"https://{foo,bar}.com/file_[1-4].webp"</span> <span class="token parameter variable">--output</span> <span class="token string">"#1_#2.webp"</span>
</span></code></pre>
<!--rehype:className=wrap-text -->
<p>下载一系列文件(输出<code>foo_file1.webp</code><code>foo_file2.webp…bar_file1_webp</code>等)</p>
</div></div></div></div></div></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer><script>
if(('onhashchange' in window) && ((typeof document.documentMode==='undefined') || document.documentMode==8)) {
window.onhashchange = function () {
anchorPoint()
updateAnchor()
};
}
function anchorPoint() {
const hash = window.location.hash?.replace(/^#/, '') || '';
const elm = document.getElementById(decodeURIComponent(hash));
Array.from(document.querySelectorAll('.h2wrap-body .wrap')).forEach((elm) => elm.classList.remove('active'))
if (elm?.tagName === 'H3') {
elm?.parentElement?.parentElement?.classList.add('active');
const box = elm?.parentElement?.parentElement;
console.log('elm:2', box, document.querySelectorAll('.h2wrap-body .wrap'))
}
}
anchorPoint();
function updateAnchor(element) {
const anchorContainer = document.querySelectorAll('.menu-tocs .menu-modal a.tocs-link');
anchorContainer.forEach((tocanchor) => {
tocanchor.classList.remove('is-active-link');
});
const anchor = element || document.querySelector(`a.tocs-link[href='${decodeURIComponent(window.location.hash)}']`);
console.log('anchor', anchor)
if (anchor) {
anchor.classList.add('is-active-link');
}
}
// toc 定位
updateAnchor()
const anchor = document.querySelectorAll('.menu-tocs .menu-modal a.tocs-link');
anchor.forEach((item) => {
item.addEventListener('click', (e) => {
updateAnchor()
})
})
</script></body>
</html>