我正在通过Shell(Bash)脚本的入门工作,并有以下疑问:
- 我碰到了
ls
命令
ls
的man
页列举了几个用例:
ls -a
ls --block-size='M'
我的问题 :
- 在
-
和--
什么区别?- 为什么有2个命名法使用?
- 它背后的动机是什么?
长格式( – --foo
)选项是一个GNU扩展 – GNU扩展中存在的东西,但在UNIX工具的POSIX标准设置要求中根本不存在,所以其他版本的ls
并不一定要支持这些选项。 整个单词( foo
)在这种情况下是有意义的。 这个术语最近被添加了,并且比短格式更有表现力(并且没有命名空间限制)。
短格式选项( -al
)至少在形式上是标准化的(尽管扩展可以添加新的格式)。 它们是按字符处理的,每次只能处理一个字母 – 这意味着-a
(显示隐藏文件)和-l
(长输出),而不是在这种情况下具有自己的含义。 这是UNIX命令行选项的原始语法,因此不仅支持简洁性,而且还支持向后兼容性。
它们都实现相同的任务:将参数传递给被调用的程序。 做这件事的方法也不多,也没有一个标准的方法:那就是被称为短期期权和长期期权(GNU风格)的两个主要方式。
一个程序不需要同时实现它们,虽然它通常的做法可以把它们当作独一无二的。