终端中选项/问题的约定是什么?

终端中选项/问题的约定是什么?

在探索 zsh 终端中与 mv 相关的一些标志时,我遇到了以下提示:overwrite untitled folder 2/test.txt? (y/n [n])

我的问题是括号中的第二个 n 寻求询问或建议是什么?为什么提示不只是y/n,为什么呢y/n [n]

这是什么意思?有人可以解释一下 的意义吗[n]

答案1

如果你只是按回车键,它就会采用括号中的部分。在您的情况下,默认值为“n”。

答案2

zsh不是终端,它只是一个 shell,一种具有交互模式的编程语言,专门用于运行其他命令。

终端仿真器(例如xtermgnome-terminal配置为运行您的登录 shell1 作为显示在那里的初始应用程序。

在 shell 提示符下,您通常会运行其他命令,例如lsvi等,这些命令也会输出到终端。

这并不是因为终端窗口的标题是xtermor zsh,所以您在其中看到的内容是由xtermorzsh本身输出的。它由任何将其写入与终端窗口关联的伪终端设备的应用程序显示。

具体来说,overwrite untitled folder 2/test.txt? (y/n [n])这不是 zsh shell 输出的消息,zsh 不会覆盖“文件夹”。 zsh 是一个 Unix shell,“文件夹”甚至不是 Unix 术语。在 Unix 中你有“目录”,而不是“文件夹”²。

话虽如此,使用y/n [n]是在终端上提示用户时非常常见的习惯用法。一般形式为:

Question? acceptable-answers [default]

或者诸如 openSUSEzypper之类的变体:

Continue? [y/n/v/...? shows all options] (y):

它会提出一个问题,可选择列出可接受的答案,并说明当您什么都不回答时的默认答案是什么。

因此,这里是一个是/否答案,默认答案是“否”。

例如,当询问一堆问题来配置某些软件时,该表单非常有用,以便用户可以一直按 Enter 键,除非他们想要修改默认设置。

除了完整的 TUI 之外,其他常见形式还将设置列出为:

1. setting1: current-value
2. setting2: value2
3. ...

What setting would you like to change?

并让用户选择他们想要更改的内容(所选设置的下一个提示仍然可以使用样式question? x/y/z [x])。


¹ 环境中引用的 shell 恰好$SHELL是在登录时从登录 shell 初始化的

² 我们确实看到 Microsoft 术语最近泄漏到了 Unix,特别是在桌面环境中。

相关内容