Macでシェルスクリプトの実行にハマる。と、Dockの殺し方。 [MacOSX]
シェルスクリプトのファイルをダブルクリックで実行したい、と考える人はたくさんいるようで、ググったら
http://www.sra.co.jp/people/h-asaoka/study/Mac/sh2command/index.html
が出てきて、やったんだけど、20分ぐらいハマった。でも出来た。ファイルエディタで新規作成がガンだった。
miでシェルスクリプトらしき文字列を打ち込んだhoge.commandファイルを作成。
その後、
chmod a+x hoge.command
で、ダブルクリックで実行。動かない。何が悪いのか。
実はファイルの作り方がダメだった。miで作るとシェルスクリプトとして実行できなくなっちゃうのだった。それは、ターミナルからコマンドラインで動かそうとして、動かなかった事で確認できた。何だろう、この仕様わ。
コマンドラインで、viとかリダイレクトでファイルを作って実行する分には問題ない(当たり前)。スクリプトファイルを、miで新規作成するとダメ。でも、コマンドライン上でファイルを作った後、miで編集して保存する分には何も問題ない。ファイルを作る時にコマンドラインから行わないとダメみたいだ。
しかし、いまいちMacのファイルの扱いが分かんないんだよね。ううむ。拡張子以外のファイルの起動アプリを選択する事が出来るのがガンになっていると思われ。このファイルシステムの変な習慣はこの際省いていただきたい、MacってUNIXなんだろ? Mac OSX以前の悪しき慣習は捨てて欲しい、と思うのだが…。
なんでそんなに、コマンドラインの作業をお手軽に実行したいかと言うと、Dockを再起動しないと、F8〜F12キーに割り当てられている、Exposéとかが使えなくなってしまうから。前にも書いたんだけど、アクティビティモニタからDockのプロセスを探し出して選んで、「プロセスを終了」ボタンを押して、ダイアログの終了ボタンを押して、Dock再起動という、非常に面倒くさい作業を避けたかったから。
単なるボタン一発機能(Exposéなど)でデスクトップを見るだけのために、GUIでいちいち面倒なDockプロセスの再起動を行うのは作業的に本末転倒である。というか、AppleがきちんとDockを作ってないだけなんだけど、一応バグを避ける方法がわかったから、どうにかしてお手軽な方法を見いだしたかったのでした。
ファイルの中身としては、ただ
killall Dock
と書いただけです。エイリアスをDockに登録したら、クリック一発でDockプロセスが死んで、Dockが再起動します。ダブルクリックすら面倒な人には打ってつけ。デスクトップにごちゃごちゃ置く派としては、ものすごくいい改善であった。Exposéとかの機能がすぐ死んで困ってる人にはオススメ。
shebang(#!)が無くても、chmodで実行可能にしていれば動くよ。
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_%28Unix%29
シバンって読むのね。she bangっていうから、彼女は一発ヤル、という意味だと思ってた。
コマンドラインとかが嫌いな人はこっちでもいいと思う。
http://blog.goo.ne.jp/oko-bou/e/e35a790943fecb834c154bc814556101
http://blog.goo.ne.jp/oko-bou/e/b6e4bbec5b4c18ea48d206704dfdd8a0
ただAutomator使うのって重くないですか? やたら何度も使うから軽い方が正義だと感じる。いろいろ重いのが嫌な方は是非この方法で行くのがいいと思われます。
http://www.sra.co.jp/people/h-asaoka/study/Mac/sh2command/index.html
が出てきて、やったんだけど、20分ぐらいハマった。でも出来た。ファイルエディタで新規作成がガンだった。
miでシェルスクリプトらしき文字列を打ち込んだhoge.commandファイルを作成。
その後、
chmod a+x hoge.command
で、ダブルクリックで実行。動かない。何が悪いのか。
実はファイルの作り方がダメだった。miで作るとシェルスクリプトとして実行できなくなっちゃうのだった。それは、ターミナルからコマンドラインで動かそうとして、動かなかった事で確認できた。何だろう、この仕様わ。
コマンドラインで、viとかリダイレクトでファイルを作って実行する分には問題ない(当たり前)。スクリプトファイルを、miで新規作成するとダメ。でも、コマンドライン上でファイルを作った後、miで編集して保存する分には何も問題ない。ファイルを作る時にコマンドラインから行わないとダメみたいだ。
しかし、いまいちMacのファイルの扱いが分かんないんだよね。ううむ。拡張子以外のファイルの起動アプリを選択する事が出来るのがガンになっていると思われ。このファイルシステムの変な習慣はこの際省いていただきたい、MacってUNIXなんだろ? Mac OSX以前の悪しき慣習は捨てて欲しい、と思うのだが…。
なんでそんなに、コマンドラインの作業をお手軽に実行したいかと言うと、Dockを再起動しないと、F8〜F12キーに割り当てられている、Exposéとかが使えなくなってしまうから。前にも書いたんだけど、アクティビティモニタからDockのプロセスを探し出して選んで、「プロセスを終了」ボタンを押して、ダイアログの終了ボタンを押して、Dock再起動という、非常に面倒くさい作業を避けたかったから。
単なるボタン一発機能(Exposéなど)でデスクトップを見るだけのために、GUIでいちいち面倒なDockプロセスの再起動を行うのは作業的に本末転倒である。というか、AppleがきちんとDockを作ってないだけなんだけど、一応バグを避ける方法がわかったから、どうにかしてお手軽な方法を見いだしたかったのでした。
ファイルの中身としては、ただ
killall Dock
と書いただけです。エイリアスをDockに登録したら、クリック一発でDockプロセスが死んで、Dockが再起動します。ダブルクリックすら面倒な人には打ってつけ。デスクトップにごちゃごちゃ置く派としては、ものすごくいい改善であった。Exposéとかの機能がすぐ死んで困ってる人にはオススメ。
shebang(#!)が無くても、chmodで実行可能にしていれば動くよ。
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_%28Unix%29
シバンって読むのね。she bangっていうから、彼女は一発ヤル、という意味だと思ってた。
コマンドラインとかが嫌いな人はこっちでもいいと思う。
http://blog.goo.ne.jp/oko-bou/e/e35a790943fecb834c154bc814556101
http://blog.goo.ne.jp/oko-bou/e/b6e4bbec5b4c18ea48d206704dfdd8a0
ただAutomator使うのって重くないですか? やたら何度も使うから軽い方が正義だと感じる。いろいろ重いのが嫌な方は是非この方法で行くのがいいと思われます。
2010-11-25 10:34
nice!(0)
コメント(6)
そういえば、プロセスの強制終了をKILLとしたのってなにが原点なんでしょうか・・・ UNIX?
ちなみにデスクトップはいつもすっきり派です。
by 7700 (2010-11-26 00:04)
かなり古いUNIXからあるんじゃないでしょうか。何の疑いも無くプロセス終了させるのは、UNIXカーネルのメモリ管理がカタいから出来た事なのかもしれません。リンク先にも無いし。
http://x68000.q-e-d.net/~68user/unix/unix-term-dic.html
sshとかはBSDが由来らしいですが、Linuxとかの他のOSでmanを見るときちんと、BSD General Commands Manualとか書いてあるので、最近の移植されたものについては、元々のOSのマニュアルから引いてくるみたいですね。killなんて古過ぎてその痕跡も無いんじゃないんでしょうか。なんかほとんど言ってる事が推定で申し訳ないですが。
でもなんでkill -9で強制終了なんだろう。-9なのでクイットで9とか覚えましたが、そのパラメータも由来が全然分からないですね。
by miff (2010-11-26 07:53)
魑魅魍魎とした世界ですよね。
そりゃ、未来人が原始のコンピュータ(IBM5100)を求めてタイムトラベルしてくるわけです。
by 7700 (2010-11-26 18:56)
あ、これ知らなかった。面白いっすね。
http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BB%E3%82%BF%E3%82%A4%E3%82%BF%E3%83%BC#.E3.82.BF.E3.82.A4.E3.82.BF.E3.83.BC.E3.81.AE.E4.BD.BF.E5.91.BD
フィクションならもうちっと煮詰めて虚言癖を発揮して欲しかった、と思います。マンガ「ほくらの」みたいに並行世界からエネルギーみたいなのを搾取されているってのを思い出した。フィクションは飛躍しすぎの方が面白い。どうせ飛躍しすぎな未来が待っていますからね。
UNIXの前からkillはあったかもです。いずれにしろコマンドはユーザーランドに含まれたんでしょうね。
http://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%89#OS.E3.81.AE.E6.AD.B4.E5.8F.B2
by miff (2010-11-27 06:00)
miで作ったら動かない・・・
参考になりました。
viで作ったファイルを確認したら改行コードがLF
miで作ったのを確認したらCR+LF・・・
LFで保存したら無事動きました。
ありがとうございました^^
by 管理人@最近涙もろすぎ>< (2011-04-20 16:23)
参考になってよかったです。確かに改行コードってのも、知らないとハマりますよね。Linuxだと改行文字が^Mとかなっているので気付くんですが、Macとかだと文字化けしてくれないかもしれないです。mi自体は秀丸とかサクラエディタ同様、優れたソフトですが、Mac自体が腐れた部分が往々にしてあるのが残念過ぎます。
by miff (2011-04-21 15:17)