$ cat /usr/local/bin/man
#!/bin/sh
# http://www.netfort.gr.jp/~tomokuni/lms/shell/text/shell3.txt
# 1.2 標準エラー出力のみをパイプ => (例 3) => を適用
BUF="`/usr/bin/man $@ 3>&1 1>&2 2>&3 3>&-`"
RET="$?"
if [ -n "$BUF" ]; then
echo "$BUF" | nkf 1>&2
if [ "$RET" -eq 0 ]; then
echo
fi
fi
exit "$RET"
以前修正したところ、Xの環境の場合にエラーが出るので man に -nls をつけていたのだが、再度 man に nls をつけて試したところ、エラーが出なくなっていました。
nkf が更新されたためだと思われます。
$ eix ^nkf$
[I] app-i18n/nkf
Available versions: 2.0.7 ~2.0.7-r1 {linguas_ja perl python}
Installed versions: 2.0.7(10時47分42秒 2009年11月29日)(linguas_ja perl python)
Homepage: http://sourceforge.jp/projects/nkf/
Description: Network Kanji code conversion Filter with UTF-8/16 support
また distcc を使う際 native を使うと emerge は off にしますが、それを回避するためのコマンドの例です。
http://d.hatena.ne.jp/tmatsuu/20090110/1231557035
$ cat /usr/local/bin/gcc-opt
#!/bin/sh
CC="gcc"
OPT="-march=native -O2 -pipe -fomit-frame-pointer"
TMP=$@
if [ "$TMP" != "" ]; then
OPT=$TMP
fi
NATIVE=$(echo | ${CC} -E -v ${OPT} - 2>&1 | grep cc1)
NOARCH=$(echo | ${CC} -E -v - 2>&1 | grep cc1)
for native in ${NATIVE} ; do
FOUND=0
for noarch in ${NOARCH} ; do
if [ "${native}" = "${noarch}" -a "${native}" != "${OPT}" ] ; then
FOUND=1
break
fi
done
if [ ${FOUND} -eq 0 ] ; then
echo -n "${native} "
fi
done
echo
英語のmanのコマンドを追加します。
alias enman='LANG=C LC_ALL=C man'
追記: /usr/local/bin/man が必要な環境は下記になります。
lzmaは無くてもいいです。nlsがあると man, man -h がeuc-jpで表示されます。
$ emerge -pv man ... [ebuild R ] sys-apps/man-1.6f-r3 USE="lzma nls" 0 kB ...
euc-jpとutf8の内容を一旦euc-jpにしてgroffに渡して処理してもらい、その結果をutf8にしています。
$ diff -u /etc/man.conf.old /etc/man.conf ... -JNROFF /usr/bin/groff -Tnippon -mandocj +JNROFF nkf -e | LANG=ja_JP.EUC-JP LC_ALL=ja_JP.EUC-JP /usr/bin/groff -Tnippon -mandocj | nkf -w ...
文字コードの設定です。
$ echo $LANG $LC_ALL ja_JP.UTF-8 ja_JP.UTF-8
エラー出力だけnkfを通したい場合に/usr/local/bin/manを利用します。
$ /usr/bin/man 2>&1 | php -r 'mb_language("ja");print mb_detect_encoding(file_get_contents("php://stdin"), "auto")."\n";'
EUC-JP
$ /usr/bin/man -h 2>&1 | php -r 'mb_language("ja");print mb_detect_encoding(file_get_contents("php://stdin"), "auto")."\n";'
EUC-JP
$ /usr/bin/man 2>&1 | nkf -w
どのマニュアルを表示しますか?
$ man
どのマニュアルを表示しますか?
$ which man
/usr/local/bin/man
つまり man関連の日本語manが必要ない場合は -nls でインストールすれば必要ないです。man, man -h のエラー出力は英語になります。
もしくは man, man -h のエラー出力が文字化けしても問題なければ必要ないです。
もしくは euc-jp の環境であれば必要ないです。JNROFFの設定は戻します。戻さずに最後の-wを-eにしてもいいかもしれません。
sys-apps/groff-1.20.1-r1 が euc-jp を処理できないかもしれません。マスクしています。
$ eix groff
[I] sys-apps/groff
Available versions: 1.19.2-r3 ~1.20.1 [m]1.20.1-r1 ~1.20.1-r2 {X cjk examples linguas_ja}
Installed versions: 1.19.2-r3(11時35分58秒 2009年11月29日)(X cjk)
Homepage: http://www.gnu.org/software/groff/groff.html
Description: Text formatter used for man pages
$ grep groff /etc/portage/package.mask
=sys-apps/groff-1.20.1-r1
0 件のコメント:
コメントを投稿