78
ターミナルで現在のFinderフォルダを開く

ターミナルをよく使うので、ターミナルとFinderの間で操作したいことがよくあります。例えば、ターミナルの現在のディレクトリをFinderで開きたい時があります。これは実はとても簡単です。open .(末尾のドットに注意!)と入力してReturnキーを押すだけです。するとFinderが起動し、適切なフォルダが開かれます。しかし、ほとんどの場合、ターミナルで現在のFinderフォルダを操作したいのです。この問題の解決策はそれほど単純ではありません。

数年前、macosxhints.com で、AppleScript を使ってドロップレットを作成し、cdターミナルで選択したフォルダをドラッグ&ドロップで開く方法を紹介するヒントを掲載しました。このドロップレットは、サイドバー(私の場合はサイドバーです)、Dock、その他お好きな場所に置いて、すぐにアクセスできるようにできます。それ以来ずっとこの方法を使っていて、とてもうまく機能しています。ただ、ターミナルでフォルダを開くたびにマウスでドラッグ&ドロップするのはちょっと嫌なんです。

10.4とAutomatorの出番です。Automatorの非常にシンプルなワークフローを使えば、Finderプラグインを作成できます。このプラグインを使えば、Finder内のオブジェクトをControlキーを押しながらクリックするだけで、ターミナルでそのオブジェクトに移動できます。ファイルを選択した場合は、そのファイルを含むフォルダが開き、フォルダを選択した場合は、そのフォルダ自体が開きます。コンテキストメニューなので、マウス操作が大幅に軽減され、とても便利です(ただし、サイドバーのドロップレットも引き続き使用しています)。

プラグインを作成するには、Automatorを開き、「ライブラリ」列の「Finder」エントリをクリックします。「アクション」列で「選択したFinder項目を取得」をクリックし、ウィンドウ右側の空白の作業領域にドラッグします。次に、「ライブラリ」列の「Automator」エントリをクリックし、「アクション」列から「AppleScriptを実行」エントリを作業領域にドラッグし、既に存在する「選択したFinder項目を取得」アクションの下にドロップします。

さて、いよいよ難しい部分、つまり全ての作業を実行するAppleScriptコードの作成です。ありがたいことに、macosxhintsの読者であるGreg Spenceさんが既にこの大変な作業を済ませてくれています(私はオプションを追加するために少しだけ調整しました)。以下のコードを、先ほど作業領域に配置した「AppleScriptを実行」アクションのスクリプト領域にコピー&ペーストするだけです。表示されている既存のテキストはすべて、以下のコードに置き換えてください。

	on run {input, parameters} tell application "Finder" set myWin to window 1 set theWin to (quoted form of POSIX path of (target of myWin as alias)) tell application "Terminal" activate tell window 1 do script "cd " & theWin -- do script "cd " & theWin & ";ls -al | more" end tell end tell end tell return input end run	

完了すると、ワークフローは次のようになります。

このスクリーンショットではスクリプトが途中で切れていることに注意してください (スクリプト領域は拡張できません)。そのため、そこに表示されているものだけでなく、上記のコードがすべて含まれていることを確認してください。

すべて問題なければ、ワークフローを使いやすいコンテキストメニュー項目として作成する準備が整いました。Automatorのメニューから「ファイル」→「プラグインとして保存」を選択します。「プラグインとして保存」ボックスで、新しいワークフローに「ターミナルで開く」など、分かりやすい名前を付けます。「プラグイン用」ポップアップに「Finder」と表示されていることを確認し、「保存」をクリックします。これで完了です!

新しいメニュー項目をテストするには、Finderに切り替えて任意の項目を選択し、Ctrlキーを押しながらクリックします。Automator:ターミナルで開く(またはアクションに付けた名前)を選択すると、新しいターミナルウィンドウが開き、cdコマンドが実行されて選択したフォルダに移動します。

スクリプトのカスタマイズ

基本的な動作を確認できたら、スクリプトを好みに合わせて少し調整したくなるかもしれません。何ができるかを示すために、コードに既に例を1つ残しておきました。

	スクリプト "cd " & theWin を実行します -- スクリプト "cd " & theWin & ";ls -al | more" を実行します	

2行あることに注意してください。どちらも非常に似ています。ただし、2行目はコメントアウトされています(--AppleScriptでは記号はコメントを表します)。つまり、コマンドは実行されません。ご覧のとおり、上の行と非常に似ていますが、セミコロンとls -alコマンドが追加されています。この行のコメントを解除(ダッシュを削除)し、その上の行をコメントアウト(または削除)すると、ターミナルが適切なディレクトリに移動した後、ディレクトリ一覧も表示されます。この編集を行った後は、変更したワークフローを保存することを忘れないでください。この例をテンプレートとして使用して、ワークフローを変更し、コマンドの後に任意のコマンドを実行することができますcd