他们是否有任何惯例(无论是书面的还是一般理解的)来规定什么时候应该使用 斜线 ()或a 连字符 (-),当从命令行中读取 argumentsflags 时?
C:\> myprogram.exe -a
C:\> myprogram.exe /a
根据我的经验,这两个词似乎是可以互换的,但我还没有用过足够的命令行工具来说明我发现了什么规则或模式。
有什么好的理由使用它们中的任何一个吗?理论上,我是否可以使用一个 星号 (*),如果我想这样做的话?
你可以(理论上)使用任何你想使用的东西,因为参数只是传递给你的命令行程序的字符串。
Windows的惯例似乎更喜欢使用斜杠。ipconfig /all
但也有一些程序采用了连字符。gacutil -i
甚至是一种环境变量的语法 setup SKUUPGRADE=1
.
* 尼克斯惯例似乎更喜欢使用连字符。-v
为单字母参数,双连字符 --verbose
的多字母参数。
我倾向于选择连字符,因为它们更适合于操作系统 (在某些操作系统中,斜杠是路径定界符。),并在更现代的Windows应用程序中使用(例如,nuget)。
编辑:我想推荐一个能进行.NET命令行参数解析的库。
这将是一个推荐一个能进行.NET命令行参数解析的库的好地方。http:/commandline.codeplex.com
通常情况下,它是 /
在Windows和 -
--
在Unix系统上的短长选项。但是没有规定,所以其实是由你来决定的。
也请参见 命令行选项风格 - POSIX还是什么?.
在DOS和Windows中,传统的做法是使用前斜线,如 /a
或 /extend
. 使用传统 -a
来自Unix(也可能来自其他地方)。
有一个 GNU标准 其中,单字母标志用一个破折号,如 -e -d
,它们可以合并成 -ed
(所以 -ed
相当于 -e -d
). 然后,多字母开关需要两个破折号,如在 --extend --display
. 有时只需要写出足够多的单词,就可以推断出什么开关的意思,所以例如 --disp
庶几 --display
如果没有其他开关以字母开头 disp...
.
旧的DOS命令使用前缀来表示可选参数。 微软现在正朝着支持Posix使用-来表示参数的方向发展,这一点在PowerShell命令行标准文档中已有记载。 这是因为他们的操作系统现在将\和作为目录分隔符。
你可以用任何你想要的东西,或者根本不用主角。这更多的是为了遵守标准。当其他用户使用您的应用程序时,他们会想到包含一个-或在添加参数时,因为那是他们习惯的。
在Windows应用程序中,前导斜杠()是常见的。单连字符(-)在符合POSIX标准的应用程序中常见于短选项(那些由一个字母组成的选项)。双连字符(--)常见于此类应用程序中的长选项。
惯例是。
-
对于单字母标志,它们可以是链式的(例如:"--"和"--")。rm -Rf
和 rm -R -f
)
--
对于多于一个字母的旗帜来说 rm --recursive --force
)
使用 /
是一个老标准,Windows继承了DOS,DOS继承了CPM,它不应该用于新软件。它在非Windows系统和读者身上产生了歧义。现代的微软工具,如.NET和PowerShell,使用的是 -
的标志,所以即使是微软也不愿意使用 /
不再。