命令行里的“全能快递员”:写给小白的 curl 入门指南

如果你开始接触编程、Web 开发或者 Linux 系统,有一个名字你一定会频繁听到——curl

在各种技术教程里,你总能看到一行行以 curl 开头的神秘代码。对于刚入行的小白来说,这东西看起来高级又有点让人摸不着头脑:它到底是个啥?为什么大佬们放着浏览器不用,非要用它?

今天,我们就用最接地气的方式,彻底扒一扒这个在程序员圈子里日常出镜率极高的“瑞士军刀”。


🛠️ 什么是 curl?它能干什么?

curl 的全称是 Client URL。简单粗暴地解释:它就是一个运行在命令行(Terminal/CMD)里的“网络快递员”。

平时我们上网,都是打开 Chrome、Edge 这样的浏览器,输入网址,然后看网页。curl 做的事情,本质上和浏览器一模一样,只不过它没有好看的界面,全靠敲代码来操作。

作为一名“网络快递员”,它的核心工作就是传输数据。具体能干啥呢?

  • 假装浏览器看网页: 你给它一个网址,它就能把那个网页的 HTML 源代码给你扒下来。
  • 下载/上传文件: 它可以代替迅雷或浏览器自带的下载器,把网络上的图片、安装包、视频直接下载到你的电脑里,或者把本地文件传到服务器上。
  • 测试 API 接口(后端开发最爱): 程序员在开发网站或 App 时,需要向服务器发送各种各样的请求(比如登录、提交表单、获取商品列表)。curl 可以精准地模拟这些请求,用来测试服务器听不听话。

🔬 curl 的工作原理:它是怎么跑腿的?

我们可以把 curl 的工作流程,想象成你去寄快递/取快递的过程:

[你的电脑 (curl)] -------- 发送请求 (Request) --------> [服务器]
[你的电脑 (curl)] <------- 返回响应 (Response) ------- [服务器]

1. 填好快递单(解析命令)

你在命令行里输入 curl [https://example.com](https://example.com)
curl 看到后,立刻化身“快递员”。它先看一眼目的地(URL),然后通过 DNS(网络电话簿)查到这个网站的服务器具体住在网络世界的哪栋楼、哪个房间(也就是 IP 地址和端口号)。

2. 打包敲门(建立连接)

curl 顺着网线爬到目标服务器门口。如果是 https 开头的网址,它还会跟服务器进行一轮“安全暗号对接”(SSL/TLS 握手),确保一会的接头过程安全,不被中间人偷听。

3. 递交/索要物品(发送 HTTP 请求)

根据你的指令,curl 会向服务器提出请求。

  • 如果你只是想看网页,它会说:“老板,把你们首页的内容给我一份(GET 请求)。”
  • 如果你要登录,它会带着你的账号密码说:“老板,这是我的凭证,帮我办个登录(POST 请求)。”

4. 拿货回家(接收响应)

服务器收到 curl 的请求后,处理一下,然后打包一份“回礼”(HTTP 响应)丢给 curl
这个回礼通常包含两部分:

  • 状态码: 比如 200 OK(顺利拿到)、404 Not Found(你要的东西不存在)。
  • 数据本体: 网页的 HTML 代码、一张图片、或者一段 JSON 格式的数据。

5. 拆箱验货(输出结果)

curl 一路小跑回到你的终端屏幕,把拿到的东西“啪”地一下甩在屏幕上,它的任务就完成了。


👨‍💻 现场演示:三分钟学会常用命令

光说不练假把式,打开你的终端(Mac 的 Terminal 或 Windows 的 PowerShell),我们直接来调教一下这个快递员:

1. 最简单的“看网页”

curl https://www.baidu.com

执行后,屏幕上会刷刷闪过一堆你看不懂的 HTML 代码。别慌,这就是百度首页的“骨架”,浏览器就是靠解析这些代码来显示网页的。

2. 把网页/文件下载到本地

curl -o baidu.html https://www.baidu.com

加上 -o(小写),就相当于告诉快递员:“别把代码直接在屏幕上铺开,帮我存成一个叫 baidu.html 的文件。”

3. 查看服务器的“脸色”(只看响应头)

curl -I https://www.google.com

加上 -I(大写),意味着“我只要回执单,不要货物”。你会看到服务器返回的日期、安全策略以及状态码。

4. 发送一个 POST 请求(模拟表单提交)

curl -d "user=admin&pass=123" https://example.com/login

加上 -d,就是让快递员带着“账号密码”去敲门,通常用于模拟登录或提交数据。


💡 为什么不用浏览器,非要用 curl

看到这里,你可能会问:“既然浏览器也能干这些,我为什么还要苦逼地敲命令行?”

  1. 自动化与脚本: 浏览器需要人去点击,但 curl 是一行命令。你可以写一个脚本,让电脑每天半夜自动用 curl 去某个网站下载报表。
  2. 服务器环境没有浏览器: 很多线上服务器(比如 Linux CentOS/Ubuntu)为了节省资源,是没有 Windows 那种图形界面的,只有黑乎乎的命令行。这时候要在服务器上下载东西或调测网络,curl 就是唯一的救星。
  3. 精准控制: curl 可以让你随意修改请求头(Headers)、伪造浏览器身份(User-Agent)、设置代理,这在开发调试和写爬虫时简直是神器。

🌟 总结

对于小白来说,你只需要记住:curl 就是一个活在命令行里的、没有图形界面的“万能网络传输工具”。它不挑食,支持几乎所有的网络协议,是每一个和网络、服务器打交道的人必学的“底层技能”。


想一想:
你目前是在学习前端、后端,还是单纯对自动化感兴趣呢?你最想用 curl 来帮你自动化完成什么日常操作?欢迎在评论区留言交流!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐