美文网首页软件测试技能栈我用 LinuxLinux学习之路
情景linux--不借助网络如何找到你需要的命令

情景linux--不借助网络如何找到你需要的命令

作者: 软件测试技能栈 | 来源:发表于2017-05-20 23:53 被阅读40次

    情景

    互联网的高速发展给我们的工作和生活都带来了极大的便利。比如,工作中,当你在linux系统上,遇到一个难题,不知道用什么命令时,借助网络就可以轻松解决。

    这是每个IT人都具备的能力了(搜索也是有方法论的,此处不做讨论)。

    如果没有网络,该怎么办?或许,你还可以翻阅工具书,请教别人,等等。

    但是,如果你只能借助你登录的系统本身,又该怎么办?

    再或者,即便有网络,怎样更快地找到你想要的命令呢?

    方案

    linux有两个命令,支持通过关键字来搜索命令。

    1. man -k
    2. apropos
    $ man man
    
    ...(省略)...
    -k     Equivalent to apropos.
    ...(省略)...
    

    由此可见,man -k是完全等价于apropos的。

    $ man apropos
    
    NAME
           apropos - search the whatis database for strings
    SYNOPSIS
           apropos keyword ...
    DESCRIPTION
           apropos searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output.
    ...(省略)...
    

    由man手册可知,apropos命令将在whatis database中查询keyword,并把结果出来。

    所以,在不借助网络的情况下,使用apropos可以缩小你锁定的范围,甚至直接帮助你确定命令。

    实例

    以曾经写过的两篇文章为例:

    情景linux—如何获取一个UUID?

    既然想要获取UUID,那我们不妨以UUID来搜索一下:

    $ apropos UUID
    
    abrt-action-analyze-oops (1)  - Calculate and save UUID and duplicate hash for an oops dump directory DIR
    dbus-uuidgen         (1)  - Utility to generate UUIDs
    findfs               (8)  - Find a filesystem by label or UUID
    uuidgen              (1)  - command-line utility to create a new UUID value
    

    你看,文章中提到的uuidgendbus-uuidgen命令就在结果中呢。

    BTW:一般情况下,apropos的结果中只看第二列为(1)的命令即可。

    情景linux——获取一个进程的运行目录

    由文章可知,相关的关键字有“进程”、“运行目录”等,所以不妨使用process、working等关键字尝试。

    $ apropos process | fgrep "(1)"
    
    ...(省略)...
    procmail             (1)  - autonomous mail processor
    ps                   (1)  - report a snapshot of the current processes
    pstree               (1)  - display a tree of processes
    pwdx                 (1)  - report current working directory of a process
    refer                (1)  - preprocess bibliographic references for groff
    renice               (1)  - alter priority of running processes
    skill                (1)  - send a signal or report process status
    ...(省略)...
    

    pwdx命中!根据pwdx的简介可知,apropos working也可以定位到它。

    总结

    其实,apropos的使用包含但不局限于上面的使用场景。

    在我看来,apropos好处多多,简直就是单机版命令搜索引擎

    1. 在孤立无援(不能借助网络、请教别人、翻阅工具书的情况)时,它能给你指明方向,缩小范围。
    2. 即使有网络,当你遇到问题时,顺手就可以使用下它,有益无害。
    3. 给它一个关键字,它给你返回包含这个关键字的相关命令。比起漫无目的地学习命令,有针对性地学习命令效果会更好。
    4. 使你更加关注命令的英文描述,不仅可以帮助你精准地知道命令的含义,还无形地帮助你提高英文。
    5. 忘记了怎么拼写的命令,不妨用它来帮你锁定下范围。
    6. 以极小的成本让你增长见识。

    实不相瞒,我在知道了这个命令后,经常有意无意地使用它,在有意无意中解决了许多实际问题,也在有意无意中掌握了很多极为实用的命令。

    一点经验:

    1. 返回结果过多时,可以调整关键字,也可以借助grep和正则表达式进一步过滤。
    2. 锁定命令的范围后,结合man命令,效果更佳。

    相关文章

      网友评论

        本文标题:情景linux--不借助网络如何找到你需要的命令

        本文链接:https://www.haomeiwen.com/subject/ygcmxxtx.html