どさにっきLTE 〜2013年2月中旬〜

by やまや
<< = >>

2013年2月11日(月) 建国記念の日

伊豆へ

_ なんかちょくちょく来てるような気がしてたが実は6年ぶりだったらしい。ここのところずっと寒いところに出かけてたから、あったかすぎて拍子ぬけする。河津桜が満開になるのはまだ先だけど、それでもすでにちらほら咲きはじめてるし、菜の花も何ヶ所かで咲いてるところを見た。こういう気候のいいところでぼけーっと温泉につかってると気分だけはもう春だな。

_ 石廊崎のちょっと西にある展望台から。なんか名のある景勝地のような気がするが、なんて名かはわからん。

河津桜ではないようだが早咲きの種類の桜の、その中でもさらに一本だけ狂い咲きでひと足はやく満開になってしまった木にメジロが。
静岡名物「この先いたわり不要」。写真には撮ってないけどもう1ヶ所でも発見。

↓前回6年前に発見したときの写真を発掘してみた。ついでに 半年前に発見したもの


2013年2月20日(水)

無題

_ あれ、MacOSX の /bin/sh は bash だとばかり思ってたんだけど。

-r-xr-xr-x  1 root  wheel  1371712 Feb 21  2012 /bin/sh*
-r-xr-xr-x  1 root  wheel  1371648 Feb 21  2012 /bin/bash*
symlink じゃないし、そもそもファイルサイズが違ってた。どっか動作が違うのかな。ちなみに Lion。Mountain Lion は知らん。

_ …わかった。

$ sh -c 'echo -e \\0101'
-e A
$ bash -c 'echo -e \\0101'
A
echo でエスケープされた文字を -e なしで理解するかどうかの違いのようだ。あと、bash は非対話モードで起動されると alias が展開されないけど、sh は対話モードのときと同様に展開されるっぽい。shopt でいうと、xpg_echo と expand_aliases の値が異なる。ビミョーな違いだなぁ。この程度ならわざわざ別バイナリを用意しなくてもいいのに。というか、sh と bash を別に用意するぐらいなら、sh の方は bash 拡張のないふつーの sh にしておいてくれればいいのに。

_ ということで、bash で hello world。

_____=${#_____};__=${#_____};___=...;___=${#___};______=$((___+__+__));____=`($(($__#$__)))>&/???/??/$__`;____=${____##*:};_______=${____:$__$______:__};_________=${____:______:__};______=${____:$___$___:__};________=${____::__};$_______${____:$((___*___+___*___)):__}${____:$__$___:__}$______$________-$_______$________\\$_____$__$__$_____$_______$_________$_________$______,$________\\$_____$__$((___**___))$______${____:$__$_____:__}$_________${____:$(($__$_____-$___)):__}!
OSX では上記の理由によりよけいな -e が出力されるので sh ではなく bash として実行してくださいませ。

_ かいせつ。記号だけで hello world。ここでいう「記号だけ」というのは、英数字がないのはもちろん、空白、改行も含まないということ。それから、 これまでの記号スクリプトは外部コマンドを利用していたけど、これは build-in だけで記述している。スクリプト中に `...` が見えるけど、サブシェル経由で不正な文を実行しているだけで外部コマンドは呼んでいない。不正な文の実行によって得られるエラーメッセージを利用しているが、そのエラーを変数に格納するための >& というリダイレクトが bash、zsh、tcsh でしか使えず、そのエラーメッセージが実装依存なので今回は bash 専用。ロケールにも依存するけど、手元の環境では日本語に翻訳されてないエラーを選んで発生させてるので LANG=ja_JP ならとりあえず動くだろう。


<< = >>
やまや