rcでtelnet

UNIX漢はzshを使うらしいが,Plan9の漢はrcを使う(というか老若男女,選択肢がないが).zshは究極のシェルとか言われるだけあって,高機能だが,rcもある意味負けてはいない.

例えば,/sources/contrib/fgb/rc/telnetはrcで書かれたtelnetクライアントだ.シェルスクリプトで,しかもたったこれだけで書けてしまうのだ.

#!/bin/rc

clonefile=/net/tcp/clone

if(! ~ $#* 2) {
	echo Usage: telnet ip port >[1=2]
	exit usage
}

<[4] $clonefile {
	netdir=`{basename -d $clonefile} ^ / ^  `{cat /fd/4}
	echo connect $1!$2 >$netdir/ctl || exit 'cannot connect'
	cat $netdir/data & 
	cat >$netdir/data
}

もちろん,これはシェルというよりもOSが強力だから可能になった芸当である.ここでやっていることは,rcでエコークライアントで書いたこととだいたい同じだ.zshでもネットワークプログラミングできそうだが,こんなに簡単には書けないだろう.あくまでシェルはOSのラッパー,糖衣なのである.