shell 脚本和函数的通用标志名称和标准

Dod*_*uma 6 shell gnu shell-script posix

我一直在调整在我的 shell 脚本和自定义函数中使用 GETOPT 和 GETOPTS,以使我能够更灵活地使用我创建的函数。在使用了许多 UNIX 函数之后,我意识到它们中的很多都使用了某种相似的语法。

示例-v用于详细输出和-R/-r递归功能。

我查看了实用程序约定POSIX 标准指南基于 C 的实用程序GNU 选项表。试图了解这是否是设计使然,以及是否有任何我应该遵循的规则。

我的问题是:
1. 是否有任何具有指定含义的特定选项标志?
2. 我的选择有多少自由,我不应该违反哪些规则?
3. 我应该避免给出类似-t-T不同含义的选项,还是应该为了简单起见将它们组合在一起?
4. 什么情况下应该使用大写或小写字母?

Gil*_*il' 6

没有快速而牢固的规则,甚至没有共同的约定。至多有几个选项在一些通用实用程序中一致使用——但不是在所有通用实用程序中使用。

这里有一些常见的字母——但请记住,这些绝不是通用的约定。如果您具有以下描述的功能之一,则最好使用相应的选项。如果其中一个选项对您的实用程序没有意义,请随意将其用于其他用途。

  • -c COMMAND-e COMMAND:执行命令。例子:sh -c, perl -e
  • -d-D:调试。
  • -f: force,危险动作不求确认。
  • -h: help — 但许多实用程序只识别 long 选项--help或根本不识别。示例:Linux getfaclmount. 反例: GNU ls, du, df(没有简短的选项,-h是人的大小),less-?是帮助,-h是别的东西)。
  • -i:确认提示的(nteractive)。
  • -n: 不要采取行动,只是打印将要做什么。例子:make
  • -r-R:递归。
  • -q-s:安静或无声。示例:grep -q表示不显示输出,grep -s表示不显示错误信息。
  • -v: 啰嗦。
  • -V: 显示版本信息。

传统上使用小写字母,大写字母才开始使用,因为只有26个小写字母。有时大写字母与相应的小写字母有关(例如:GNU grep -h/-H, ssh -x/-X, cp -r/-R),有时则不然。