Macのターミナルでサーバごとに異なる文字エンコーディングで接続する方法
Macのターミナルでは、[環境設定 > 設定 > 詳細 > 文字エンコーディング]で任意の文字エンコードを指定できます。
が、ターミナル全体でグローバルな1つの設定しかないので、同時に文字コードの異なる複数のサーバに接続するときにイライラすることになります。
ウィンドウとかタブを切り替えるたびに、環境設定をいじるとかありえません。
で、結構イライラがたまってきてたので、cygwinで使ってるcocotみたいなのがないんかな、と探してみたらすぐみつかりました。
cocotとは
端末(tty)とプロセスの間に割り込んで、文字コード変換を行うツール
です.これは非常に便利です.
MacPortにはあるのでsudo port install cocot
とすれば,いい.
まだまだEUC-JP環境はありますし,いれておくといいでしょ.
http://newapplesho.blogspot.com/2008/05/cocot.html
Macportsにはいってるそうです。素敵すぎる。
というわけで早速導入してみました。
上記の通りportコマンドを実行してインストールした後、Macのターミナル設定はUTF-8のまま
mac$ cocot ssh <EUC-JPなサーバアドレス> server$ man man
とかやってみると、文字化けせずに表示されました!
なお、以下のようなオプションがあります。-tとか-pを設定すれば違う文字コード環境でも使えます。
$ cocot -h Usage: cocot [OPTIONS] [--] COMMAND ARG1 ARG2 ... Options: -o LOGFILE logging all output of command. -a append log file. -t TERM_CODE character code in terminal. (default is UTF-8) -p PROC_CODE character code in command process. (default is EUC-JP) -i ignore ISO-2022-JP escape sequence. -n no conversion. (like script(1)) -h, --help show this message. -v, --version show version.
後は、いちいち意識しなくて良いように、
$ cat ~/bin/my_server #/bin/sh cocot ssh <ホスト名 or IPアドレス>
上記のようなサーバ接続スクリプトを書いて、実行ビットを立てて、コマンドパス(ここでは~/binを想定)にいれておけば、
$ my_server
と実行するだけで適切な文字コードで接続できます。
更に文字エンコード種別ごとに
$ cat ~/bin/ssh_eucjp #/bin/sh cocot -t UTF-8 -p EUC-JP ssh `basename $0` $ cat ~/bin/ssh_sjis #/bin/sh cocot -t UTF-8 -p SJIS ssh `basename $0`
と、ベースのスクリプトを作っておいて、
$ ln -s ~/bin/ssh_eucjp ~/bin/my_server $ ln -s ~/bin/ssh_sjis ~/bin/your_server ※/etc/hostsなどで、"my_server"という文字列で対象サーバにアクセスできるのであればホスト名のみでOK。 ※そうじゃなければ、FQDNを指定しましょう。
などとシンボリックリンクをはっておけば、より快適なターミナル生活を送れるでしょう。
快適すぎる!!