GNUps
支持 BSD 样式选项、UNIX 样式选项和 GNU 长选项。使用其中一种类型(在脚本和命令行中)是否优于其他类型?
我从手册页中得到的印象是选项样式的功能并不完全重叠。
答案1
一般来说,只需使用能提供您想要的结果的选项集。
为了(其他人的)理智和可移植性,我建议坚持使用 BSD 风格或 SysV 风格的参数——大多数现代系统都接受这两种参数集,这样当你编写的用于解决 Linux 问题的脚本被放到一个不理解 GNU 风格长选项的系统上时,它仍然可以工作(全世界都是不是Linux 机器)。
答案2
使用这些类型之一(在脚本和命令行中)是否优于其他类型?
这在很大程度上取决于脚本应在哪些目标平台上运行。如果您的脚本只能在 Linux 上运行,则使用 GNU 样式选项;如果它们还应在 *BSD 上使用,则使用 BSD 样式选项;最后但并非最不重要的是,如果它们应在各种 unixoid 系统(例如 Solaris)上运行,则使用 UNIX 样式选项。
答案3
任何POSIX说。我不太了解这方面的内容,但我猜使用 ps 的脚本无论如何都不太容易移植。
答案4
我认为您会发现 POSIX 或 SVR4 选项更加常见。
我通常会解析 uname 输出,并根据该值选择正确的 /bin/ps、/usr/bin/ps 和参数。在不支持的平台上,我只是退出,我不会猜测。在 Linux 上,我将 $PS_PERSONALITY 设置为“posix”,并取消设置 $I_WANT_A_BROKEN_PS,以防用户出于某种原因设置了该设置。这只是一种防御措施。
GNU getopt_long() 样式仅在 Linux 上有用,即使您想要这样做,人们也更熟悉短选项。