BASH:' - '和' - '选项之间的区别

pra*_*nav 9 linux bash shell ls sh

我正在通过Shell(Bash)Scripting的入门读书,并有以下疑问:

  • 我遇到了ls命令
  • man页面ls列出了一些用例:

    ls -a
    ls --block-size='M'

我的问题 :

  • 是什么在差异---
  • 为什么使用2种命名法?
  • 它背后的动机是什么?

Cha*_*ffy 10

Long-form(--foo)选项是GNU扩展 - 在GNU中存在ls,但在UNIX工具的POSIX标准设置要求中根本不存在,因此其他版本ls没有义务支持这些选项.foo在这种情况下,整个单词()是有意义的.这个命名法最近被添加,并且比短格式更具表现力(并且没有名称空间限制).

短格式选项(-al)至少在形式上是标准化的(尽管扩展可以添加新的选项).它们是逐个字符处理的,一次一个字母 - 所以-al意味着-a(显示隐藏文件)和-l(长输出),而不是-al在这种情况下有自己的含义.这是UNIX命令行选项的原始语法,因此不仅支持简洁性,还支持向后兼容性.

  • @Manningham,“find”实际上“确实”符合 POSIX 语法准则,因为在“find”的 POSIX 标准版本中,至少有一个目录名称是强制性的——您“必须”使用“find”。-iname`,不仅仅是“find -iname”——并且根据 POSIX 实用程序语法指南(但与 GNU 更宽松的实现不同),第一个参数之后的所有内容*也是*一个位置参数,而不是一个选项。因此,所有“find”操作和过滤器——“-iname”、“-print”等——都被指定为位置参数,而不是选项(这是有道理的,因为它们对顺序敏感)。 (2认同)