使用 apropos 搜索可用的 Linux 命令

所以你使用了某个命令但不记得它的确切名称了?

您可以在终端中使用 ctrl+r 键盘快捷键并反向搜索 shell 历史记录。

如果您在同一系统上使用该命令,这可能会起作用。 但是,如果您在其他 Linux 系统上使用过它,或者只是在某个论坛或网站上遇到过它怎么办?

这里的好处是有一个专用的 Linux 命令,可让您在系统上的可用命令中使用字符串进行搜索。

用 apropos 搜索 Linux 命令

apropos 命令可以让你 在手册页名称和描述中搜索关键字。

在许多情况下,这应该足以帮助您找到您正在寻找的命令。

使用 apropos 命令很简单:

apropos [options] keyword

这是一个 example. 假设您正在寻找与 CPU 相关的命令。 您使用 apropos 命令与 CPU 关键词:

apropos cpu

它为您提供了名称中或手册页简短描述中包含 CPU 的所有命令。

[email protected]:~# apropos cpu
chcpu (8)            - configure CPUs
cpuid (4)            - x86 CPUID access device
cpuset (7)           - confine processes to processor and memory node subsets
lscpu (1)            - display information about the CPU architecture
msr (4)              - x86 CPU MSR access device
sched (7)            - overview of CPU scheduling
taskset (1)          - set or retrieve a process's CPU affinity

默认情况下,搜索不区分大小写,关键字可以是正则表达式。 这就是为什么您会看到很多匹配项,例如 CPU、CPUID 等。

如果您想要完全匹配,您可以使用该选项 -e

[email protected]:~# apropos -e cpu
lscpu (1)            - display information about the CPU architecture
msr (4)              - x86 CPU MSR access device
sched (7)            - overview of CPU scheduling
taskset (1)          - set or retrieve a process's CPU affinity

多个关键字

如果您提供多个关键字,apropos 将返回与至少一个给定关键字匹配的所有条目。

正如您在下面看到的 example,有 307 个条目匹配 network 或 pro。

[email protected]:~# apropos network pro | wc -l
307

如果您的搜索词包含多个单词,您可以在它们周围使用引号来搜索带有空格的整个关键字。

[email protected]:~# apropos "network pro"
mtr-packet (8)       - send and receive network probes

以上 example 要求您将所有关键字放在一起。 您可以使用 -a 选项并具有以任何顺序匹配所有关键字的条目。

[email protected]:~# apropos -a network pro
ip-netns (8)         - process network namespace management
mtr-packet (8)       - send and receive network probes

仅搜索用户或系统命令

您经常会发现 apropos 命令返回一个巨大的输出,并且并非所有这些都是命令。

这是因为它在整个手册页的所有部分中进行搜索。

如果您熟悉手册页,您就会知道第 1 节有用户命令,第 8 节有系统命令。 这是一个快速回忆:

部分描述
1用户命令
2系统调用
3C 库函数
4设备和特殊文件
5文件格式和约定
6游戏等
7杂项
8系统管理工具和守护进程

因此,当您搜索 CPU 时,它会显示所有部分的结果。 注意每个“命令”后面的数字。

[email protected]:~# apropos cpu
chcpu (8)            - configure CPUs
cpuid (4)            - x86 CPUID access device
cpuset (7)           - confine processes to processor and memory node subsets
lscpu (1)            - display information about the CPU architecture
msr (4)              - x86 CPU MSR access device
sched (7)            - overview of CPU scheduling
taskset (1)          - set or retrieve a process's CPU affinity

您只能从特定部分细化搜索和列表条目:

[email protected]:~# apropos -s 1,8 cpu
chcpu (8)            - configure CPUs
lscpu (1)            - display information about the CPU architecture
taskset (1)          - set or retrieve a process's CPU affinity

有一些方法可以在 Linux 命令行中获得帮助。 apropos 命令就是其中之一,令人惊讶的是没有多少人知道它。

我希望你从这篇文章中学到了一些新东西。 请继续关注更多。