标志,选项和参数之间有什么区别?[关闭]


14
  • ls -a(我考虑-a一种选择)

  • sudo -u username-u=选项,username= arg)

  • chmod 664 my-dir664=选项,my-dir= arg)

除了想到目录清单时,我想不出一个可能说“这是一个标志”的示例:

-r--------. 1 david david   3344 May 19 17:48 611056.pdf

这为所有者设置了“读取标志”,仅此而已。是什么阻止我将其称为“读取选项”?

我主要使用DocBook XML编写和编辑技术文档,并且正在寻找差异的解释,该差异应尽可能一致和准确。但是,我已经看到一种模式形成:

  1. 标志通常是布尔值。例如,setenforce 0
  2. 选项有助于定义命令的行为方式。有些可能是可选的。
  3. 参数告诉命令要操作的对象。

我可以看到自己将标志和选项结合在一起(某些选项可能有十二个可能的值,但布尔值只有两个)。参数看起来足够不同以保持原样。


2
“什么阻止了我打电话给……”?没事 就像没有什么阻止我称锹为树。
muru

@muru-尽管英语词典会不同意您的主张。
DarkHeart '16

3
为了使事情更加混乱,我还将调用一个不带参数/参数标志的选项,如您的ls -a示例所示。(对我来说,标志是布尔变量。)
乌尔里希·施瓦茨

3
他们是狗窝 ; 他们全部三十。:-)⁠–
斯科特(Scott)

您看到的模式仅存在,因为您缩小了想要看到的范围。创建TAR文件(我已经使用30多年了)而不是提取它的一种方法是: tar c abc.txt > x.tar中有c一个function。您试图将其称为选项,这是完全不合适的。
Anthon

Answers:


17

没有对术语“选项”,“参数”和“标志”的一致定义,并且在软件开发领域中没有中央机构可以强制其使用。发生这种情况的术语很多:在使用“目录”一词超过30年之后,我现在不得不面对使用“文件夹”一词的人,这些人对Microsoft的新术语感到困惑。

术语的共识定义可以在编程中以不同的方式实现。在“自变量” /“选项” /“标志”的情况下,编程语言的规范手册和教程与常见库中使用的术语一样,有助于强制使用。

例如,您在命令后放置在命令行上的内容通常类似于函数调用的参数,称为命令的“参数” ,这可能部分是因为它们在C手册中称为“参数”(因此argcargv)。在argparsePython库也有助于执行期限“的说法”。但是,我也看到它们被称为“参数”。

术语“选项”派生自“可选”,这意味着可以将其忽略。在getoptC库是一个使用这一术语。但是“选项”的先例实际上并不是可选的:例如,argparse 手册指出可以创建“必需的选项”(尽管它也说这是“通常被认为是错误的形式”)。选项往往是由一个单一的(前-)或双(--长选项)划线,但也有不要求或强制执行的选项破折号使用熟悉的命令(例如tarpsdd)。选项本身可以接受一个参数(例如-w80--color=always),或偶尔接受多个参数。

以我的经验,“标志”与选项相同,但通常不带参数,实际上代表布尔型开关。

概括地说,由于每个程序员都可以尝试查找某种标准的做事方式和命名方式,而且还可以在不花费太多额外成本的情况下重新发明轮子,因此命名永远不会保持一致。一旦您记录了代码,并且通过举例说明这些单词赋予了哪些新的含义,就很清楚,如果有足够的人从您的代码中选择这些名称和含义,这些名称和含义可能就会保留下来。


7

标志是选项的类型,是布尔类型的选项,默认情况下始终为false(例如--verbose,--quiet,--all,--long等)。

选项告诉函数如何执行操作(例如-a,-l,-verbose,-output,-name,-c等),而参数则告诉函数执行什么操作/从中执行什么操作(例如*file1,主机名,数据库)。


因此,在您的定义中,中 git pull git://bla/blapull是一个参数,告诉您git要进行的工作。
Anthon

1
@Anthon不,有运算符(开关/标志/参数),参数和命令pull是一个命令。可以将命令视为应用程序名称的扩展:git pull <...>等效于名为的应用程序git-pull。当应用程序具有命令时,每个命令会使应用程序执行完全不同的操作。
Ziggy Crueltyfree Zeitgeister

git人们可能将其称为命令,但这并不总是被称为,例如tarc用于创建的称为函数。这就是问题所在:术语没有标准化,即使您认为答案中也有术语
Anthon

默认情况下,标志不必为假。在命令行上提供该标志只会反转其默认状态(on-> off或off-> on)。有人称此为拨动开关以将其与标志区分开。其他人则认为区别并不重要。
cas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.