Post History
The existing answer is good, but I'll add a short version. man FOO is the most reliable way. A large majority of programs have a man page, and a large majority of man pages cover all aspects of ...
#1: Initial revision
The existing answer is good, but I'll add a short version.
1. `man FOO` is the most reliable way. A large majority of programs have a man page, and a large majority of man pages cover all aspects of the program (assuming you have the patience to read it).
* By default, most Linuxes will open the man page in `less`.
* There are ways to colorize man pages to make them more readable. This should be a separate question.
* A useful trick is to pipe into grep: `man ls | grep -C 3 date`
* See also: https://linux.codidact.com/posts/289489
2. `tldr FOO` is a much shorter, third party, community managed summary of how to use a command. There are even more commands without a tldr page than without a man page, however most things have a tldr page. There are some competitors like bropages, cheat pages, etc. but usually tldr has the superset of information.
3. Installing a good shell completion tool is very helpful. For example, `fish` shell by default can tab-complete many commands, with not just a list of possible arguments but also their descriptions. Other shells have plugins with similar functions.
4. It is common courtesy for CLI programs to support either a `-h` or `--help` argument. You can pipe this into grep as well if long.
5. These days it is useful to search online for a program's git repo, and read the readme and/or repo wiki since developers like to start documenting there.
6. The [Arch wiki](https://wiki.archlinux.org/) and [Gentoo wiki](https://wiki.gentoo.org/) are currently great go-to resources for individual programs. They don't have all programs but they have most. If you are not using Arch/Gentoo you may need to adapt some instructions.
