暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 apropos 搜索可用的 Linux 命令

TIAP 2022-06-24
344

如果你使用过某个命令,(当再次用的时候)却想不起具体名称了。

(这种情况下)可以在终端中使用 ctrl + r 快捷键,反向搜索 shell 历史记录。

如果你在同一个系统上使用过该命令,那么上述方法是可以的。但是,如果你在其他的Linux系统上使用的,或者只是在某个论坛或网站上偶然看到过,该怎么办呢?

好消息是,有一个专用的 Linux 命令,允许你在系统可用的命令中,使用字符串进行搜索。


使用 apropos 搜索 Linux 命令

apropos 命令可以让你使用关键词,在man手册的名称和简介中进行搜索。

大多数情况下,这都会帮助你查找到你想要的命令。

使用apropos命令很简单:

    apropos [options] keyword

    举一个简单的例子,假如你正在查找一个与 CPU 有关的命令,可以使用 apropos 这样查找:

      apropos cpu

      它会在 man 手册的名称和简介中查找所有包含 CPU 的命令:

        root@learnubuntu:~# 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

          root@learnubuntu:~# 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 将会返回所有与给定关键字匹配的结果。比如下面例子,会有307个条目与 network 或 pro 匹配:

            root@learnubuntu:~# apropos network pro | wc -l
            307

            如果你搜索的单个命令包含多个词(单词之间有空格),那么可以使用引号来告诉apropos你搜索的是一整个命令而不是多个命令:

              root@learnubuntu:~# apropos "network pro"
              mtr-packet (8) - send and receive network probes

              上面的示例要求你将所有关键字放在一起。可以使用 -a 选项,让条目以任何顺序匹配所有关键字。

                root@learnubuntu:~# apropos -a network pro
                ip-netns (8) - process network namespace management
                mtr-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 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

                  你可以优化返回结果,(使用 -s 选项)只要指定的部分(sections):

                    root@learnubuntu:~# 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 命令就是其中之一,不过似乎很少人知道这个。



                    本文作者:Abhishek Prakash,翻译:刘光录

                    原文地址:

                    https://linuxhandbook.com/apropos-command/


                    文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论