說明

執行 Shell 應用程式通常意味著使用者處於圖形介面受限的環境中。此外,雖然在行動電話時代我們幾乎總是連線的,但存取網頁瀏覽器或任何其他豐富的 UI 應用程式 (例如 PDF 檢視器) 可能並非總是可行。這就是為什麼 Shell 命令的自我文件化非常重要,而這正是 help 命令的用武之地。

輸入 help + ENTER 會列出 Shell 已知的所有命令 (包括無法使用的命令) 及其功能的簡短描述,類似於以下內容

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.

輸入 help <command> 會顯示有關命令的更詳細資訊,包括可用的參數、其類型、是否為必填項以及其他詳細資訊。

以下清單顯示了應用於自身的 help 命令

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]

說明是範本化的,可以根據需要進行自訂。設定位於 spring.shell.command.help 下,您可以在其中使用 enabled 停用命令、使用 grouping-mode 選擇 groupflat (如果您想透過扁平化結構來隱藏群組),使用 command-template 定義命令說明的輸出範本,以及使用 commands-template 定義命令清單的輸出。

如果設定了 spring.shell.command.help.grouping-mode=flat,則說明會顯示

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.

helphelp <commmand> 的輸出都是使用預設實作範本化的,可以更改。

選項 spring.shell.command.help.commands-template 預設為 classpath:template/help-commands-default.stg,並將 GroupsInfoModel 作為模型傳遞。

選項 spring.shell.command.help.command-template 預設為 classpath:template/help-command-default.stg,並將 CommandInfoModel 作為模型傳遞。

表 1. GroupsInfoModel 變數
描述

showGroups

如果啟用顯示群組,則為 true。否則為 false。

groups

命令變數 (請參閱 GroupCommandInfoModel 變數)。

commands

命令變數 (請參閱 CommandInfoModel 變數)。

hasUnavailableCommands

如果有無法使用的命令,則為 true。否則為 false。

表 2. GroupCommandInfoModel 變數
描述

group

群組的名稱 (如果已設定)。否則為空。

commands

命令 (如果已設定)。否則為空。類型為多值,請參閱 CommandInfoModel 變數

表 3. CommandInfoModel 變數
描述

name

命令的名稱 (如果已設定)。否則為 null。類型為字串,包含完整命令。

names

命令的名稱 (如果已設定)。否則為 null。類型為多值,本質上是分割後的 name

aliases

可能的別名 (如果已設定)。類型為包含字串的多值。

description

命令的描述 (如果已設定)。否則為 null。

parameters

參數變數 (如果已設定)。否則為空。類型為多值,請參閱 CommandParameterInfoModel 變數

availability

可用性變數 (請參閱 CommandAvailabilityInfoModel 變數)。

表 4. CommandParameterInfoModel 變數
描述

type

參數的類型 (如果已設定)。否則為 null。

arguments

引數 (如果已設定)。否則為 null。類型為包含字串的多值。

required

如果為必填項,則為 true。否則為 false。

description

參數的描述 (如果已設定)。否則為 null。

defaultValue

參數的預設值 (如果已設定)。否則為 null。

hasDefaultValue

如果存在 defaultValue,則為 true。否則為 false。

表 5. CommandAvailabilityInfoModel 變數
描述

available

如果可用,則為 true。否則為 false。

reason

如果無法使用,則為原因 (如果已設定)。否則為 null。