在Mac OS查找器中打开终端

时间:2009-01-07 14:21:21

标签: macos terminal finder

是否有类似于“Open Command Window Here”的Windows Powertoy for Mac OS?我通过谷歌搜索发现了一些插件,但希望看到那些最适合开发人员的插件。

14 个答案:

答案 0 :(得分:900)

从Mac OS X Lion 10.7开始,终端将此功能完全包含在服务中。与大多数服务一样,默认情况下会禁用这些服务,因此您需要启用它以使其显示在“服务”菜单中。

  

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

启用文件夹中的新终端。还有文件夹中的新终端选项卡,它将在最前面的终端窗口中创建一个选项卡(如果有的话,它将创建一个新窗口)。这些服务适用于所有应用程序,而不仅仅是Finder,它们可以在文件夹上运行,也可以在文本中选择绝对路径名。

您甚至可以为它们分配命令键。

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

在Finder中选择文件夹时,文件夹中的新终端服务将变为活动。您不能简单地打开文件夹并“就地”运行服务。返回父文件夹,选择相关文件夹,然后通过“服务”菜单或上下文菜单激活该服务。

此外,如果您将文件夹(或路径名)拖到终端应用程序图标上,Lion终端将打开一个新的终端窗口,您还可以拖动到现有窗口的标签栏以创建新选项卡。

最后,如果将文件夹或路径名拖到选项卡上(在选项卡栏中)并且前台进程是shell,它将自动执行“cd”命令。 (拖动到选项卡中的终端视图只会自己插入路径名,就像旧版本的终端一样。)

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

open -a Terminal /path/to/folder

这是命令行,相当于将文件夹/路径名拖到终端应用程序图标上。

在相关说明中,Lion Terminal还提供了用于查找手册页的新服务:在终端中打开手册页在新的终端窗口中显示所选的手册页主题,并且搜索人终端中的页面在所选文本上执行“apropos”。前者还理解手册页引用(“open(2)”),手册页命令行参数(“2 open”)和手册页URL(“x-man-page:// 2 / open”)。

答案 1 :(得分:153)

此:

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

这是一个小型应用程序,您拖动到Finder工具栏,图标非常适合。它适用于终端,xterm(在X11下),iterm。

答案 2 :(得分:56)

我发现作为替代方案不可缺少的应用程序是DTerm,它实际上在您的应用程序中打开了一个迷你终端。此外,它适用于那里的所有东西 - Finder,XCode,PhotoShop等。

答案 3 :(得分: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 $@`"; };

这是this macosxhints.com Terminal hint

答案 4 :(得分:14)

结帐Open Terminal Here。它可能与“Open Command Window Here”最相似。我使用了>cdto,这非常相似,但这似乎在处理Spaces方面要好一些......但并不完美。

它具有的非常好的功能是“在应用程序启动时检测关键事件并使用它们来修改脚本的行为”允许脚本打开一个通过按住⌘键调用最前面终端窗口中的新选项卡。整洁的技巧。

还要注意PCheese的回答;它可能对重型终端用户更有用!

答案 5 :(得分:12)

vgm64 d0k 发布了非常漂亮,纤细的 Open Terminal Here 的更新版本。这个变化是由 james david low 做出的。他在his site上发布了新版本。只需下载OpenTerminalHere.zip,解压缩,将软件包移动到Library / Scripts文件夹,然后将其从那里拖到Finder工具栏。

有一点特别之处在于,如果Terminal.app窗口已经打开,总会打开一个新选项卡。很有用!我还注意到应用程序按钮的样式更适合Snow Leopard Finder.app样式而不是编辑发布的cdto。

答案 6 :(得分:10)

此外,您可以使用命令-C从查找程序中复制项目,跳转到终端(例如使用Spotlight或QuickSilver)类型“cd”并只需使用command-v粘贴

答案 7 :(得分:4)

我为finder工具栏创建了一个包含3个应用程序的包。 其他两个应用程序:

  • 使用当前选择打开Textmate
  • 使用当前文件夹
  • 打开GitX

有关详细信息,请参阅此处: http://nslog.de/posts/71

答案 8 :(得分:3)

如果您安装Big Cat Scripts(http://www.ranchero.com/bigcat/),您可以添加自己的上下文菜单(右键单击)项。我不认为它带有一个开放式终端这里的苹果,但我使用这个脚本(我不记得,如果我自己写的,或者从其他人的例子中取消):


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

类似的脚本也可以为您提供右键单击文件的完整路径,我发现这更有用。

答案 9 :(得分:3)

这比你要求的要多一点,但我推荐Cocoatech的Path Finder给任何希望Finder有更多汁液的人。它包括一个用于打开当前目录的终端窗口的工具栏按钮,或者包含每个Finder窗口底部的终端命令行的可伸缩窗格。还有许多其他功能,我现在不能没有。非常成熟,稳定的软件。 http://cocoatech.com/

答案 10 :(得分:2)

好的,我意识到这有点晚了......也许这个替代品在写这篇文章的那一刻还没有?

无论如何,我发现通过Fink安装pos包(在这种情况下是一个先决条件,对于那些使用MacPorts的人来说可能有类似的东西吗?)是最简单的解决方案。你得到两个命令:

  1. posd - 它给出了最前面的Finder窗口的当前目录(你可能会为其制作别名cdf = cd posd)
  2. fdc - 将最前面的Finder窗口的当前目录切换到Terminal pwd。这与'开放'略有不同。它总能打开一个新的取景器窗口。
  3. 是的,你必须在编写cdf之前切换到终端窗口,但我认为与单击Finder工具栏中的按钮相比,它非常便宜。它也适用于iTerm,您无需下载单独的Finder工具栏按钮即可打开iTerm窗口。这与PCheese提出的方法相同,但您不必混淆.bash_profile。

答案 11 :(得分:2)

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

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

答案 12 :(得分: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

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

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

答案 13 :(得分: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