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 ...
Answer
#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.