1p
CentOS 6(可能还有大多数 Linux 发行版)包含POSIX 规范的手册页部分。
man 1p sh
、man 1p sed
、 等。等人。都非常有用,可以作为可移植 shell 脚本的参考。
然而,我刚刚注意到我系统上的这些手册页来自 2003 年 Open Group 基本规范!此后又出现了2008年版、2013年版和2016年版。
如何在我的 Linux 系统上以手册页的形式离线提供最新的 POSIX 规范?
我已经尝试了以下操作:
[vagrant@localhost ~]$ set -x
++ printf '\033]0;%s@%s:%s\007' vagrant localhost '~'
[vagrant@localhost ~]$ sudo yum upgrade $(rpm -qf $(man -w 1p sh))
+++ man -w 1p sh
++ rpm -qf /usr/share/man/man1p/sh.1p.gz
+ sudo yum upgrade man-pages-3.22-20.el6.noarch
Loaded plugins: fastestmirror, security
Setting up Upgrade Process
Loading mirror speeds from cached hostfile
* base: mirrors.evowise.com
* extras: centos.sonn.com
* updates: mirror.scalabledns.com
No Packages marked for Update
++ printf '\033]0;%s@%s:%s\007' vagrant localhost '~'
[vagrant@localhost ~]$
(相关说明:我可以在哪里查找 2003 版和 2016 版之间到底发生了什么变化吗?)
答案1
手册页描述了系统的实际功能,而不是操作系统问世 N 年后标准机构如何改变标准。如果 Red Hat 选择随其操作系统提供 POSIX 2003 手册页,我认为这意味着这是最接近他们所提供的 POSIX 标准。
我会保留操作系统提供的 POSIX 手册页,但是下载当前版本,将它们安装在其他地方/usr/local/linux-man-pages/share/man
,然后将该目录放入您的MANPATH
.
如果您将p
页面重命名为具有其他标签(例如pc
“POSIX current”),您可以将它们与操作系统提供的页面分开查询。例如,您可以使用类似的工具mmv
:
$ mmv 'man1p/*.1p.gz' 'man1p/#1.1pc.gz'
$ mv man1p man1pc
... do the same for man 2p, etc ...
$ man ls # shows GNU ls page
$ man 1p ls # shows OS-provided POSIX ls page
$ man 1pc ls # shows current POSIX ls page
删除与操作系统提供的手册页冲突的非 POSIX 手册页,或者如果您还希望能够引用当前特定于 Linux 的手册页,则对它们进行类似的标记。lc
例如,您可以使用“Linux current”。
答案2
POSIX.1-2008 标准的变更历史记录包含在基本原理卷中。
这基本定义的基本原理包含指向更改历史记录的链接系统接口和壳牌和公用事业公司。
每个条目(实用程序或接口)还有一个变更历史部分朝向各个条目的底部。
完整的标准可以在这里找到:http://pubs.opengroup.org/onlinepubs/9699919799/nframe.html
答案3
用于 grep 的 HTML 压缩版本
- http://pubs.opengroup.org/onlinepubs/9699919799/download/
- http://pubs.opengroup.org/onlinepubs/9699919799/download/susv4tc2.zip
当您开始想要 grep 查找内容而无需支付 PDF 费用时,这些功能非常有用。