互联网的高速发展给我们的工作和生活都带来了极大的便利。比如,工作中,当你在 linux 系统上,遇到一个难题,不知道用什么命令时,借助网络就可以轻松解决。
这是每个 IT 人都具备的能力了(搜索也是有方法论的,此处不做讨论)。
如果没有网络,该怎么办?或许,你还可以翻阅工具书,请教别人,等等。
但是,如果你只能借助你登录的系统本身,又该怎么办?
再或者,即便有网络,怎样更快地找到你想要的命令呢?
linux 有两个命令,支持通过关键字来搜索命令。
man -k
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 可以缩小你锁定的范围,甚至直接帮助你确定命令。‘
以曾经写过的两篇文章为例:
既然想要获取 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
你看,文章中提到的uuidgen
、dbus-uuidgen
命令就在结果中呢。
BTW:一般情况下,apropos 的结果中只看第二列为 (1) 的命令即可。
由文章可知,相关的关键字有 “进程”、“运行目录” 等,所以不妨使用 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 好处多多,简直就是单机版命令搜索引擎:
实不相瞒,我在知道了这个命令后,经常有意无意地使用它,在有意无意中解决了许多实际问题,也在有意无意中掌握了很多极为实用的命令。
一点经验: