是否有用于汇总所有命令的功能的工具?


8

因此,我了解到有一些man页面可以在互联网不可用或需要高级使用时获取文档,但是如果我离线并且不知道需要什么工具怎么办?有没有可以让我看到每个程序/命令和简短说明的命令?

Answers:


4

您可以使用内置的bash(1) compgen

  • compgen -c 将列出您可以运行的所有命令。
  • compgen -a 将列出您可以运行的所有别名。
  • compgen -b 将列出您可以运行的所有内置插件。
  • compgen -k 将列出您可以运行的所有关键字。
  • compgen -A function 将列出您可以运行的所有功能。
  • compgen -A function -abck 一口气列出以上所有内容。

上面的命令根据用户的权限集列出了用户可用的所有命令。我禁用了网络并测试了上述命令,即使禁用,它也可以工作。但是,就简短描述而言,据我所知,一旦获得命令,就可以查看手册页。

可用于查看有关命令说明的其他一些命令是,

apropos
whatis
less
groff

参考文献

https://stackoverflow.com/a/949006/1742825


当然,不一定会告诉您运行这些命令是否会做有用的事情。以您的禁用网络为例,我想它ping仍会被列为可执行文件,但对您没有多大帮助。另外,这不是基于用户的current $PATH,这意味着如果命令不在名为搜索路径的目录之一中,它将永远不会显示出来?
2014年

apropos -s1似乎是一个更好的答案,因为它包含了每个命令的作用的单行描述。答案确实是别名,函数等的列表,但由于对它们的解释不多,IMO的使用受到限制。
user1404316

9

一般而言:不,某些程序没有文档。

但是,apropos可能正是您需要的。

例如apropos ssh,在我的情况下,将列出与ssh相关的手册页:

authorized_keys (5)  - OpenSSH SSH daemon
git-shell (1)        - Restricted login shell for Git-only SSH access
rlogin (1)           - OpenSSH SSH client (remote login program)
rsh (1)              - OpenSSH SSH client (remote login program)
slogin (1)           - OpenSSH SSH client (remote login program)
ssh (1)              - OpenSSH SSH client (remote login program)
ssh-add (1)          - adds private key identities to the authentication agent
ssh-agent (1)        - authentication agent
ssh-argv0 (1)        - replaces the old ssh command-name as hostname     handling
ssh-copy-id (1)      - use locally available keys to authorise logins on a     remote machine
ssh-keygen (1)       - authentication key generation, management and conversion
ssh-keyscan (1)      - gather ssh public keys
ssh-keysign (8)      - ssh helper program for host-based authentication
ssh-pkcs11-helper (8) - ssh-agent helper program for PKCS#11 support
ssh_config (5)       - OpenSSH SSH client configuration files
sshd (8)             - OpenSSH SSH daemon
sshd_config (5)      - OpenSSH SSH daemon configuration file
XAllocClassHint (3)  - allocate class hints structure and set or read a window's WM_CLASS property
XClassHint (3)       - allocate class hints structure and set or read a window's WM_CLASS property
XGetClassHint (3)    - allocate class hints structure and set or read a window's WM_CLASS property
XSetClassHint (3)    - allocate class hints structure and set or read a window's WM_CLASS property
XtIsShell (3)        - obtain and verify a widget's class

你可以看到一些网页出现超过一次,原因是rsh sloginssh具有相同的手册页。像往常一样,也存在误报。


我想虽然没有确切什么我一直在寻找,绝对是一个非常有益的和类似的工具。谢谢!
OneChillDude 2014年

也许添加到您的答案中apropos -s1,这将提取man第1节中的所有命令,并且仅提取那些命令,这似乎是OP想要的。
user1404316 '18

3

您可以使用whatis以下命令阅读许多命令的简短描述:

$ whatis pwd
pwd (1p)             - return working directory name
pwd (1)              - print name of current/working directory
pwd (n)              - Return the absolute path of the current working directory

您可以要求几个命令:

$ whatis pwd ls ps
pwd (1p)             - return working directory name
pwd (1)              - print name of current/working directory
pwd (n)              - Return the absolute path of the current working directory
ls (1p)              - list directory contents
ls (1)               - list directory contents
ps (1)               - report a snapshot of the current processes.
ps (1p)              - report process status

因此,您可以尝试通过结合whatis使用来生成所有命令的描述列表compgen

$ whatis $(compgen -c)

如果它在STDERR上产生了一些垃圾,则可以使用`whatis $(compgen -c)2> / dev / null`来清理它。
Hastur 2014年

2

bash你可以用一个简单的开始help从提示调用有一个内置的与命令列表和细化后help commandnameman commandnameman -k commandname(最后延长研究相关的)。

您会发现阅读偶数info coreutilsinfo。(不仅限于bash)很有用

在每个命令的man页面末尾(info也是),在标题后面还有其他相关命令的列表SEE ALSO。一个很好的起点来扩展您的研究。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.