ttt

getttyent

sl

2008-06-07 09:45:15 | 日記・エッセイ・コラム

スラッシュドットでslに触れているのを見かけて、久々にslを走らせて見たくなりました。

FreeBSDだと昔からportsになっていて、ports/games/sl にあります。

http://www.freebsd.org/cgi/cvsweb.cgi/ports/games/sl/

なんだかよくわかりませんが、WITH_PERSISTENTというオプションがあるので、

make WITH_PERSISTENT=yes

でビルドしてみました。

slというのは、lsコマンドをミスタイプしてslと入力したときに実行されてしまうわけで、キーボード矯正コマンドとか呼ばれてました。時代の違いもあるでしょうが、ある時期、大学でUnix系OSを使ったことのある人は、slをたいてい知ってるんじゃないでしょうね。初めてのときは何が起きたかわからず、lsをslとミスタイプしたことになんて気がつかないですよね…

さっそくミスタイプしてみましょう。

200806071
s、l、Enterキー、と。

200806072
なんだか昔と違う。踏み切り?

200806073
SLがやってきた。

200806074
長すぎる・・・


200806075
やっと通過した。


200806077
反対方向からもやってきました。ギャフン。

lsにたくさんオプションがあるのと同じように、slにもたくさんオプションがあるので、slをはじめて見た人は、ぜひおためしください。

私がはじめて見たslは、たぶん、Sun3/60というワークステーションで実行したもので、OSは、SunOS3.5だったんじゃないかと思うのですが、そのころのはもっとシンプルなものでした。

そのあと、おそらく、ネットニュースのfj.sourcesに投稿されたのを見たんですが(WWW以前の時代のことです)、それが、今、FreeBSDのportsにもなっているもので、これのようです。

http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/

SLが空を飛ぶようになったり豪華になったもので、私がよく覚えていたのは、こっちの方ですね。28800bpsのモデムでログインしているときにslを実行してしまうと、本当に苦痛でした。

私はつい先ほどまで知らなかったのですが、その後、さらに無駄に豪華に踏み切りがついたバージョンで、それがこちら。

http://www.izumix.org.uk/sl/

portsで、WITH_PERSISTENT=yesで追加されるものです。

control+cとかkeybord interruptのキーを押しても、ムキー、これ途中で止められないのか!
とか思うかもしれませんが、TTYのquitで止められますね。
stty allしたときに表示される、quitのことです。

私の設定では

% stty all
speed 9600 baud; 35 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -ignbrk
        brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
        -dtrflow -mdmbuf
discard dsusp   eof     eol     eol2    erase   erase2  intr    kill
^O      ^Y      ^D      <undef> <undef> ^H      ^H      ^?      ^U
lnext   min     quit    reprint start   status  stop    susp    time
^V      1       ^\      ^R      ^Q      ^T      ^S      ^Z      0
werase
^W

なので、intrは「^\」、control+\(コントロールキーを押しながらバックスラッシュ(¥マーク)のキー)です。

余談ですが、私の設定では、interruptは、control+Cではなくて、「^?」になっています。これ、Deleteキーのことです(厳密にはちょっと違って、ターミナルエミュレータによっては、Deleteキーを押しても、^?のコードを発生してくれないものがある)。

最初に覚えたUnix環境のデフォルト設定がそうなっていたので、いまだに、control+Cではなくて、Deleteキーを使っています。慣れてしまった、という点と、~/.cshrcを使いまわしするから、という理由が大きいですね。.cshrcには

stty intr '^?'

が入ってます。

プログラムを止めたいという状況は、とてもあわてていてすぐに止めたい!というケースもあるので、control+Cで2つのキーを押さなければならないよりは、Deleteキー連打!!!で即座に発動できてよろしいんじゃないかと、個人的には思っています。

さらに余談ですが、昔の8bitパソコン時代、シャープのX1では、プログラムを中断させるときのキーは、たしか、SHIFTキーを押しながらBREAKキーを押すようになっていました。一方、NECのパソコンPC-8001、PC-8801シリーズなどでは、STOPキーだけで止めるようになっていました。

NECのPCは昔からメジャーで、X1はわりとマイナーだったのですが、電気屋さんの店頭のパソコンをいじくってたりするとき(昔はそういうふうにパソコン、マイコンに触れてたんです!笑)、SHIFT+BREAKを知らない人が多くて、近くで見ていて、あ~この人はPCな人かな…なんて思ったものです。

これを書いているときに、本当にSunOS3.5だったのかなぁ?と気になり調べている途中で思い出したものが、FreeBSDの/usr/share/misc/bsd-family-treeというファイルです。

FreeBSDのインストール時に指定したオプションによって、そのファイルはインストールされていないかもしれませんが、cvswebで見られます。

http://www.freebsd.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree

わりと頻繁に更新されているようで、現在の最新版はこちら。

http://www.freebsd.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree?rev=1.120;content-type=text%2Fplain

BSD系Unix OSの系統樹なんですが、これもslと同様にキャラクタベースで描かれていて、なんか無駄に豪華です。いったいどうやってこのテキストを編集しているんでしょうか。viだったら笑えます。


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。