当实现命令行标志时,我应该在前边加一个斜杠()还是连字符(-)?

问题描述 投票:11回答:7

他们是否有任何惯例(无论是书面的还是一般理解的)来规定什么时候应该使用 斜线 ()或a 连字符 (-),当从命令行中读取 argumentsflags 时?

C:\> myprogram.exe -a
C:\> myprogram.exe /a

根据我的经验,这两个词似乎是可以互换的,但我还没有用过足够的命令行工具来说明我发现了什么规则或模式。

有什么好的理由使用它们中的任何一个吗?理论上,我是否可以使用一个 星号 (*),如果我想这样做的话?

c# command-line console-application command-line-arguments
7个回答
11
投票

你可以(理论上)使用任何你想使用的东西,因为参数只是传递给你的命令行程序的字符串。

Windows的惯例似乎更喜欢使用斜杠。ipconfig /all但也有一些程序采用了连字符。gacutil -i 甚至是一种环境变量的语法 setup SKUUPGRADE=1.

* 尼克斯惯例似乎更喜欢使用连字符。-v 为单字母参数,双连字符 --verbose 的多字母参数。

我倾向于选择连字符,因为它们更适合于操作系统 (在某些操作系统中,斜杠是路径定界符。),并在更现代的Windows应用程序中使用(例如,nuget)。

编辑:我想推荐一个能进行.NET命令行参数解析的库。

这将是一个推荐一个能进行.NET命令行参数解析的库的好地方。http:/commandline.codeplex.com


5
投票

通常情况下,它是 / 在Windows和 --- 在Unix系统上的短长选项。但是没有规定,所以其实是由你来决定的。


5
投票

也请参见 命令行选项风格 - POSIX还是什么?.

在DOS和Windows中,传统的做法是使用前斜线,如 /a/extend. 使用传统 -a 来自Unix(也可能来自其他地方)。

有一个 GNU标准 其中,单字母标志用一个破折号,如 -e -d,它们可以合并成 -ed (所以 -ed 相当于 -e -d). 然后,多字母开关需要两个破折号,如在 --extend --display. 有时只需要写出足够多的单词,就可以推断出什么开关的意思,所以例如 --disp 庶几 --display 如果没有其他开关以字母开头 disp....


2
投票

旧的DOS命令使用前缀来表示可选参数。 微软现在正朝着支持Posix使用-来表示参数的方向发展,这一点在PowerShell命令行标准文档中已有记载。 这是因为他们的操作系统现在将\和作为目录分隔符。

https:/technet.microsoft.comen-uslibraryee156811.aspx。


0
投票

你可以用任何你想要的东西,或者根本不用主角。这更多的是为了遵守标准。当其他用户使用您的应用程序时,他们会想到包含一个-或在添加参数时,因为那是他们习惯的。


0
投票

在Windows应用程序中,前导斜杠()是常见的。单连字符(-)在符合POSIX标准的应用程序中常见于短选项(那些由一个字母组成的选项)。双连字符(--)常见于此类应用程序中的长选项。

请看这个链接来了解 POSIX 信息。 或者,请看这个SO的帖子。


0
投票

惯例是。

  • - 对于单字母标志,它们可以是链式的(例如:"--"和"--")。rm -Rfrm -R -f)

  • -- 对于多于一个字母的旗帜来说 rm --recursive --force)

使用 / 是一个老标准,Windows继承了DOS,DOS继承了CPM,它不应该用于新软件。它在非Windows系统和读者身上产生了歧义。现代的微软工具,如.NET和PowerShell,使用的是 - 的标志,所以即使是微软也不愿意使用 / 不再。

© www.soinside.com 2019 - 2024. All rights reserved.