在 shell 命令中使用连字符

在 shell 命令中使用连字符

我不好意思问这个问题,但如果我不问的话,我永远不会知道,所以我在这里尝试一下:

我注意到大多数 shell 命令都使用“-”作为选项,但我也注意到有些命令没有它。例如,要按给定方向存档文件,命令如下:

tar czvf allmyfiles.tar.gz *

但是,要提取档案,我学到的命令是:

tar -zxvf allmyfiles.tar.gz

看看上面的两个例子,是否包含连字符有什么意义吗?

答案1

命令“tar”和“ar”非常古老,早于使用破折号的惯例。

答案2

大多数现代程序使用获取选项分析他们的论点:

...原始作者从变体中挑选出对单字符选项、一起指定的多个选项以及带有参数的选项(-a arg 或 -aarg)的支持,所有这些都可以通过选项字符串控制。

但一如既往,有些程序无论如何都会按照自己的方式做事(dd就是一个很好的例子)。

更新:BSD 程序倾向于使用不带连字符的选项 - 例如,ps状态:

此版本的 ps 接受几种选项:

  1. UNIX 选项,可以分组并且前面必须带有破折号。
  2. BSD 选项,可以分组,但不能与破折号一起使用。
  3. GNU 长选项,前面有两个破折号。

答案3

使用tar,通常不会产生任何差异。没有规则规定所有命令是否都遵循此约定,但一般准则是command -arguments

相关内容