【エイプリルフールは】シェル芸人専用シェル「gsh」、遂に完成しました。【もう終わったんや】
Tue Apr 1 00:01:20 JST 2014 (modified: Sat Sep 30 16:15:34 JST 2017)
views: 2739, keywords:どうでもいい,エイプリルフール,gsh,そんなもん作ってない,頭の中だだ漏らし この記事は最終更新日が7年以上前のものです。
2014年のエイプリルフールはもう終わりです。また会う日まで・・・
こんにちは。
かなり興奮して朝から鼻血が止まらないのですが、極秘で作っていた「シェル芸人専用シェル」が遂に完成しました。
その名も、「gsh(芸シェル)」です。アッーではありません業界用語です。
素晴らしい機能をほんの一部ですが、公開させてください。
コマンドは3個以上使わないとエラーが出る
シェル芸人なら普通、コマンドをパイプで五個以上は繋ぎますよね。最低でも3つは繋ぎます。ですので、パイプが2本無いとエラーが出る仕様にしました。
server:~ ueda$ cat /etc/passwd
-gsh: syntax error on your attitude
たとえファイルが見たいだけであっても、catを三つ接続して閲覧ください。
セミコロンと改行が使えない
シェル芸人は、ワンライナー、しかもすべてパイプで繋がった「真性ワンライナー」しか書きません。したがって、シェルの反応を数ナノ秒高めたほうがよいので、「;」と改行を使えないようにしました。これによりwhileやfor, caseなどの制御構文もシェルの機能から削除することができました。誰ですか先祖返りだとか言ってる人?えっ?トンプソンシェル?何それ?
server:~ ueda$ ls | while read f ; do echo $f ; done
-gsh: syntax error on your attitude
諦めてxargs使ってください。
vim, emacs, vi, ex, ed, more, lessを使おうとするとslが走る
Vimな私もシェル芸人的立場ではエディタはご法度。シェルの内部でエイリアスをslに貼ってエディタの使用を断固拒否するようにしました。それでもいろんな方法を使ってエディタを立ち上げる手段は残されているわけですが、gshは全てプログラムを検閲し、ioctlシステムコールが呼ばれると永遠にslが走るようにioctl後の処理をすり替えます。
captiveなインタフェースは悪。UNIX哲学の極北を貫きます。
スクリプトを拒否
スクリプトが実行されるときにシバンを検閲しており、シバンを発見すると嫌がらせをします。具体的には、自身から立ち上がったスクリプトにシバンを見つけると次のように出力し、即座に子のプロセスを全員殺します。
server:~ ueda$ ./script.bash
-gsh: scripting is considered harmful
スクリプトはhome下のゴミ。ワンライナーで全部済ませましょう。
組み込みコマンド「bash」
gshの組み込みコマンドに「bash」があります。「bash」は次のbashのコードと等価です。
:(){ :|: & };:
gshを使っていてあまりのモヒカン仕様にbashに逃げ戻りたくなっても、bashとは打たないようにしましょう。
他にも、zshがrm -rf *、shがtrue、cshとtcshがfalseコマンドに置き換わりますのでご注意ください。
ライセンス
gshは、存在しているならばWTFPLで配布、存在していないならば配布しないというシュレディンガー猫ライセンスで供与されます。
余談
あ、真面目にやっているコレは、正式な研究プロジェクトとして取り組むことになりましたので、こちらは嘘にならんようにがんばります!
シェル芸勉強会も今週末なのでよろしゅう。