前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
  • HTTP

  • 浏览器相关

  • 计算机基础

    • Linux
    • Network
    • OS
    • SQL
    • MySQL
    • Redis
    • Socket
    • 攻击技术
    • 缓存
    • 集群

来源于: https://github.com/CyC2018/CS-Notes

为了便于理解,本文从常用操作和概念开始讲起。虽然已经尽量做到简化,但是涉及到的内容还是有点多。在面试中,Linux 知识点相对于网络和操作系统等知识点而言不是那么重要,只需要重点掌握一些原理和命令即可。为了方便大家准备面试,在此先将一些比较重要的知识点列出来:

  • 能简单使用 cat,grep,cut 等命令进行一些操作;
  • 文件系统相关的原理,inode 和 block 等概念,数据恢复;
  • 硬链接与软链接;
  • 进程管理相关,僵尸进程与孤儿进程,SIGCHLD 。

# 一、常用操作以及概念

# 快捷键

30 秒速记

  • Tab:命令 / 路径补全,按两下列出候选,由 shell 处理
  • Ctrl+C:给前台进程发 SIGINT,程序可以捕获或忽略
  • Ctrl+D:不是信号,空行时让读取方拿到 EOF,意思是「输入结束」
  • --help:只是传给程序的普通参数,有没有、长什么样由程序自己决定
  • 易错:拿 Ctrl+D 去结束 sleep 没用,它只对正在读输入的程序有效

Tab 补全、Ctrl+C 中断、Ctrl+D 结束输入,这三个看着都是快捷键,其实归不同的层管。 Tab 是 shell 的补全功能;Ctrl+C 是终端驱动给前台进程组发 SIGINT 信号,程序没处理的话就退出;Ctrl+D 根本不是信号,它告诉正在读键盘的程序「没有更多输入了」,比如在 cat 或 node 交互环境里按一下就退出了。--help 又是另一回事,就是个普通命令行参数。分清这几层,碰到「按了没反应」才知道该往哪查。

  • Tab:命令和文件名补全;
  • Ctrl+C:中断正在运行的程序;
  • Ctrl+D:结束键盘输入(End Of File,EOF)

# 求助

# 1. --help

指令的基本用法与选项介绍。

原理拆解: 这些操作分属不同层次:Tab 通常由当前 shell 的补全系统解释,根据命令名、路径或上下文生成候选项;Ctrl+C 会让终端驱动向前台进程组发送 SIGINT,程序可以终止、捕获或忽略它;Ctrl+D 本身不是信号,而是在规范输入模式下表示当前输入结束,空行时通常让读取操作得到 EOF。--help 则只是传给目标程序的普通命令行参数,是否支持以及输出格式由程序决定。

最小验证: 输入以下命令,分别验证帮助参数、输入结束和中断行为;运行 cat 后直接按 Ctrl+D,运行 sleep 后按 Ctrl+C。

printf '%s\n' '1. 查看命令帮助'
ls --help

printf '%s\n' '2. 启动标准输入读取,按 Ctrl+D 结束'
cat
printf '%s\n' 'cat 已收到 EOF'

printf '%s\n' '3. 启动等待,按 Ctrl+C 中断'
sleep 30
printf 'sleep 的退出状态:%s\n' "$?"
@前端进阶之旅: 代码已经复制到剪贴板

cat 后的提示出现,说明读取因 EOF 返回;sleep 被中断时,常见 shell 会显示非零退出状态,例如 130,但具体显示形式取决于 shell。ls --help 应输出用法和选项,而不是控制终端状态。

边界与排查: 补全规则会因 bash、zsh 及其插件而变化,候选项不一定仅是文件名。程序捕获 SIGINT 后可能继续运行,因此按一次 Ctrl+C 不保证退出。若终端设置、远程会话或按键映射被修改,可用 stty -a 检查 intr 和 eof 对应字符。部分命令不实现 --help,此时应改查 man 页面或命令自身文档。

面试官追问

追问 1前台跑着 sleep 30,按 Ctrl+D 能结束吗?
参考回答

不能,sleep 根本不读标准输入,EOF 对它没意义。要用 Ctrl+C,退出码一般是 130(128 + SIGINT 的 2)。

追问 2按了 Ctrl+C,程序还在继续输出,键盘坏了吗?
参考回答

大概率是程序自己捕获了 SIGINT,比如 Node 里写了 process.on('SIGINT', () => {}),信号到了但被吞了。可以再试 Ctrl+\(SIGQUIT),或者另开终端 kill -9 <pid>。

追问 3node 交互环境里,Ctrl+C 和 Ctrl+D 退出有什么区别?
参考回答

Ctrl+D 是输入结束,REPL 正常退出;Ctrl+C 第一次只会打断当前输入,提示再按一次才退出。这就是信号和 EOF 被程序区别对待的直观例子。

追问 4某个命令 --help 报未知选项,怎么查用法?
参考回答

试 -h、man 命令名,或者看官方文档。另外用 which 命令名 确认跑的是哪个二进制,macOS 自带的 BSD 版工具很多就不认 --help。

追问 5写 Node 服务时,为什么要处理 SIGINT 和 SIGTERM?
参考回答

做优雅退出:收到信号先停止接新请求、等进行中的请求处理完、关掉数据库连接再 process.exit()。Docker 停容器发的是 SIGTERM,不处理就会等超时被 SIGKILL 硬杀。

# 2. man

30 秒速记

  • man = manual,查命令、配置文件格式、系统调用的完整手册
  • DATE(1) 里的数字是章节号,不是版本号
  • 常用章节:1 用户命令、5 配置文件格式、8 管理员命令(另有 2 系统调用、3 库函数)
  • 同名条目靠章节区分:man passwd 是改密码命令,man 5 passwd 才是 /etc/passwd 的格式
  • 页内 /关键词 搜索、n 下一个、q 退出;man -k 关键词 按主题搜

man 就是命令行里的说明书,按章节组织,括号里的数字告诉你查到的是哪一类东西。 比如 man date 顶上显示 DATE(1),1 表示这是用户命令;第 5 章是配置文件格式,第 8 章是给管理员用的命令。同一个名字可能在好几章都有,最典型的是 passwd,直接 man passwd 打开的是改密码的命令,想看 /etc/passwd 文件格式就得写 man 5 passwd。精简的 Docker 镜像里经常连 man 都没装,这时候查官方文档更快。

man 是 manual 的缩写,将指令的具体信息显示出来。

当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下:

代号 类型
1 用户在 shell 环境中可以操作的指令或者可执行文件
5 配置文件
8 系统管理员可以使用的管理指令

原理拆解: man 查询的是按章节组织的手册数据库,而不是简单按文件名搜索。输入 man date 时,系统按既定章节顺序寻找名为 date 的条目,页面顶部的 DATE(1) 表示命中了第 1 章。章节号解决了同名歧义:一个名称既可能是普通命令,也可能对应配置文件格式或其他系统接口。第 1 章主要收录用户命令,第 5 章收录文件格式和配置文件,第 8 章主要收录系统管理命令。

最小验证: 输入以下命令,验证默认查询、指定章节以及按关键词搜索;这些命令只读取本机已经安装的手册数据库。

man date
man 1 date
man 5 passwd
man 8 shutdown
man -f passwd
man -k password
@前端进阶之旅: 代码已经复制到剪贴板

man 1 date 明确限定第 1 章,其结果通常与默认的 man date 一致;man 5 passwd 查询的是 /etc/passwd 文件格式,而不是修改密码的命令。man -f passwd 列出名称完全匹配的条目及章节,man -k password 按名称和简介中的关键词搜索,输出取决于本机安装内容。

边界与排查: 手册章节和页面是否存在取决于操作系统、软件包及语言包,某些机器可能没有 shutdown(8),精简容器甚至没有安装 man。出现 No manual entry 时,可先执行 man -f 或 man -k 检查条目,再确认相应文档包是否存在。指定章节时应写成 man 5 passwd,这样能避免默认搜索顺序命中同名但含义不同的页面;阅读时还可使用 /关键词 搜索,按 n 跳到下一个匹配,按 q 退出。

面试官追问

追问 1DATE(1) 里的 1 是版本号吗?
参考回答

不是,是手册章节号,1 表示用户命令。同理 printf(3) 是 C 库函数,printf(1) 是 shell 命令,名字一样东西不同。

追问 2想看 /etc/passwd 的字段含义,man passwd 打开的却是改密码命令,怎么办?
参考回答

写 man 5 passwd 指定第 5 章。不记得在哪章就先 man -f passwd,它会列出所有同名条目和章节。

追问 3只记得功能不记得命令名,比如想找跟压缩有关的命令?
参考回答

用 man -k compress(等价于 apropos compress),按名称和简介做关键词搜索。返回空的话可能是手册索引没建,跑一下 mandb。

追问 4容器里 man ls 提示 No manual entry,是命令不存在吗?
参考回答

不是,多半是精简镜像为了体积把文档删了,比如 Debian 的 slim 镜像默认就不装手册。命令照样能用,查文档用 ls --help 或者在宿主机上看。

追问 5手册太长,怎么快速找到某个参数的说明?
参考回答

在阅读界面输入 /-r 回车搜索,n 跳下一个,N 跳上一个,看完 q 退出。这套键位和 less 一样,因为 man 默认就是用 less 显示的。

#

基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
  • HTTP

  • 浏览器相关

  • 计算机基础

    • Linux
      • 一、常用操作以及概念
        • 快捷键
        • 求助
        • 1. --help
        • 2. man
        • 3. info
        • 4. doc
        • 关机
        • 1. who
        • 2. sync
        • 3. shutdown
        • PATH
        • sudo
        • 包管理工具
        • 发行版
        • VIM 三个模式
        • GNU
        • 开源协议
      • 二、磁盘
      • 三、分区
      • 四、文件系统
      • 五、文件
      • 六、压缩与打包
      • 八、管道指令
      • 九、正则表达式
      • 十、进程管理
    • Network
    • OS
    • SQL
    • MySQL
    • Redis
    • Socket
    • 攻击技术
    • 缓存
    • 集群
完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

Linux|计算机基础篇

来源于: https://github.com/CyC2018/CS-Notes

为了便于理解,本文从常用操作和概念开始讲起。虽然已经尽量做到简化,但是涉及到的内容还是有点多。在面试中,Linux 知识点相对于网络和操作系统等知识点而言不是那么重要,只需要重点掌握一些原理和命令即可。为了方便大家准备面试,在此先将一些比较重要的知识点列出来:

  • 能简单使用 cat,grep,cut 等命令进行一些操作;
  • 文件系统相关的原理,inode 和 block 等概念,数据恢复;
  • 硬链接与软链接;
  • 进程管理相关,僵尸进程与孤儿进程,SIGCHLD 。

# 一、常用操作以及概念

# 快捷键

30 秒速记

  • Tab:命令 / 路径补全,按两下列出候选,由 shell 处理
  • Ctrl+C:给前台进程发 SIGINT,程序可以捕获或忽略
  • Ctrl+D:不是信号,空行时让读取方拿到 EOF,意思是「输入结束」
  • --help:只是传给程序的普通参数,有没有、长什么样由程序自己决定
  • 易错:拿 Ctrl+D 去结束 sleep 没用,它只对正在读输入的程序有效

Tab 补全、Ctrl+C 中断、Ctrl+D 结束输入,这三个看着都是快捷键,其实归不同的层管。 Tab 是 shell 的补全功能;Ctrl+C 是终端驱动给前台进程组发 SIGINT 信号,程序没处理的话就退出;Ctrl+D 根本不是信号,它告诉正在读键盘的程序「没有更多输入了」,比如在 cat 或 node 交互环境里按一下就退出了。--help 又是另一回事,就是个普通命令行参数。分清这几层,碰到「按了没反应」才知道该往哪查。

  • Tab:命令和文件名补全;
  • Ctrl+C:中断正在运行的程序;
  • Ctrl+D:结束键盘输入(End Of File,EOF)

# 求助

# 1. --help

指令的基本用法与选项介绍。

原理拆解: 这些操作分属不同层次:Tab 通常由当前 shell 的补全系统解释,根据命令名、路径或上下文生成候选项;Ctrl+C 会让终端驱动向前台进程组发送 SIGINT,程序可以终止、捕获或忽略它;Ctrl+D 本身不是信号,而是在规范输入模式下表示当前输入结束,空行时通常让读取操作得到 EOF。--help 则只是传给目标程序的普通命令行参数,是否支持以及输出格式由程序决定。

最小验证: 输入以下命令,分别验证帮助参数、输入结束和中断行为;运行 cat 后直接按 Ctrl+D,运行 sleep 后按 Ctrl+C。

printf '%s\n' '1. 查看命令帮助'
ls --help

printf '%s\n' '2. 启动标准输入读取,按 Ctrl+D 结束'
cat
printf '%s\n' 'cat 已收到 EOF'

printf '%s\n' '3. 启动等待,按 Ctrl+C 中断'
sleep 30
printf 'sleep 的退出状态:%s\n' "$?"
@前端进阶之旅: 代码已经复制到剪贴板

cat 后的提示出现,说明读取因 EOF 返回;sleep 被中断时,常见 shell 会显示非零退出状态,例如 130,但具体显示形式取决于 shell。ls --help 应输出用法和选项,而不是控制终端状态。

边界与排查: 补全规则会因 bash、zsh 及其插件而变化,候选项不一定仅是文件名。程序捕获 SIGINT 后可能继续运行,因此按一次 Ctrl+C 不保证退出。若终端设置、远程会话或按键映射被修改,可用 stty -a 检查 intr 和 eof 对应字符。部分命令不实现 --help,此时应改查 man 页面或命令自身文档。

面试官追问

追问 1前台跑着 sleep 30,按 Ctrl+D 能结束吗?
参考回答

不能,sleep 根本不读标准输入,EOF 对它没意义。要用 Ctrl+C,退出码一般是 130(128 + SIGINT 的 2)。

追问 2按了 Ctrl+C,程序还在继续输出,键盘坏了吗?
参考回答

大概率是程序自己捕获了 SIGINT,比如 Node 里写了 process.on('SIGINT', () => {}),信号到了但被吞了。可以再试 Ctrl+\(SIGQUIT),或者另开终端 kill -9 <pid>。

追问 3node 交互环境里,Ctrl+C 和 Ctrl+D 退出有什么区别?
参考回答

Ctrl+D 是输入结束,REPL 正常退出;Ctrl+C 第一次只会打断当前输入,提示再按一次才退出。这就是信号和 EOF 被程序区别对待的直观例子。

追问 4某个命令 --help 报未知选项,怎么查用法?
参考回答

试 -h、man 命令名,或者看官方文档。另外用 which 命令名 确认跑的是哪个二进制,macOS 自带的 BSD 版工具很多就不认 --help。

追问 5写 Node 服务时,为什么要处理 SIGINT 和 SIGTERM?
参考回答

做优雅退出:收到信号先停止接新请求、等进行中的请求处理完、关掉数据库连接再 process.exit()。Docker 停容器发的是 SIGTERM,不处理就会等超时被 SIGKILL 硬杀。

# 2. man

30 秒速记

  • man = manual,查命令、配置文件格式、系统调用的完整手册
  • DATE(1) 里的数字是章节号,不是版本号
  • 常用章节:1 用户命令、5 配置文件格式、8 管理员命令(另有 2 系统调用、3 库函数)
  • 同名条目靠章节区分:man passwd 是改密码命令,man 5 passwd 才是 /etc/passwd 的格式
  • 页内 /关键词 搜索、n 下一个、q 退出;man -k 关键词 按主题搜

man 就是命令行里的说明书,按章节组织,括号里的数字告诉你查到的是哪一类东西。 比如 man date 顶上显示 DATE(1),1 表示这是用户命令;第 5 章是配置文件格式,第 8 章是给管理员用的命令。同一个名字可能在好几章都有,最典型的是 passwd,直接 man passwd 打开的是改密码的命令,想看 /etc/passwd 文件格式就得写 man 5 passwd。精简的 Docker 镜像里经常连 man 都没装,这时候查官方文档更快。

man 是 manual 的缩写,将指令的具体信息显示出来。

当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下:

代号 类型
1 用户在 shell 环境中可以操作的指令或者可执行文件
5 配置文件
8 系统管理员可以使用的管理指令

原理拆解: man 查询的是按章节组织的手册数据库,而不是简单按文件名搜索。输入 man date 时,系统按既定章节顺序寻找名为 date 的条目,页面顶部的 DATE(1) 表示命中了第 1 章。章节号解决了同名歧义:一个名称既可能是普通命令,也可能对应配置文件格式或其他系统接口。第 1 章主要收录用户命令,第 5 章收录文件格式和配置文件,第 8 章主要收录系统管理命令。

最小验证: 输入以下命令,验证默认查询、指定章节以及按关键词搜索;这些命令只读取本机已经安装的手册数据库。

man date
man 1 date
man 5 passwd
man 8 shutdown
man -f passwd
man -k password
@前端进阶之旅: 代码已经复制到剪贴板

man 1 date 明确限定第 1 章,其结果通常与默认的 man date 一致;man 5 passwd 查询的是 /etc/passwd 文件格式,而不是修改密码的命令。man -f passwd 列出名称完全匹配的条目及章节,man -k password 按名称和简介中的关键词搜索,输出取决于本机安装内容。

边界与排查: 手册章节和页面是否存在取决于操作系统、软件包及语言包,某些机器可能没有 shutdown(8),精简容器甚至没有安装 man。出现 No manual entry 时,可先执行 man -f 或 man -k 检查条目,再确认相应文档包是否存在。指定章节时应写成 man 5 passwd,这样能避免默认搜索顺序命中同名但含义不同的页面;阅读时还可使用 /关键词 搜索,按 n 跳到下一个匹配,按 q 退出。

面试官追问

追问 1DATE(1) 里的 1 是版本号吗?
参考回答

不是,是手册章节号,1 表示用户命令。同理 printf(3) 是 C 库函数,printf(1) 是 shell 命令,名字一样东西不同。

追问 2想看 /etc/passwd 的字段含义,man passwd 打开的却是改密码命令,怎么办?
参考回答

写 man 5 passwd 指定第 5 章。不记得在哪章就先 man -f passwd,它会列出所有同名条目和章节。

追问 3只记得功能不记得命令名,比如想找跟压缩有关的命令?
参考回答

用 man -k compress(等价于 apropos compress),按名称和简介做关键词搜索。返回空的话可能是手册索引没建,跑一下 mandb。

追问 4容器里 man ls 提示 No manual entry,是命令不存在吗?
参考回答

不是,多半是精简镜像为了体积把文档删了,比如 Debian 的 slim 镜像默认就不装手册。命令照样能用,查文档用 ls --help 或者在宿主机上看。

追问 5手册太长,怎么快速找到某个参数的说明?
参考回答

在阅读界面输入 /-r 回车搜索,n 跳下一个,N 跳上一个,看完 q 退出。这套键位和 less 一样,因为 man 默认就是用 less 显示的。

# 3. info

30 秒速记

  • info 和 man 一样是查文档的,主要是 GNU 项目在用
  • man 是一整页长文;info 拆成多个节点,节点之间能像网页一样跳转
  • 常用键:空格翻页、n / p 下一节 / 上一节、u 回上级、Tab 跳到链接、q 退出
  • GNU 工具(coreutils、bash、gcc)的 info 往往比 man 详细,man 页末尾常写「完整文档见 info」
  • 实际日常查参数还是 man 和 --help 用得多

info 也是看文档的工具,区别在于它把文档切成一个个带链接的节点,可以跳来跳去,有点像终端里的小型网页。 man 是一整页从头翻到尾,适合查某个参数;info 适合系统地读一套文档,比如 info coreutils 能按章节浏览所有基础命令。GNU 的很多工具把详细说明放在 info 里,man 只给精简版。不过说实话,日常排查我还是 --help 和 man 用得最多,info 那套键位不常用的话容易忘。

info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以跳转。

info 是 GNU 项目的文档系统,文档用 Texinfo 格式编写,一份源文件既能生成终端里看的 info 文档,也能生成 HTML 和 PDF。和 man 最大的区别在结构:man 每个条目是一整页,info 把一份手册拆成很多节点,节点之间用菜单和交叉引用连起来。

几个常用操作:

info coreutils        # 打开 GNU 基础命令手册的目录
info coreutils ls     # 直接跳到 ls 那一节
# 进入后:
# 空格 / Backspace  向下 / 向上翻页
# n / p             下一个 / 上一个节点
# u                 回到上级节点
# Tab + 回车         跳到光标附近的链接
# q                 退出
@前端进阶之旅: 代码已经复制到剪贴板

什么时候用哪个,可以这样记:只想查某个参数,命令 --help 最快;要看完整选项说明,用 man;想系统地读 GNU 工具的完整文档,比如 sed、awk、bash 的所有细节,用 info。很多 GNU 工具的 man 页末尾都会写一句完整文档在 info 里,就是这个原因。

← HTTPS:让数据传输更安全Network →

fe