Finder から指定ディレクトリに移動したときに自動的に jupyter notebook を起動させるようなフォルダアクションを追加した話
はじめに
標準の Finder から、いま現在開いているフォルダをターミナルで開くのは面倒臭い。
それに加えて毎度同じコマンドをターミナル上で実行するなら、それも含めて自動化しよう。
今までやっていたこと
フォルダに新規ターミナルタブ
🍎→「システム環境設定…」→「キーボード」→「ショートカット」→「サービス」と辿って、
「フォルダに新規ターミナルタブ」という項目にチェックを入れるとフォルダを右クリックしたときのサービスが増える。
それをクリックすることでターミナルを開くことができる。
これで開いたターミナルは右クリックしたフォルダ内をカレントディレクトリにしてくれているので、
$ jupyter notebook
と実行すると、このフォルダをルートにした作業環境が構築される。
今回やってみたこと
フォルダアクション設定…
毎度 jupyter notebook を実行するフォルダは決まっているので、
フォルダアクションで、フォルダを開くと勝手にそこまでやってくれるようにした。
フォルダアクションとは
AppleScript というけったいなスクリプトを
/Library/Scripts/Folder Action Scripts
に用意しておき、
フォルダ毎にそのスクリプトを対応させておくことで所望の動きをさせられる。
Apple 社のサンプルがあらかじめいくつか用意されている。
AppleScript
macOS に標準で入っているスクリプトエディタというアプリケーションで書く。
今回は
- フォルダを開くことをトリガに
- そのフォルダのパスを取得して
- ターミナルを開きそこに
cd
し -
jupyter notebook
と実行する
という簡単なお仕事を自動化する。
以下がそのスクリプト。
on opening folder this_folder
set pPath to POSIX path of this_folder as string
tell application "Terminal"
do script "cd " & pPath
activate
do script "jupyter notebook" in window 1
end tell
end opening folder
注意事項
POSIX path of
と入れないとcd
できるような文字列がpPath
に格納されない。
in window #
のないdo script
を実行すると新たなターミナルウィンドウが表示される。
in window #
で 1 個以上開かれているターミナルのウィンドウを最近にactivate
された順に指定できる。
Folder Action Scripts フォルダ
このスクリプトを
/Library/Scripts/Folder Action Scripts
に置いておくと「フォルダアクション設定…」で選択できるようになるのだが、
いったんどこか適当な所に保存し、
その後、sudo 権限を使って
/Library/Scripts/Folder Action Scripts
に移すと良い。
フォルダアクション設定…
適当なフォルダを右クリックして「フォルダアクション設定…」をクリックすれば
「関連付けるスクリプトを選択 : 」という項目が出てくるので、先ほど保存したスクリプトを選ぶ。
これで、そのフォルダを開く度に jupyter notebook が自動で実行され面倒が省ける。
おわりに
ちょっとフォルダの中身を見たいだけなのにいちいちスクリプトが実行されては嫌なので、
Finder はリスト表示かカラム表示にすると良いです。
Author And Source
この問題について(Finder から指定ディレクトリに移動したときに自動的に jupyter notebook を起動させるようなフォルダアクションを追加した話), 我々は、より多くの情報をここで見つけました https://qiita.com/BlueTofuchic/items/037199e0435fb2621d31著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .