当传递了--help/-h标志时,显示帮助信息而不是建议"go help子命令",

mccptt67  于 6个月前  发布在  Go
关注(0)|答案(4)|浏览(42)

你使用的Go版本是什么( go version )?

go version go1.11 darwin/amd64

这个问题在最新版本的发布中是否重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

$ go env
GOARCH="amd64"
GOBIN="/Users/fatih/go/bin"
GOCACHE="/Users/fatih/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/fatih/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.11/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.11/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/k_/87syx3r50m93m72hvqj2qqlw0000gn/T/go-build154500786=/tmp/go-build -gno-record-gcc-switches -fno-common"

你做了什么?

我询问了打印命令 go list 的帮助用法:

$ go list --help
usage: go list [-f format] [-json] [-m] [list flags] [build flags] [packages]
Run 'go help list' for details.

你期望看到什么?

我希望看到帮助输出,而不是建议我去运行 go help list

# example output I would like to see:
$ go list --help
usage: go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

List lists the named packages, one per line.
The most commonly-used flags are -f and -json, which control the form
of the output printed for each package. Other list flags, documented below,
control more specific details.
...

你看到了什么?

它建议我去运行 go help list
我认为这不是一个非常用户友好的输出。 --help (或 -h )是一个非常常见的标志,甚至被 flag 包解析。 go 命令理解我在寻求帮助,而不是建议我去运行 go help list ,它应该显示给我帮助信息。
作为一个示例用户情况,假设你运行一个命令并且以某种方式写错了:

$  go list -f
flag needs an argument: -f
usage: go list [-f format] [-json] [-m] [list flags] [build flags] [packages]
Run 'go help list' for details.

如果 go 命令支持 --help / -h 标志,我就可以按键盘上的 up 键((shell会显示最后执行的命令)),然后附加 --help 标志查看出了什么问题:

$  go list -f --help
usage: go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

List lists the named packages, one per line.
The most commonly-used flags are -f and -json, which control the form
of the output printed for each package. Other list flags, documented below,
control more specific details.

...

这个例子不仅仅关于 go list 本身,这适用于 go 命令的每一个子命令。这种情况发生了很多次,我认为从头开始编写一个命令是不直观的(即: go help list , go help test 等)。我不知道为什么 --help-h 是允许的而不允许使用,但如果可以移除的话,我建议我们移除限制并显示帮助信息,而不是建议调用 go help subcommand (对于与子命令相关的 --help消息)。

bvjxkvbb

bvjxkvbb1#

请,我讨厌软件说"是的,我知道你的意思,但你没有说对,这是正确的方式",而不是做我要求的事情。

ipakzgxi

ipakzgxi2#

我认为关键是让输出文本变小,不要占据用户屏幕的全部空间。例如,请看 #26999
或许 -h 的输出可以稍微扩展一点,然后说 Run 'go help X' for more details.

4bbkushb

4bbkushb4#

我经常发现自己无法完全记住各种工具不同标志的细节,因此我的工作流程是先开始编写要运行的命令,然后在最后添加 --help ,这样我可以阅读帮助文本。按向上键可以恢复正在编写的命令,删除 --help 并添加我想要使用的CLI参数。如果Go采用为所有命令行工具设置 --help 标志,当请求 --help 文本时,将打印完整的帮助输出,这种工作流程会更好。

相关问题