3 Mac をスリープさせるエイリアスを作る (引用符の入れ子とか)

某深夜。 今やっている処理を終わった後に Mac をスリープさせたい、と思った。 Mac をスリープさせるコマンドを調べたら、簡単に見つかった。
ターミナルで次のコマンドを実行するとスリープする
osascript -e 'tell application "Finder" to sleep'
これは覚えられそうにない…


そういえば、昔使っていたある OS には、 zzz というコマンドがあったっけ (とても覚えやすい)。 そうだ、上のコマンドを zzz というエイリアスにしよう。

ところでエイリアスは普通

alias 自分の選んだ名前='コマンド'
という書式で定義する。 今の場合は、 コマンドの中にシングル・クォート ' が含まれているので、 シングル・クォートの入れ子になってしまう。 以前やったときは、 シングル・クォートの入れ子をどうやって解決するか分からなかった。

というわけで次のようにすれば良い。
alias zzz='osascript -e "tell application \"Finder\" to sleep"'
これでうまく行った。

以上は、bash の場合だが、tcsh の場合はどうするか。       
これはうまく行かない
alias zzz 'osascript -e "tell application \"Finder\" to sleep"'
こうすると定義そのものは通るけれど、実行したときにエラーになる。

シェル・スクリプトにするという手はあるけれど、 久しぶりなので時間を投入する気になった。 “nested single quotes” で調べ直して見た。 https://stackoverflow.com/questions/1250079/how-to-escape-single-quotes-within-single-quoted-stringsというWWWページが見つかった。そこに書いてあることを適用すると
alias   zzz   'osascript -e '"'"'tell application "Finder" to sleep'"'"
となる。確かにうまく動いた。うわぁ、こんなことしないといけないのか。 解説はそのページに任せる。



桂田 祐史