如果你使用过某个命令,(当再次用的时候)却想不起具体名称了。
(这种情况下)可以在终端中使用 ctrl + r 快捷键,反向搜索 shell 历史记录。
如果你在同一个系统上使用过该命令,那么上述方法是可以的。但是,如果你在其他的Linux系统上使用的,或者只是在某个论坛或网站上偶然看到过,该怎么办呢?
好消息是,有一个专用的 Linux 命令,允许你在系统可用的命令中,使用字符串进行搜索。
使用 apropos 搜索 Linux 命令
apropos 命令可以让你使用关键词,在man手册的名称和简介中进行搜索。
大多数情况下,这都会帮助你查找到你想要的命令。
使用apropos命令很简单:
apropos [options] keyword
举一个简单的例子,假如你正在查找一个与 CPU 有关的命令,可以使用 apropos 这样查找:
apropos cpu
它会在 man 手册的名称和简介中查找所有包含 CPU 的命令:
root@learnubuntu:~# apropos cpuchcpu (8) - configure CPUscpuid (4) - x86 CPUID access devicecpuset (7) - confine processes to processor and memory node subsetslscpu (1) - display information about the CPU architecturemsr (4) - x86 CPU MSR access devicesched (7) - overview of CPU schedulingtaskset (1) - set or retrieve a process's CPU affinity
默认情况下,搜索不区分大小写,关键字可以是正则表达式。这就是为什么会看到很多返回结果,如CPU、CPUID等。
如果需要精确匹配,可以使用选项 -e:
root@learnubuntu:~# apropos -e cpulscpu (1) - display information about the CPU architecturemsr (4) - x86 CPU MSR access devicesched (7) - overview of CPU schedulingtaskset (1) - set or retrieve a process's CPU affinity
多个关键字
如果提供了多个关键字,apropos 将会返回所有与给定关键字匹配的结果。比如下面例子,会有307个条目与 network 或 pro 匹配:
root@learnubuntu:~# apropos network pro | wc -l307
如果你搜索的单个命令包含多个词(单词之间有空格),那么可以使用引号来告诉apropos你搜索的是一整个命令而不是多个命令:
root@learnubuntu:~# apropos "network pro"mtr-packet (8) - send and receive network probes
上面的示例要求你将所有关键字放在一起。可以使用 -a 选项,让条目以任何顺序匹配所有关键字。
root@learnubuntu:~# apropos -a network proip-netns (8) - process network namespace managementmtr-packet (8) - send and receive network probes
仅搜索用户或系统命令
你可能发现了 apropos 命令会返回大量的结果,但并非所有的结果都是命令。
这是因为它搜索的是整个man手册。
如果你熟悉 man 手册,你会知道第 1 节包含有用户命令,第 8 节包含系统命令。如下表:
1: 用户命令(User Commands)
2: 系统调用(System Calls)
3: C库函数(C Library Functions)
4: 设备和特殊文件(Devices and Special Files)
5: 文件格式和约定(File Formats and Conventions)
6: 游戏等(Games etc)
7: 杂项(Miscellanea)
8: 系统管理工具和守护程序(System Administration tools and Daemons)
所以,当你搜索CPU时,它显示了所有部分的结果。注意每个“命令”后面的数字:
root@learnubuntu:~# apropos cpuchcpu (8) - configure CPUscpuid (4) - x86 CPUID access devicecpuset (7) - confine processes to processor and memory node subsetslscpu (1) - display information about the CPU architecturemsr (4) - x86 CPU MSR access devicesched (7) - overview of CPU schedulingtaskset (1) - set or retrieve a process's CPU affinity
你可以优化返回结果,(使用 -s 选项)只要指定的部分(sections):
root@learnubuntu:~# apropos -s 1,8 cpuchcpu (8) - configure CPUslscpu (1) - display information about the CPU architecturetaskset (1) - set or retrieve a process's CPU affinity
有很多方式可以在 Linux 命令行中获得帮助,apropos 命令就是其中之一,不过似乎很少人知道这个。
本文作者:Abhishek Prakash,翻译:刘光录
原文地址:
https://linuxhandbook.com/apropos-command/




