スラッシュドットでslに触れているのを見かけて、久々にslを走らせて見たくなりました。
FreeBSDだと昔からportsになっていて、ports/games/sl にあります。
なんだかよくわかりませんが、WITH_PERSISTENTというオプションがあるので、
make WITH_PERSISTENT=yes
でビルドしてみました。
☆
slというのは、lsコマンドをミスタイプしてslと入力したときに実行されてしまうわけで、キーボード矯正コマンドとか呼ばれてました。時代の違いもあるでしょうが、ある時期、大学でUnix系OSを使ったことのある人は、slをたいてい知ってるんじゃないでしょうね。初めてのときは何が起きたかわからず、lsをslとミスタイプしたことになんて気がつかないですよね…
さっそくミスタイプしてみましょう。
s、l、Enterキー、と。
☆
なんだか昔と違う。踏み切り?
☆
SLがやってきた。
☆
長すぎる・・・
☆
やっと通過した。
☆
反対方向からもやってきました。ギャフン。
lsにたくさんオプションがあるのと同じように、slにもたくさんオプションがあるので、slをはじめて見た人は、ぜひおためしください。
☆
私がはじめて見たslは、たぶん、Sun3/60というワークステーションで実行したもので、OSは、SunOS3.5だったんじゃないかと思うのですが、そのころのはもっとシンプルなものでした。
そのあと、おそらく、ネットニュースのfj.sourcesに投稿されたのを見たんですが(WWW以前の時代のことです)、それが、今、FreeBSDのportsにもなっているもので、これのようです。
SLが空を飛ぶようになったり豪華になったもので、私がよく覚えていたのは、こっちの方ですね。28800bpsのモデムでログインしているときに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
わりと頻繁に更新されているようで、現在の最新版はこちら。
BSD系Unix OSの系統樹なんですが、これもslと同様にキャラクタベースで描かれていて、なんか無駄に豪華です。いったいどうやってこのテキストを編集しているんでしょうか。viだったら笑えます。