コマンドの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コマンドの実装依存に悩まされる機会が少しでも減りますように…!