回答:
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")も理解します。
この:
https://github.com/jbtule/cdto#cd-to
これはFinderツールバーにドラッグする小さなアプリで、アイコンは非常にうまく収まります。ターミナル、xterm(X11の下)、itermで動作します。
私が代替として不可欠だと思ったアプリケーションはDTermです。これは実際にアプリケーションでミニターミナルを開きます。さらに、Finder、XCode、PhotoShopなど、ほぼすべての機能を備えています。
明確化(@ 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ターミナルヒントからです。
pwd
だけに、cd
ファインダーが開いているディレクトリに移動します。
こちらのOpen Terminalをチェックしてください。「コマンドウィンドウをここで開く」と最もよく似ています。使った>cdto
はこれ、これは非常によく似ていますが、これはスペースの処理には少し優れているようですが、完璧ではありません。
非常に優れているのは、「アプリケーションの開始時にキーダウンイベントを検出し、それを使用してスクリプトの動作を変更する」機能があり、スクリプトが呼び出されたときに最前面のターミナルウィンドウに新しいタブを開くことができます。 ⌘キーを押したままにします。きちんとしたトリック。
PCheeseの回答にも注意してください。おそらく、ヘビーターミナルのユーザーにとってはより便利です!
vgm64とd0kによって投稿された、非常に素晴らしくスリムなOpen Terminal Hereの更新バージョンがあります。変更はジェームス・デビッド・ローによって行われました。彼は自分のサイトで新しいバージョンを公開しました。OpenTerminalHere.zipをダウンロードして解凍し、バンドルをLibrary / Scriptsフォルダーに移動して、そこからFinderツールバーにドラッグします。
特別なのは、Terminal.appウィンドウがすでに開いている場合は、常に新しいタブが開くことです。非常に便利!また、アプリケーションのボタンのスタイルは、編集されたcdtoよりもSnow Leopard Finder.appスタイルによく適合していることにも触れました。
ファインダーツールバー用の3つのアプリを含むバンドルを作成しました。他の2つのアプリは次のことを行います。
詳細については、こちらを参照してください:http : //nslog.de/posts/71
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
同様のスクリプトは、右クリックでファイルへの完全なパスを取得することもできます。これはさらに便利です。
それはあなたが求めるよりも少し多いですが、Finderにもう少しジュースが欲しいと思っている人には、CocoatechのPath Finderをお勧めします。現在のディレクトリのターミナルウィンドウを開くためのツールバーボタン、または各Finderウィンドウの下部にターミナルコマンドラインを備えた格納式ペインが含まれています。さらに、私が今ではなくてはならない他の多くの機能。非常に成熟した安定したソフトウェア。 http://cocoatech.com/
わかりました、これは少し遅れています...おそらく、この記事を執筆している時点では、この代替案は利用できませんでしたか?
とにかく、私はFinkを介してposパッケージをインストールすることを見つけました(この場合の前提条件、MacPortsを使用する人にとっても同様のものがあるかもしれません)が最も簡単な解決策です。次の2つのコマンドが表示されます。
はい、cdfを作成する前にターミナルウィンドウに切り替える必要がありますが、Finderツールバーのボタンをクリックするよりもはるかに安価だと思います。また、iTermでも機能するため、iTermウィンドウを開く別のFinderツールバーボタンをダウンロードする必要はありません。これはPCheeseによって提案されたのと同じアプローチですが、.bash_profileを乱雑にする必要はありません。
私のようにFinderツールバーをオフにすると、このサービスはすべてのフォルダのコンテキストメニューにアイテムを追加します。http://blog.leenarts.net/2009/09/03/open-service-here/
これにより、Finderツリービューに表示されているフォルダを開くこともできます。
私は主にこの関数を使用します:
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つの利点があります。
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