Unix实用程序可移植性/兼容性表

时间:2016-03-12 23:17:45

标签: linux bash unix awk sed

例如,要将整数UNIX时间戳转换为可读日期,可以使用date实用程序。但是,不同平台上的语法不同:

    Linux上的
  • - date --date='@123456789'
  • 关于BSD - date -r 123456789

我不确定Mac OS X,AIX,HP-UX和所有其他风格。

因此,整个系统的程序非常不同,即使具有不同的名称和使用语法。例如,它在Linux上是seq 1 10,但它在BSD上是jot 10 1

我知道shell有一个POSIX标准(即sh),但据我所知,所有其他实用程序都没有POSIX标准(例如,date的联机帮助页Linux没有说明如何符合POSIX / SysV / BSD标准。

这个问题 - Portability between Unix shells - am I thinking about the issue correctly? - 解决了这个问题,但只涉及shell本身,而不是所有其他实用程序。

所以,我有两个问题:

  1. 是否提供某种兼容性/可移植性比较表,列出了常用UNIX CLI工具的各种主要实现的相关差异,如datesedawk等?
  2. 是否有某种可用的兼容性层,即我可以用来确保我的shell脚本是可移植的最小子集,或某种类型的垫片(如在HTML / JavaScript中),它们为备用系统带来了缺少的功能?

2 个答案:

答案 0 :(得分:1)

date等基本命令肯定有标准。然而,从几秒钟以来就没有时间支持"用它。

POSIX未指定

seqjot,但使用shell脚本实现它们是微不足道的。

您正在寻找的最小子集或兼容性层是POSIX标准。看看http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html

答案 1 :(得分:1)

我甚至不确定这几天是否有资格作为答案,但对于这类事情,我强烈推荐O'Reilly's UNIX in a Nutshell,它可以很好地整理选项各种命令的各种UNIX版本。

book cover http://ecx.images-amazon.com/images/I/51RdK3fsT%2BL._SY344_BO1,204,203,200_.jpg