什么是非标准选项以及为什么应该避免使用它们?

什么是非标准选项以及为什么应该避免使用它们?

我在手册页中经常看到这一点,通常是指--verbose标志。

ln手册页:

-h、-i、-n 和 -v 选项是非标准的,不建议在脚本中使用它们。

这到底是什么意思?具体来说,在这种情况下,我有一个创建符号链接的脚本,我希望它将创建的链接列表写入文件。我可以使用ln -v还是应该使用其他方法?

答案1

请记住,UNIX 有多个版本,命令行实用程序也有多个版本。

可能更好的措辞是:

-h、-i、-n 和 -v 选项是非标准的跨不同版本以及它们的用途便携的不推荐使用脚本。

答案2

完整引言如下:

-h、-i、-n 和 -v 选项是非标准的,不建议在脚本中使用它们。提供它们只是为了与其他 ln 实现兼容。

我查看了 ln 手册页的多个版本,发现这些选项均未出现在 ln 的 POSIX 规范或旧版本的 UNIX 中。早期版本根本没有选项。-s 选项是在发明符号链接时添加的,而 -f 是添加到许多命令中的标准选项,用于处理非常常见的用例。这就是主流 Unix 的情况,人们更喜欢简约的工具集。

我猜,但在我看来,流行的 ln 实现中使用的大多数选项很可能是由GNU 项目. GNU 项目(“GNU 不是 Unix!”)最初是志愿者努力创建 Unix 的免费克隆版。正如您所见,GNU 项目喜欢开发巧妙的小功能,因此所有这些新选项都是他们的主意也就不足为奇了。

GNU 项目从未真正开发出一个可以运行的操作系统(他们仍在开发中!),但他们的库和实用程序成为了 Linux 发行版的标准功能。(这就是为什么 GNU 的铁杆粉丝坚持使用“GNU/Linux”的原因。)流行的 Linux 功能往往会被复制到各种 Unix 实现中。GNU 对 ln 的一些(但不是全部)添加似乎已经出现在主流 Unix 实现中,例如 Solaris 和 BSD。我怀疑 BSD 的用户觉得这四个选项是强加给他们的 — 因此手册页中出现了不礼貌的弃用。

OS X 实用程序基于 BSD 实用程序,因此弃用也出现在那里。我还没有在任何非基于 BSD 的系统上发现它。

相关内容