So I understand that there are
man pages for getting the documentation when the internet is unavailable, or when you need advanced uses, but what if I'm offline and I don't even know what tool I need for the job? Is there a command that lets me see each program/command and a short description?
So I understand that there are
You can use the bash(1) built-in
compgen -cwill list all the commands you could run.
compgen -awill list all the aliases you could run.
compgen -bwill list all the built-ins you could run.
compgen -kwill list all the keywords you could run.
compgen -A functionwill list all the functions you could run.
compgen -A function -abckwill list all the above in one go.
The above command lists all the available commands for an user based on his privileges set. I disabled the network and tested the above command and it works even when disabled. However, for short description, as far as I can tell, once you get an command, you can view the man page.
Some other commands that can be used to view the description about a command are,
apropos whatis less groff
In general: No, some programs come without documentation.
apropos might be just what you need.
apropos ssh will list the man pages related to ssh, in my case:
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
You can see some pages appear more than once, the reason being that
ssh have the same man page.
Also there (as usual) false positives.
You can read short description of many commands using
$ 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
And you can ask for several commands:
$ 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
Therefore, you can try to generate list of descriptions of all commands by combining
$ whatis $(compgen -c)
bash you can start with a simple
help invocation from the prompt to have a built-in command list and after refine with
man commandname and
man -k commandname (the last to extend the research to the related ones).
You can find useful to read even
info coreutils and
info.(not only in
At the end of the
man pages (and
info too) for each command there is a list of other related commands after the title
SEE ALSO. A good starting point to expand your research.