$ 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 件のコメント:
コメントを投稿