获取 Linux 命令帮助

LinuxBeginner
立即练习

简介

经验丰富的 Linux 用户不会记住每个命令及其所有选项。他们知道如何询问系统某个名称代表什么、查找简短的用法摘要、打开完整文档,以及按主题搜索手册。

本实验紧接着基础文件操作展开。你将调查 cdlscp 等熟悉命令,然后把简短的验证结果保存到 /home/labex/project/command-help 下的文件中。完成实验后,面对陌生语法时,你会知道该查阅文档,而不是被它卡住。

识别命令名称的含义

在本步骤中,你将区分 Shell 内置命令、别名和可执行文件,然后选择合适的帮助来源。

进入实验工作目录:

cd /home/labex/project/command-help

有些命令直接内置在 Shell 中,因为它们必须修改 Shell 自身的状态。询问 Shell cd 是什么:

type cd

你应该会看到包含以下内容的输出:

cd is a shell builtin

其他名称可能是别名,也就是由 Shell 配置的简写;或者是以文件形式存储的外部程序。查看 ls

type ls

根据 Shell 的配置,输出可能会显示一个别名或可执行文件路径。使用 type -a 可以显示 Shell 能找到的所有匹配形式:

type -a ls

command -V 也能提供易读的说明:

command -V cp

command -v 会打印 Shell 实际会选择的命令或路径:

command -v cp

保存一份简短的分类报告。第一个 > 会创建或替换报告;之后的每个 >> 都会追加另一个命令的输出,而不会删除前面的内容:

type cd > command-types.txt
type ls >> command-types.txt
command -V cp >> command-types.txt
cat command-types.txt

报告应将 cd 识别为内置命令,并说明 lscp 的类型。了解命令的类型很有帮助,因为 Shell 内置命令通常使用 help,而外部程序通常支持 --help 和手册页。

阅读快速帮助和用法语法

在本步骤中,你将使用内置命令帮助和 --help,然后学习如何阅读用法说明中的常见表示法。

由于 cd 是 Shell 内置命令,因此可以使用 help 让 Bash 显示其文档:

help cd

第一行会显示类似 cd [-L|[-P ...]] [dir] 的用法模式。你暂时不必理解每个选项,先关注整体结构:命令名称位于最前面,方括号中的内容表示可选项。

外部程序通常支持 --helpls 的完整帮助内容较长,因此这里会首次有意识地使用管道。管道用 | 表示。左侧命令输出普通内容,右侧命令接收这些输出作为输入。在这里,head -n 8 只保留前 8 行:

ls --help | head -n 8

第一行通常采用以下形式:

Usage: ls [OPTION]... [FILE]...

[OPTION]... 表示可以有 0 个或多个选项。[FILE]... 表示可以有 0 个或多个文件或目录参数。方括号只是用于描述语法,输入命令时不要原样键入它们。

查看复制命令的快速帮助:

cp --help | head -n 8

为两个命令分别添加章节标题,并保存它们的前几行。> 用于创建新文件,而 >> 会追加后续内容:

echo "=== ls ===" > quick-help.txt
ls --help | head -n 3 >> quick-help.txt
echo "=== cp ===" >> quick-help.txt
cp --help | head -n 3 >> quick-help.txt
cat quick-help.txt

这个小文件不能替代完整的帮助文本;它的作用是证明你能够找到并识别命令的用法说明。

浏览手册页

在本步骤中,你将使用交互式的 man 查看器,并了解手册章节的含义。

打开 ls 的手册页:

man ls

手册会在分页查看器中打开,通常是 less。在查看器中练习使用以下按键:

  • 向下箭头:向下移动一行;
  • 空格:向前翻一屏;
  • b:向后翻一屏;
  • 输入 /sort 并按 Enter:向前搜索 sort
  • n:跳转到下一个匹配项;
  • q:退出并返回 Shell 提示符。

标题通常会显示为 LS(1)。其中的数字表示手册章节。第 1 章包含普通用户命令;其他章节涵盖系统调用、库函数、配置格式和系统管理命令。

使用 man -f 查看单行说明,这也称为「whatis」查询:

man -f ls

保存同一手册页的非交互式摘录。请从左到右理解这条管道:-P catman 直接输出,而不是打开分页查看器;col -b 删除终端格式控制字符;head -n 20 保留 20 行;> 将最终输出流保存到文件:

man -P cat ls | col -b | head -n 20 > ls-man-excerpt.txt
cat ls-man-excerpt.txt

你应该会看到手册标题、名称、概要以及说明部分的开头。这表明交互式和非交互式查看方式使用的是同一份文档。

按主题查找命令

在本步骤中,当你知道要完成的任务但不知道对应的命令名称时,将使用 apropos 进行查找。

apropos 会搜索手册数据库中保存的简短说明。搜索与密码相关的文档:

apropos password | head -n 15

每条结果都包含手册名称、括号中的章节编号以及简短说明。其中一条结果应当会介绍 passwd

搜索与文件相关的主题:

apropos file | head -n 20

宽泛的关键词会返回很多结果。使用更具体的短语可能更有效:

apropos "copy files"

你还可以进一步筛选宽泛的搜索结果。-i 选项让 grep 忽略字母大小写,-m 5 则在找到 5 行匹配内容后停止:

apropos file | grep -i -m 5 'copy'

保存完整的密码搜索结果,以便稍后查看:

apropos password > password-topics.txt
grep -E '^passwd|change.*password' password-topics.txt | head

如果 apropos 在新安装的系统上找不到任何结果,可能需要运行 sudo mandb 更新手册数据库。本实验已经自动准备好了数据库,但记住两者之间的关系,有助于你在其他环境中排查问题。

总结

你学习了一套可重复使用的帮助策略:使用 typecommand -V 识别名称,使用 help--help 查看快速语法,使用 man 阅读完整文档;当你知道主题但不知道命令名称时,则使用 apropos。这些工具让你不必记住每个选项,也为你在课程后续内容中调查陌生命令做好准备。