Clo*_*boy 7 linux unix terminal macos
一些程序将采用如下选项:
$ someprogram -orange apple
Run Code Online (Sandbox Code Playgroud)
其他程序会使用这样的东西:
$ otherprogram --orange apple
Run Code Online (Sandbox Code Playgroud)
在 Linux/Unix/OSX 中是否有“规则”或约定?
use*_*686 22
最常见的是 GNUgetopt风格,一个短划线代表短选项,两个短划线代表长选项。
最初,Unix 程序采用单字母选项,前面有一个破折号,并可选择捆绑:
ls -laF
ls -l -a -F
Run Code Online (Sandbox Code Playgroud)
上面的两个命令是相等的。
当一个选项接受一个值时,它会覆盖捆绑: In gpg -aofoo.gpg,-a并且-o是选项并且foo.gpg是给定的值-o。
无论如何,他们中的大多数人做到了。
tar cvzf是常见的景象。当前版本也接受tar -cvzf,并且根据您是否添加破折号,参数将以非常不同的方式解释。例如,这两个意思是一样的(注意如何dashless选项不立即其价值前):
tar -xf file.tgz -vzO /etc/passwd /var/backups
Run Code Online (Sandbox Code Playgroud)
tar xfvzO file.tgz /etc/passwd /var/backups
Run Code Online (Sandbox Code Playgroud)
BSDps总是使用-; SysVps从来没有。Linux 版本接受这两个版本,并根据选项是否以破折号为前缀来更改其行为。(与上面的 tar 示例不同, ps 也会更改选项的含义。)
X11 程序使用以单个破折号或加号开头的长选项:
xterm -class FooTerm +vb -u8
Run Code Online (Sandbox Code Playgroud)
这将设置选项class和u8,并取消设置vb选项。
X11 样式与选项捆绑不兼容。
后来,长选项getopt()以一种与单字母选项兼容的方式添加到 GNU中。
gpg -se --no-armor --output=signed.gpg
Run Code Online (Sandbox Code Playgroud)
这将设置-s、-e、 和--no-armor(与 相反--armor)。
通常,--output=signed.gpg和--output signed.gpg是等价的。(但并非总是如此——例如 curl 不接受前者,只接受后者。)
(如果我没记错的话,长选项+在更改为 之前用作前缀--。)
POSIX 规范有一节Utility Argument Syntax,它描述了单字符选项。
大多数 Windows 程序都使用自己的解析器,这让用户很抓狂。
/a /b /c,有些允许 VMS-style /a/b/c,而另一些则更喜欢 Unix-style /abc。/用作前缀,有些也接受-,有些只 接受-。/foo bar, /foo=bar, /foo:bar。/quoted "like this",但有些程序将"当作文字字符。(这是让程序自己进行分词的缺点;在 Unix 中,这是由 shell 处理的。)getopt.通常第一个是在旧程序中发现的,这些程序根深蒂固而无法改变。那些长选项与标准getopt()功能不兼容。
第二种样式是由 GNU 引入的getopt_long(),并且符合现有标准,这些标准期望第一种样式捆绑短选项(即,-orange预期意味着-o -r -a -n -g -e)。强烈推荐这种多头期权风格。
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |