cygwinでWindowsのコマンド(ipconfig等)の文字化けを解消する

WindowsのコマンドをCygwin上で実行すると文字化けしてしまいます。これはWindowsコマンドの出力の文字コードがShift-JISであるのが原因なので、これをUTF-8に変換してあげれば解消できます。

変換にはnkfコマンドを使います。cygwinのパッケージにはないので、自分でソースダウンロードしてコンパイルするか、私がコンパイルした物でよければ、これnkf(2.1.2)をダウンロードして、/usr/bin にコピーしておいてください。

あとは、以下のように文字化けするコマンドを変換するスクリプトを~/.bashrc などに記述してcygwin起動時に読み込まれるようにしておきます。下記例ではipconfig, route ,netstat コマンドを変換対象にしていますが、他のコマンドも変換したいならば、WINCMDS変数に変換したいコマンドを追加してください。

WINCMDS="ipconfig route netstat"
for i in $WINCMDS; do
    alias $i="wincmd $i"
done

function wincmd() {
    local CMD=$1
    shift
    ($CMD $* 2>&1 | nkf -w | dos2unix) 2>&1 | nkf -w | dos2unix 1>&2
}
タイトルとURLをコピーしました