Mac OSファインダーでここにターミナルを開く[クローズ]


682

「ここにコマンドウィンドウを開く」Windows Powertoy for Mac OSに似たものはありますか?私はグーグル検索でいくつかのプラグインを見つけましたが、そこにいる開発者に最も効果的なものを見たいと思っていました。


回答:


900

Mac OS X Lion 10.7以降、ターミナルにはこの機能がサービスとして含まれています。ほとんどのサービスと同様に、これらはデフォルトで無効になっているため、これを有効にして[サービス]メニューに表示する必要があります。

システム環境設定>キーボード>ショートカット>サービス

フォルダで新しいターミナルを有効にします。FolderにNew Terminalタブもあります。これにより、最前面のターミナルウィンドウにタブが作成されます(存在する場合は、新しいウィンドウが作成されます)。これらのサービスは、Finderだけでなく、すべてのアプリケーションで機能し、テキストで選択された絶対パス名だけでなく、フォルダーも操作します。

コマンドキーを割り当てることもできます。

サービスは、各アプリケーションメニューの[サービス]サブメニューとコンテキストメニュー(フォルダーまたはパス名をControl-クリックまたは右クリック)内に表示されます。

フォルダに新しいターミナルサービスがアクティブになりますフォルダを選択したときに Finderで。単にフォルダを開いてサービスを「インプレース」で実行することはできません。親フォルダに戻り、関連するフォルダを選択して、[サービス]メニューまたはコンテキストメニューからサービスをアクティブ化します。

さらに、フォルダー(またはパス名)をターミナルアプリケーションアイコンにドラッグすると、Lion Terminalは新しいターミナルウィンドウを開きます。また、既存のウィンドウのタブバーにドラッグして新しいタブを作成することもできます。

最後に、フォルダーまたはパス名をタブ(タブバー内)にドラッグし、フォアグラウンドプロセスがシェルの場合、自動的に "cd"コマンドが実行されます。(以前のバージョンのターミナルのように、タブ内のターミナルビューにドラッグしても、パス名だけが挿入されます。)

コマンドラインまたはシェルスクリプトからこれを行うこともできます。

open -a Terminal /path/to/folder

これは、ターミナルアプリケーションアイコンにフォルダ/パス名をドラッグするのと同等のコマンドラインです。

関連するメモとして、Lion Terminalには、manページを検索するための新しいサービスもあります。Terminalでmanページを開くと、選択したmanページのトピックが新しいターミナルウィンドウに表示され、Terminalでmanページ検索すると、選択したテキストに対して「該当」が実行されます。前者は、manページの参照( "open(2)")、manページのコマンドライン引数( "2 open")、およびmanページのURL( "x-man-page:// 2 / open")も理解します。


8
ヨセミテでは動作しません。
OlcayErtaş2015年

2
@OlcayErtaş何が機能しないのですか?私の答えのすべてがヨセミテ10.10.xで動作します。
Chris Page、

2
Finerを再起動する必要がありますか?理由はわかりませんが、フォルダサービスで新しいターミナルを有効にしましたが、機能しませんでした。
OlcayErtaş2015年

13
@OlcayErtaşメニュー項目を取得するには、フォルダーアイコンを右クリックする必要があります。フォルダー自体に移動するのではなく、その親に移動します。
Jonathan Landrum、2015年

2
右クリック/サービスからは使用できますが、キーボードショートカットからは使用できません。
缶Poyrazoğlu


56

私が代替として不可欠だと思ったアプリケーションはDTermです。これは実際にアプリケーションでミニターミナルを開きます。さらに、Finder、XCode、PhotoShopなど、ほぼすべての機能を備えています。


38

明確化(@ vgm64に感謝):既にターミナルにいる場合、これにより、ターミナルを離れずに最上位のFinderウィンドウにすばやく切り替えることができます。これにより、マウスの使用を回避できます。

次のコードを追加した.bash_profileのでcdff、いつでもターミナルに入力できます。

function ff { osascript -e 'tell application "Finder"'\
 -e "if (${1-1} <= (count Finder windows)) then"\
 -e "get POSIX path of (target of window ${1-1} as alias)"\
 -e 'else' -e 'get POSIX path of (desktop as alias)'\
 -e 'end if' -e 'end tell'; };\

function cdff { cd "`ff $@`"; };

これは、このmacosxhints.comターミナルヒントからです。


"open。"は、現在のディレクトリで新しいFinderウィンドウを開きます
jolvi

2
@jolviは、この回答が提供するものの反対です。ポイントはでFinderウィンドウを開くことではないpwdだけに、cdファインダーが開いているディレクトリに移動します。
Jonathan Landrum、2015年

ああ、すみません、もちろんあなたは正しいです。
jolvi、2015年

14

こちらのOpen Terminalをチェックしてください。「コマンドウィンドウをここで開く」と最もよく似ています。使った>cdtoはこれ、これは非常によく似ていますが、これはスペースの処理には少し優れているようですが、完璧ではありません。

非常に優れているのは、「アプリケーションの開始時にキーダウンイベントを検出し、それを使用してスクリプトの動作を変更する」機能があり、スクリプトが呼び出されたときに最前面のターミナルウィンドウに新しいタブを開くことができます。 ⌘キーを押したままにします。きちんとしたトリック。

PCheeseの回答にも注意してください。おそらく、ヘビーターミナルのユーザーにとってはより便利です!


12

vgm64d0kによって投稿された、非常に素晴らしくスリムなOpen Terminal Hereの更新バージョンがあります。変更はジェームス・デビッド・ローによって行われました。彼は自分のサイトで新しいバージョンを公開しまし。OpenTerminalHere.zipをダウンロードして解凍し、バンドルをLibrary / Scriptsフォルダーに移動して、そこからFinderツールバーにドラッグします。

特別なのは、Terminal.appウィンドウがすでに開いている場合は、常に新しいタブが開くことです。非常に便利!また、アプリケーションのボタンのスタイルは、編集されたcdtoよりもSnow Leopard Finder.appスタイルによく適合していることにも触れました。


これはすごい!(上記の投稿で述べたようにドラッグするだけでなく)コマンド+ドラッグしてFinderツールバーに移動する必要があることに注意してください。そして、あなたはアイコンのショートカットがあり、クリックすると任意のフォルダからターミナルします。
B.ナドルソン2015

10

また、コマンド-Cを使用してファインダーからアイテムをコピーし、ターミナルにジャンプ(たとえば、SpotlightまたはQuickSilverを使用)して「cd」と入力し、コマンド-vを使用して貼り付けるだけです。


4

ファインダーツールバー用の3つのアプリを含むバンドルを作成しました。他の2つのアプリは次のことを行います。

  • 現在の選択でTextmateを開く
  • 現在のフォルダーでGitXを開く

詳細については、こちらを参照してください:http : //nslog.de/posts/71


3

Big Cat Scripts(http://www.ranchero.com/bigcat/)をインストールすると、独自のコンテキストメニュー(右クリック)アイテムを追加できます。Open Terminal HereのApplescriptは付属していないと思いますが、私はこのスクリプトを使用しています(自分で書いたか、他の人の例から取り上げられたかを正直に覚えていません)。


on main(filelist)
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end main

同様のスクリプトは、右クリックでファイルへの完全なパスを取得することもできます。これはさらに便利です。


3

それはあなたが求めるよりも少し多いですが、Finderにもう少しジュースが欲しいと思っている人には、CocoatechのPath Finderをお勧めします。現在のディレクトリのターミナルウィンドウを開くためのツールバーボタン、または各Finderウィンドウの下部にターミナルコマンドラインを備えた格納式ペインが含まれています。さらに、私が今ではなくてはならない他の多くの機能。非常に成熟した安定したソフトウェア。 http://cocoatech.com/


2

わかりました、これは少し遅れています...おそらく、この記事を執筆している時点では、この代替案は利用できませんでしたか?

とにかく、私はFinkを介してposパッケージをインストールすることを見つけました(この場合の前提条件、MacPortsを使用する人にとっても同様のものがあるかもしれません)が最も簡単な解決策です。次の2つのコマンドが表示されます。

  1. posd-最前面のFinderウィンドウの現在のディレクトリを提供します(おそらく、エイリアスcdf = cd posdを作成します)
  2. fdc-最前面のFinderウィンドウの現在のディレクトリをターミナルpwdに切り替えます。これは「オープン」とは少し異なります。これは常に新しいファインダーウィンドウを開きます。

はい、cdfを作成する前にターミナルウィンドウに切り替える必要がありますが、Finderツールバーのボタンをクリックするよりもはるかに安価だと思います。また、iTermでも機能するため、iTermウィンドウを開く別のFinderツールバーボタンをダウンロードする必要はありません。これはPCheeseによって提案されたのと同じアプローチですが、.bash_profileを乱雑にする必要はありません。



1

私は主にこの関数を使用します:

cf() {
  cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')"
}

以下のようなショートカットをスクリプトに割り当てることもできます。

既存のタブを再利用するか、新しいウィンドウ(ターミナル)を作成します。

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "Terminal"
    if (exists window 1) and not busy of window 1 then
        do script "cd " & quoted form of p in window 1
    else
        do script "cd " & quoted form of p
    end if
    activate
end tell

既存のタブを再利用するか、新しいタブ(ターミナル)を作成します。

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    if busy of window 1 then
        tell application "System Events" to keystroke "t" using command down
    end if
    do script "cd " & quoted form of p in window 1
end tell

常に新しいタブを作成(iTerm 2):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "iTerm"
    if exists current terminal then
        current terminal
    else
        make new terminal
    end if
    tell (launch session "Default") of result to write text "cd " & quoted form of p
    activate
end tell

最初の2つのスクリプトには、10.7で追加されたサービスと比較して2つの利点があります。

  • 最初にフォルダを選択するように要求する代わりに、タイトルバーのフォルダを使用します。
  • コマンドの実行、manページの表示、emacsの実行など、ビジー状態でない場合は、最前面のタブを再利用します。

0

OSX 10.6のAppleScriptにバグがあります。(2つのターミナルウィンドウが開いています)。これを修正するには、アクティブ化の後にcloseコマンドを追加します。これにより、最初のターミナルウィンドウが閉じます。

on run
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                close
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end run

2
ターミナルウィンドウを閉じたいのはなぜですか?それはあなたがそれに行っていたどんな仕事も破壊しませんか?
ロブ・ケネディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.