buq’s blog

覚えておきたいけど覚えておけなさそうなことを書きます?

ipython notebook のファイルをダブルクリックで開く:訂正記事

ipython notebook のファイルをダブルクリックで開く方法について以前かいた記事のコードが大幅に間違っていたので訂正します.当該ページは訂正済み.

以前下記の記事を書きました: buq.hateblo.jp

ここで,Automatorシェルスクリプトとして下記のものを使うと書きましたが, この前半(8902ポートの使用状態をみて,必要ならipythonのサーバをたてる) が甚だしく間違っていました.

これで行けると思ってしまったのは,サーバがたった状態で動作を確認していたからです.戸惑わせてしまった方,申し訳ありません😩

正しいコードはたとえば下記のようなものになります:

PORTSTAT_IPYNB=`netstat -tln | grep "8902" | wc -l`
if [ "$PORTSTAT_IPYNB" -eq "0" ]
  then
    bash -cl 'ipython notebook / --no-browser --port=8902 & sleep .5' > /dev/null 2>&1 
    sleep .5
fi
for f in "$@"
do
  open http://localhost:8902/notebooks"$f"
done

解説: 1. PORTSTAT_IPYNB=`netstat -tln | grep "8902" | wc -l` 8902 の使用状態を調べる.0だったらipythonサーバがたっていないとみなして立てる. 2. bash -cl 'ipython notebook / --no-browser --port=8902 & sleep .5' > /dev/null 2>&1Automator から直接叩くと怒られるので,bash を立ち上げて,その中で ipython をたちあげる.> /dev/null 2>&1 はなくても動くが,その場合なぜかAutomatorが「プロセスが終わらないよ〜」とずっと歯車アイコンをくるくるさせる.それがうっとおしいので > /dev/null 2>&1 で黙らせる. 参考;Automator workflow "run shell script" keeps run... | Apple Support Communities