Linux BASH:x27-';和'--';选择权
我当时正在研究一本关于Shell(Bash)脚本编写的入门读物,并产生了以下疑问:Linux BASH:x27-';和'--';选择权,linux,bash,shell,sh,ls,Linux,Bash,Shell,Sh,Ls,我当时正在研究一本关于Shell(Bash)脚本编写的入门读物,并产生了以下疑问: 我遇到了ls命令 man页面的ls列出了一些用例,如下所示: ls-a ls——块大小='M' 我的问题: -和-有什么区别 为什么使用两个术语 背后的动机是什么 长格式(--foo)选项是一个GNU扩展,它存在于GNUls中,但在UNIX工具的POSIX标准设置要求中根本不存在,因此其他版本的ls没有义务支持这些选项。在这种情况下,整个单词(foo)是有意义的。这种命名法是最近才添加的,比缩写形式更
- 我遇到了ls
man
页面的ls
列出了一些用例,如下所示:
ls-a
ls——块大小='M'
和-
有什么区别-
- 为什么使用两个术语
- 背后的动机是什么
--foo
)选项是一个GNU扩展,它存在于GNUls
中,但在UNIX工具的POSIX标准设置要求中根本不存在,因此其他版本的ls
没有义务支持这些选项。在这种情况下,整个单词(foo
)是有意义的。这种命名法是最近才添加的,比缩写形式更具表现力(并且没有名称空间限制)
短格式选项(
-al
)至少在形式上是标准化的(尽管扩展可以添加新选项)。它们是一个字符一个字符地处理的,一次一个字母,因此-al
表示-a
(显示隐藏文件)和-l
(长输出),而不是-al
在这种情况下有自己的含义。这是UNIX命令行选项的原始语法,因此不仅支持简洁性,而且支持向后兼容性。它们都实现了相同的任务:将参数传递给被调用的程序。实现这一点的方法不多,也没有标准的方法:这是两种主要的方法,即短期权和长期权(GNU风格)。一个程序不需要同时实现它们,尽管它通常的实现方式让它们成为唯一的处理方式。不完全相关,但很接近,根本不是bash问题--
ls
是一个外部命令;无论什么程序调用它,无论该程序是否为shell,它的行为都完全相同。很抱歉@CharlesDuffy,我不知道ls是一个外部命令-我是一个新手:)请您稍微详细解释一下-我无法真正理解您的意思;)@普拉纳夫,你能更具体地说清楚什么吗?这是我所说的“一个字符接一个字符”,还是我所说的“GNU扩展”,或者其他什么?嗨,@CharlesDuffy,我无法理解:GNU扩展,“一个字符接一个字符”,长格式vs短格式,“至少在形式上”。很抱歉,如果我是一个后遗症患者:)(以及同一维基上的其他内容——陷阱页面和常见问题解答特别有用)是一个很好的起点。@Manningham,find
实际上符合POSIX语法指南,因为在POSIX标准版本的find
中,至少有一个目录名是必需的--您必须使用find-iname
,不仅是find-iname
——而且根据POSIX实用程序语法指南(但与GNU更宽松的实现不同),超过第一个参数的所有内容也是位置参数,而不是选项。因此,所有的find
操作和过滤器---iname
,-print
等--都被指定为位置参数,而不是选项(这是有意义的,因为它们是顺序敏感的)。从形式上讲,有一种标准方式(在“已批准并发布的标准机构”中),尽管它只绑定到符合POSIX的实用程序(包括ls
)上。