コマンドのPOSIX仕様のみを表示する man コマンド、 pman (ピーマン)を作りました。
スクリプト
#!/bin/sh
# Manual for POSIX
# requirements: w3m
usage() {
cat <<- EOF
Usage: $0 [entry]
EOF
}
# Check conditions before executing
command -v w3m &>/dev/null || { echo "w3m required."; exit 1; }
[ $# -eq 0 ] && { usage; exit 1; }
# Variable definition
cols=$(stty size | cut -f2 -d\ ) # ** "stty size" is not POSIX **
url="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/$1.html"
# Search and display manual
w3m -M -cols ${cols:-80} -no-cookie "$url" | less
上の内容で pman というファイルを作ったらパス配下において
chmod a+x /path/to/pman
動作
$ pman awk などのように使います。

カラクリは非常に簡単で、 OpenGroupが運営しているPOSIXリファレンス(https://pubs.opengroup.org/onlinepubs/9699919799/)の各コマンドページをリクエストして表示しているだけです。
pman はCLIブラウザアプリケーションの w3m を使用しています。
最初は curl や wget を考えましたが、残念ながら "Accept: text/plain" ヘッダーをつけたり .txt ファイルを探してもダメだったので、HTMLをCLI向けに解釈してくれる w3m を採用しました。
元々POSIXリファレンスサイト の表示がマニュアルらしくなっているのも相まって、いかにも普段叩いている man っぽい表示になっていますね。
w3m は通常横幅いっぱいに表示してくれますが、より man のページングに近づけるために less を通すと横幅の文字数が固定されてしまうため、 stty コマンドの出力から行幅を抽出してパラメータに渡しています($colums 変数)。
ただここはPOSIXではないので要注意(一応GNUとBSDで確認してます)。
まとめ
これでPOSIXコマンドの実装依存に悩まされる機会が少しでも減りますように…!

コメント