BASH:“ – ”和“ – ”选项之间的区别

我正在通过Shell(Bash)脚本的入门工作,并有以下疑问:

  • 我碰到了ls命令
  • lsman页列举了几个用例:

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

我的问题 :

  • ---什么区别?
  • 为什么有2个命名法使用?
  • 它背后的动机是什么?

长格式( – --foo )选项是一个GNU扩展 – GNU扩展中存在的东西,但在UNIX工具的POSIX标准设置要求中根本不存在,所以其他版本的ls并不一定要支持这些选项。 整个单词( foo )在这种情况下是有意义的。 这个术语最近被添加了,并且比短格式更有表现力(并且没有命名空间限制)。

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

它们都实现相同的任务:将参数传递给被调用的程序。 做这件事的方法也不多,也没有一个标准的方法:那就是被称为短期期权和长期期权(GNU风格)的两个主要方式。
一个程序不需要同时实现它们,虽然它通常的做法可以把它们当作独一无二的。