日本語版 Windows だと ping とか traceroute とかが軒並み SJIS (と言うか CP932 ?)出力なので UTF-8 環境で使ってる cygwin だと片っ端から文字化けして困る。
以下のようなラッパーを書いて、目的のコマンド名にリネームなりシンボリックリンクなりしておくと幸せになれる
sjiswrapper.iconv
使い方は、パスの通ったところで以下のようにシンボリックリンクしておけば良い。
参考:
以下のようなラッパーを書いて、目的のコマンド名にリネームなりシンボリックリンクなりしておくと幸せになれる
sjiswrapper.iconv
#!/bin/sh CMD="${0##*/}.exe" ("$CMD" "$@" 3>&1 1>&2 2>&3 | iconv -f CP932 -t UTF-8 ) 3>&1 1>&2 2>&3 | iconv -f CP932 -t UTF-8sjiswrapper.nkf
#!/bin/sh CMD="${0##*/}.exe" ("$CMD" "$@" 3>&1 1>&2 2>&3 | nkf -Sw ) 3>&1 1>&2 2>&3 | nkf -Sw標準エラー出力もフィルタする必要があるので、標準出力と標準エラー出力の swap を 2 回行いそれぞれにフィルタかけてるところがミソ
使い方は、パスの通ったところで以下のようにシンボリックリンクしておけば良い。
ln -s sjiswrapper.iconv ping ln -s sjiswrapper.iconv tracert ln -s sjiswrapper.iconv nslookup
参考:
- UNIXの部屋 コマンド検索: リダイレクト
- ブックマクロ開発に / 2011-08-11: Cygwin(msys)のUTF-8環境便利にするコマンドラッパー
- bashでパイプとかでつないでバッファされちゃう時
タグ
コメントをかく