你使用的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消息)。
4条答案
按热度按时间bvjxkvbb1#
请,我讨厌软件说"是的,我知道你的意思,但你没有说对,这是正确的方式",而不是做我要求的事情。
ipakzgxi2#
我认为关键是让输出文本变小,不要占据用户屏幕的全部空间。例如,请看 #26999 。
或许
-h
的输出可以稍微扩展一点,然后说Run 'go help X' for more details.
。8mmmxcuj3#
@bcmills@rsc
4bbkushb4#
我经常发现自己无法完全记住各种工具不同标志的细节,因此我的工作流程是先开始编写要运行的命令,然后在最后添加
--help
,这样我可以阅读帮助文本。按向上键可以恢复正在编写的命令,删除--help
并添加我想要使用的CLI参数。如果Go采用为所有命令行工具设置--help
标志,当请求--help
文本时,将打印完整的帮助输出,这种工作流程会更好。