[[built-in-commands-help]] = Help Running a shell application often implies that the user is in a graphically limited environment. Also, while we are nearly always connected in the era of mobile phones, accessing a web browser or any other rich UI application (such as a PDF viewer) may not always be possible. This is why it is important that the shell commands are correctly self-documented, and this is where the `help` command comes in. Typing `help` + `ENTER` lists all the commands known to the shell (including xref:commands/availability.adoc[unavailable] commands) and a short description of what they do, similar to the following: [source, bash] ---- my-shell:>help AVAILABLE COMMANDS Built-In Commands exit: Exit the shell. help: Display help about available commands stacktrace: Display the full stacktrace of the last error. clear: Clear the shell screen. quit: Exit the shell. history: Display or save the history of previously run commands completion bash: Generate bash completion script version: Show version info script: Read and execute commands from a file. ---- Typing `help ` shows more detailed information about a command, including the available parameters, their type, whether they are mandatory or not, and other details. The following listing shows the `help` command applied to itself: [source, bash] ---- my-shell:>help help NAME help - Display help about available commands SYNOPSIS help --command String OPTIONS --command or -C String The command to obtain help for. [Optional] ---- Help is templated and can be customized if needed. Settings are under `spring.shell.command.help` where you can use `enabled` to disable command, `grouping-mode` taking `group` or `flat` if you want to hide groups by flattening a structure, `command-template` to define your template for output of a command help, `commands-template` to define output of a command list. If `spring.shell.command.help.grouping-mode=flat` is set, then help would show: [source, bash] ---- my-shell:>help help AVAILABLE COMMANDS exit: Exit the shell. help: Display help about available commands stacktrace: Display the full stacktrace of the last error. clear: Clear the shell screen. quit: Exit the shell. history: Display or save the history of previously run commands completion bash: Generate bash completion script version: Show version info script: Read and execute commands from a file. ---- Output from `help` and `help ` are both templated with a default implementation which can be changed. Option `spring.shell.command.help.commands-template` defaults to `classpath:template/help-commands-default.stg` and is passed `GroupsInfoModel` as a model. Option `spring.shell.command.help.command-template` defaults to `classpath:template/help-command-default.stg` and is passed `CommandInfoModel` as a model. [[groupsinfomodel-variables]] .GroupsInfoModel Variables |=== |Key |Description |`showGroups` |`true` if showing groups is enabled. Otherwise, false. |`groups` |The commands variables (see xref:commands/builtin/help.adoc#groupcommandinfomodel-variables[GroupCommandInfoModel Variables]). |`commands` |The commands variables (see xref:commands/builtin/help.adoc#commandinfomodel-variables[CommandInfoModel Variables]). |`hasUnavailableCommands` |`true` if there is unavailable commands. Otherwise, false. |=== [[groupcommandinfomodel-variables]] .GroupCommandInfoModel Variables |=== |Key |Description |`group` |The name of a group, if set. Otherwise, empty. |`commands` |The commands, if set. Otherwise, empty. Type is a multi value, see xref:commands/builtin/help.adoc#commandinfomodel-variables[CommandInfoModel Variables]. |=== [[commandinfomodel-variables]] .CommandInfoModel Variables |=== |Key |Description |`name` |The name of a command, if set. Otherwise, null. Type is string and contains full command. |`names` |The names of a command, if set. Otherwise, null. Type is multi value essentially `name` splitted. |`aliases` |The possible aliases, if set. Type is multi value with strings. |`description` |The description of a command, if set. Otherwise, null. |`parameters` |The parameters variables, if set. Otherwise empty. Type is a multi value, see xref:commands/builtin/help.adoc#commandparameterinfomodel-variables[CommandParameterInfoModel Variables]. |`availability` |The availability variables (see xref:commands/builtin/help.adoc#commandavailabilityinfomodel-variables[CommandAvailabilityInfoModel Variables]). |=== [[commandparameterinfomodel-variables]] .CommandParameterInfoModel Variables |=== |Key |Description |`type` |The type of a parameter if set. Otherwise, null. |`arguments` |The arguments, if set. Otherwise, null. Type is multi value with strings. |`required` |`true` if required. Otherwise, false. |`description` |The description of a parameter, if set. Otherwise, null. |`defaultValue` |The default value of a parameter, if set. Otherwise, null. |`hasDefaultValue` |`true` if defaultValue exists. Otherwise, false. |=== [[commandavailabilityinfomodel-variables]] .CommandAvailabilityInfoModel Variables |=== |Key |Description |`available` |`true` if available. Otherwise, false. |`reason` |The reason if not available if set. Otherwise, null. |===