BASH : '-' 和 '--' 选项之间的区别
BASH : Difference between '-' and '--' options
我正在学习 Shell (Bash) 脚本 的入门读物,并且有以下疑问:
I came across the ls
command
The man
page of ls
lists a few use cases as :
ls -a
ls --block-size='M'
我的问题:
- What is the difference in
-
and --
?
- Why are there 2 nomenclatures used ?
- What is the motivation behind it ?
长格式 (--foo
) 选项是 GNU 扩展 -- GNU ls
中存在的东西,但根本不存在于 UNIX 工具的 POSIX 标准设置要求中, 所以其他版本的 ls
没有义务支持这些选项。在这种情况下,整个单词 (foo
) 是有意义的。这个命名法是最近添加的,比缩写形式更具表现力(并且没有名称空间限制)。
短格式选项 (-al
) 至少在形式上是标准化的(尽管扩展名可以添加新的)。它们是逐个字符处理的,一次一个字母——所以 -al
表示 -a
(显示隐藏文件)和 -l
(长输出),而不是 -al
在这种情况下有其自身的含义。这是 UNIX 命令行选项的原始语法,因此不仅为了简洁而且为了向后兼容而受到支持。
它们都实现了相同的任务:将参数传递给被调用的程序。没有太多方法可以做到这一点,也没有标准方法:这是两个主要的方法,称为短选项和长选项(GNU 风格)。
一个程序不需要同时实现它们,尽管它通常的实现方式允许将它们作为唯一的来处理。
我正在学习 Shell (Bash) 脚本 的入门读物,并且有以下疑问:
I came across the
ls
commandThe
man
page ofls
lists a few use cases as :
ls -a
ls --block-size='M'
我的问题:
- What is the difference in
-
and--
?- Why are there 2 nomenclatures used ?
- What is the motivation behind it ?
长格式 (--foo
) 选项是 GNU 扩展 -- GNU ls
中存在的东西,但根本不存在于 UNIX 工具的 POSIX 标准设置要求中, 所以其他版本的 ls
没有义务支持这些选项。在这种情况下,整个单词 (foo
) 是有意义的。这个命名法是最近添加的,比缩写形式更具表现力(并且没有名称空间限制)。
短格式选项 (-al
) 至少在形式上是标准化的(尽管扩展名可以添加新的)。它们是逐个字符处理的,一次一个字母——所以 -al
表示 -a
(显示隐藏文件)和 -l
(长输出),而不是 -al
在这种情况下有其自身的含义。这是 UNIX 命令行选项的原始语法,因此不仅为了简洁而且为了向后兼容而受到支持。
它们都实现了相同的任务:将参数传递给被调用的程序。没有太多方法可以做到这一点,也没有标准方法:这是两个主要的方法,称为短选项和长选项(GNU 风格)。
一个程序不需要同时实现它们,尽管它通常的实现方式允许将它们作为唯一的来处理。