在Mac OS Finder中打开terminal

Windows Powertoy for Mac OS有没有类似于“Open Command Window Here”的东西? 我已经通过谷歌search发现了一些插件,但是想看看那里的开发者最适合什么。

从Mac OS X Lion 10.7开始,terminal包括这个function即服务。 与大多数服务一样,这些服务默认情况下是禁用的,所以您需要启用它才能使其显示在“服务”菜单中。

系统偏好设置>键盘>快捷方式>服务

在文件夹中启用新terminal 。 还有一个新的terminal选项卡在文件夹 ,这将在最前面的terminal窗口中创build一个标签(如果有的话,否则它将创build一个新的窗口)。 这些服务可以在所有应用程序中工作,而不仅仅是Finder,它们可以在文件夹中操作,也可以在文本中select绝对path名。

你甚至可以分配命令键给他们。

服务显示在每个应用程序菜单的“服务”子菜单中,并位于上下文菜单中(按住Control键单击或右键单击文件夹或path名)。

在Finder中select一个文件夹时 ,文件夹服务中的新terminal将变为活动状态 。 您不能简单地打开该文件夹并“就地”运行该服务。 回到父文件夹,select相关文件夹,然后通过服务菜单或上下文菜单激活服务。

另外,如果您将一个文件夹(或path名)拖到terminal应用程序图标上,狮子terminal将打开一个新的terminal窗口,您也可以拖动到现有窗口的标签栏来创build一个新标签。

最后,如果您将文件夹或path名拖到选项卡上(在标签栏中),并且前台进程是shell程序,它将自动执行“cd”命令。 (拖到标签中的terminal视图中,只是像在早期版本的terminal中一样插入path名)。

您也可以从命令行或shell脚本执行此操作:

open -a Terminal /path/to/folder 

这是相当于将文件夹/path名拖到terminal应用程序图标上的命令行。

在相关说明中,Lion Terminal也有查找手册页的新服务: terminal中的打开手册页在新的terminal窗口中显示选定的手册页主题,terminal中的search手册页对所选文本执行“apropos”。 前者也理解手册页引用(“open(2)”),手册页命令行参数(“2 open”)和手册页URL(“x-man-page:// 2 / open”)。

这个:

https://github.com/jbtule/cdto#cd-to

这是一个小的应用程序,你拖动到Finder工具栏,图标适合很好。 它可以与Terminal,xterm(在X11下),iterm一起使用。

我发现一个不可或缺的应用程序是DTerm ,它实际上在你的应用程序中打开了一个迷你terminal。 再加上它几乎所有的东西 – Finder,XCode,PhotoShop等。

澄清(谢谢@ vgm64):如果你已经在terminal,这可以让你快速切换到最高的Finder窗口,而不用离开terminal。 这样,你可以避免使用鼠标。

我已经将以下内容添加到了我的.bash_profile因此我可以cdff在terminal中inputcdff

 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.comterminal提示 。

看看这里打开terminal 。 它可能与“在这里打开命令窗口”最相似。 我使用>cdto ,这是非常相似的,但这似乎是在处理空间好一点…但不完美。

它所具有的非常好的function是“ 在应用程序的开始时检测按键事件,并使用它们修改脚本的行为 ”,从而允许脚本在被调用时在最前面的terminal窗口中打开一个新标签按住⌘键。 整洁的把戏。

还要注意PCheese的答案; 对于沉重的terminal用户来说可能更有用!

有一个更新版本的非常好,苗条的开放terminal在这里张贴vgm64d0k 。 这个改变是由詹姆斯·戴维低做的 。 他在他的网站上发布了新版本。 只需下载OpenTerminalHere.zip,将其解压缩,然后将该软件包移动到您的Library / Scripts文件夹,并从那里拖到Finder工具栏。

有什么特别的是它总是打开一个新的标签,如果一个Terminal.app窗口已经打开。 很有用! 我还注意到,该应用程序button的风格更适合雪豹Finder.app风格比cdto发布的redacted做。

此外,您可以使用命令C复制查找器中的项目,跳转到terminal(例如使用Spotlight或QuickSilver)input“cd”,然后使用命令v

我为取景器工具栏创build了一个包含3个应用程序的包。 另外两个应用程序可以:

  • 打开Textmate与当前的select
  • 用当前文件夹打开GitX

欲了解更多信息,请参阅: http : //nslog.de/posts/71

如果您安装Big Cat脚本( http://www.ranchero.com/bigcat/ ),则可以添加自己的上下文菜单(右键单击)项目。 我不认为这是一个开放terminal在这里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 

类似的脚本也可以让你右键单击一个文件的完整path,这是更有用的,我发现。

这比你所要求的要多一点,但是我build议Cocoatech的Path Finder适合那些希望Finder有更多果汁的人。 它包括一个用于打开当前目录的terminal窗口的工具栏button,或者在每个Finder窗口底部带有一个terminal命令行的可伸缩窗格。 加上我现在无法生存的许多其他function。 非常成熟,稳定的软件。 http://cocoatech.com/

好吧,我意识到这有点晚了…也许这个替代scheme在写这篇文章的时候是不可用的?

无论如何,我已经发现通过Fink(这种情况下的先决条件,也许有类似的使用MacPorts的人)安装pos包是最简单的解决scheme。 你得到两个命令:

  1. posd – 它给出最前面的Finder窗口的当前目录(为此你可能会做一个别名cdf = cd posd)
  2. fdc – 将最前面的Finder窗口的当前目录切换到Terminal pwd。 这与“开放”略有不同。 它总是打开一个新的查找窗口。

是的,你必须在编写cdf之前切换到terminal窗口,但是我想这比点击Finder工具条上的button要便宜。 它也可以与iTerm一起使用,您不必下载单独的Finder工具栏button,打开一个iTerm窗口。 这与PCheese提出的方法是一样的,但是你不必混乱你的.bash_profile。

如果像我一样closuresFinder工具栏,则此服务会将项目添加到每个文件夹的上下文菜单中: http : //blog.leenarts.net/2009/09/03/open-service-here/

这也允许你打开你在Finder树视图中看到的任何文件夹。

我主要使用这个function:

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

您也可以为下面的脚本指定一个快捷方式。

重新使用现有选项卡或创build一个新窗口(terminal):

 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 

重新使用现有的选项卡或创build一个新的选项卡(terminal):

 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 

总是创build一个新标签(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 

与10.7中添加的服务相比,前两个脚本有两个优点:

  • 他们使用标题栏上的文件夹,而不是要求您先select文件夹。
  • 如果不是很忙,它们会重用最前面的选项卡,例如运行命令,显示手册页或运行emacs。

在OSX 10.6的AppleScript中有一个错误。 (2个terminal窗口打开)。 我通过在激活之后添加closures命令来解决这个问题。 这closures了第一个terminal窗口。

 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 
Interesting Posts