加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Unix shell命令的一般语法是什么?

发布时间:2020-12-16 01:40:36 所属栏目:安全 来源:网络整理
导读:特别是,为什么有时某些命令的选项前面有一个符号,有时候是一个符号? 例如: sort -fsort -nrsort +4nsort +3nr 解决方法 目前,使用 getopt() (又名 getopt(3) )的POSIX标准被广泛用作标准符号,但在早期,人们正在进行实验.在某些计算机上,sort命令不再支持该
特别是,为什么有时某些命令的选项前面有一个符号,有时候是一个符号?

例如:

sort -f
sort -nr
sort +4n
sort +3nr

解决方法

目前,使用 getopt()(又名 getopt(3))的POSIX标准被广泛用作标准符号,但在早期,人们正在进行实验.在某些计算机上,sort命令不再支持该表示法.但是,各种命令(特别是ar和tar)接受没有任何前缀字符的控件 – 而dd(Alok在评论中提到)完全使用另一个约定.

使用’ – ‘作为长选项的GNU约定(由getopt_long(3)支持)已从使用”更改.当然,X11软件在多字符选项之前使用单个破折号.因此,整个事物是一系列历史文物,因为人们试验了如何最好地处理它.

POSIX记录了它适用的Utility Conventions,除非历史先例更强.

有哪些款式的期权处理?

[有一段时间,SO 367309包含以下材料作为我的答案.它最初是在FerranB被问到2008-12-15 02:02,但随后被关闭并被删除.

您认识到多少种不同类型的选项?我能想到
很多,包括:

>单字母选项以单个破折号开头,有分组时可分组
没有参数,参数可以附加到选项字母或下一个
参数(很多很多Unix命令;大多数POSIX命令).
>单字母选项前面有单个破折号,不允许分组,
必须附加参数(RCS).
>单字母选项前面有单个破折号,
参数必须是分开的(POSIX前SCCS,IIRC).
>多字母选项前面有单个破折号,参数可以是
附加或在下一个参数(X11程序;以及Mac OS X上的Java和许多具有NeXTSTEP遗产的程序).
>以单个破折号开头的多字母选项可以缩写
(Atria Clearcase).
>多字母选项前面加单加(废弃).
>多字母选项前面有双短划线;参数可能跟随’=’
或者是分开的(GNU实用程序).
>没有前缀/后缀的选项,有些名称有缩写或者是
隐含的论点必须是分开的. (AmigaOS
Shell)

对于采用可选参数的选项,有时必须附加参数(co -p1.3 rcsfile.c),
有时它必须遵循’=’符号. POSIX不支持可选
有意义的参数(POSIX getopt()只允许它们为最后一个
命令行上的选项).

所有合理的期权系统都使用由双破折号组成的选项
(‘ – ‘)单独表示“选项结束” – 以下参数是
“非选项参数”(通常是文件名; POSIX称它们为“操作数”)
即使他们从一开始
短跑. (我认为支持这种符号是必要的.请注意,如果 – 前面有一个需要参数的选项,– 将被视为选项的参数,而不是’选项结束’标记.)

许多但不是所有程序都接受单个破折号作为文件名
标准输入(通常)或标准输出(偶尔).有时,
与GNU’tar’一样,两者都可以在一个命令行中使用:

... | tar -cf - -F - | ...

第一个独奏短跑意味着’写入stdout’;第二个意思是’读取文件
来自stdin’的名字.

有些程序使用其他约定 – 也就是说,选项前面没有a
短跑.其中许多都来自Unix最古老的日子.例如,
‘tar’和’ar’都接受选项而不用破折号,所以:

tar cvzf /tmp/somefile.tgz some/directory

dd命令仅使用opt = value:

dd if=/some/file of=/another/file bs=16k count=200

某些程序允许您交错选项和其他参数
彻底; C编译器,make和GNU实用程序没有运行
环境中的POSIXLY_CORRECT就是例子.许多计划都期望
在其他参数之前的选项.

请注意,git和其他VCS命令通常使用混合系统:

git commit -m 'This is why it was committed'

有一个子命令作为参数之一.通常,可以在命令和子命令之间指定可选的“全局”选项.在POSIX中有这样的例子; sccs命令属于这一类;你可以争辩说,运行其他命令的其他一些命令也属于这一类:从POSIX中可以想到的是nice和xargs; sudo是一个非POSIX示例,svn和cvs也是如此.

我不同系统之间没有强烈的偏好.什么时候
有足够的选项,然后是带有助记符值的单个字母
很方便. GNU支持这一点,但建议用它进行备份
多字母选项前面有一个双破折号.

有些事我反对.其中一个最差的是相同的
选项字母使用不同的含义取决于其他什么
选项字母在它之前.在我的书中,这是禁忌,但我知道
它完成的软件.

另一个令人反感的行为是处理方式的不一致
参数(特别是对于单个程序,但也在一个套件中)
程式).要么附加参数要么分离
参数(或允许),但没有一些选项需要
附加论证和其他需要分离论证的论点.并
关于是否可以使用’=’来分离选项和
争论.

与许多(与软件相关的)事物一样 – 一致性更高
比个人决定重要.使用自动化的工具
并标准化参数处理有助于保持一致性.

无论你做什么,请阅读TAOUP’s Command-Line Options和
考虑Standards for Command Line Interfaces.(由J F增加塞巴斯蒂安 – 谢谢;我同意.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读