关于macos:在Mac OS finder中打开终端

Open terminal here in Mac OS finder

是否有类似于Mac OS的"打开命令窗口"Windows PowerToy的东西?我通过谷歌搜索找到了几个插件,但我想看看哪些插件最适合开发人员。


从Mac OS X Lion 10.7开始,终端将此功能作为服务提供。与大多数服务一样,默认情况下这些都是禁用的,因此您需要启用它,使其显示在"服务"菜单中。

System Preferences > Keyboard > Shortcuts > Services

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

甚至可以为它们指定命令键。

服务显示在每个应用程序菜单的"服务"子菜单中,以及上下文菜单中(控制单击或右键单击文件夹或路径名)。

当您在查找工具中选择一个文件夹时,新的"位于文件夹的终端"服务将处于活动状态。您不能简单地打开文件夹并"就地"运行服务。返回父文件夹,选择相关文件夹,然后通过服务菜单或上下文菜单激活服务。

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

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

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

1
open -a Terminal /path/to/folder

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

在相关注释中,lion终端还提供了新的查找手册页的服务:在终端中打开手册页在新的终端窗口中显示所选手册页主题,在终端中搜索手册页对所选文本执行"apropos"。前者还了解手册页引用("open(2)")、手册页命令行参数("2 open")和手册页URL("x-man-page://2/open")。


这是:

https://github.com/jbtule/cd to cd至

这是一个小应用程序,你可以将它拖到"查找工具"工具栏中,这个图标非常适合你。它与终端、xterm(x11下)、iterm一起工作。


我发现作为替代方案必不可少的应用程序是dterm,它实际上在您的应用程序中打开了一个小型终端。此外,它还可以处理几乎所有的东西——finder、xcode、photoshop等。


说明(谢谢@vgm64):如果您已经在终端中,这可以让您快速切换到最顶端的finder窗口而不离开终端。这样,就可以避免使用鼠标。

我在我的.bash_profile中添加了以下内容,以便随时在终端中键入cdff

1
2
3
4
5
6
7
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终端提示。


在这里查看打开的终端。它可能与"这里打开命令窗口"最相似。我使用了>cdto,这非常相似,但这似乎在处理空间方面有点好…但并不完美。

它所具有的非常好的功能是"在应用程序开始时检测键关闭事件并使用它们来修改脚本的行为",允许脚本在按住时在最前面的终端窗口中打开一个新的选项卡?关键。巧妙的诡计

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


这里有一个由vgm64和d0k发布的非常漂亮和超薄的开放式终端的更新版本,这是由james david low所做的更改。他在自己的网站上发布了新版本。只需下载opentterminalhere.zip,提取它,将包移动到您的library/scripts文件夹,然后将它从那里拖到finder工具栏。

它的特别之处在于,如果terminal.app窗口已经打开,它总是打开一个新的选项卡。非常有用!我还注意到,应用程序按钮的样式比redacted发布的cdto更适合snow leopard finder.app样式。


另外,您可以使用command-c从finder复制一个项目,跳到终端(例如,使用聚光灯或Quicksilver)键入"cd",然后简单地使用command-v粘贴。


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

  • 打开与当前所选内容的textmate
  • 用当前文件夹打开Gitx

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


这比你要求的要多一点,但是我推荐Cocoatech的路径查找器给那些希望查找器有更多果汁的人。它包括一个工具栏按钮,用于打开当前目录的终端窗口,或者一个可伸缩的窗格,在每个查找器窗口的底部有一个终端命令行。加上许多其他的功能,我现在离不开它们。非常成熟,稳定的软件。网址:http://cocatech.com/


如果安装了big cat脚本(http://www.ranchero.com/big cat/),则可以添加自己的上下文菜单(右键单击)项。我不认为它附带了一个开放的终端applescript,但我使用了这个脚本(我真的不记得是我自己写的,还是从别人的例子中提取的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

类似的脚本也可以在右键单击时获得文件的完整路径,我发现这更有用。


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

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


好吧,我知道现在有点晚了…也许在写这篇文章的时候,这个替代方案还没有出现?

不管怎样,我发现通过fink安装POS软件包(这种情况下的先决条件是,对于那些使用MacPorts的用户来说,可能有类似的东西?)成为最简单的解决方案。有两个命令:

  • posd-提供最前面的finder窗口的当前目录(您可能会为此创建一个别名cdf=cd posd)
  • fdc—将最前面的finder窗口的当前目录切换到终端pwd。这与"打开"略有不同,后者总是打开一个新的查找窗口。
  • 是的,在编写CDF之前,您必须切换到终端窗口,但我想与单击finder工具栏中的按钮相比,这是相当便宜的。它也可以与iterm一起使用,您不必下载单独的finder工具栏按钮来打开iterm窗口。这与pcheese提出的方法是相同的,但是您不必混乱您的.bash_概要文件。


    我主要使用这个功能:

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

    您还可以为脚本分配一个快捷方式,如下面的脚本。

    重用现有选项卡或创建新窗口(终端):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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

    重用现有选项卡或创建新选项卡(终端):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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,则它们将重用。

    OSX 10.6上的AppleScript中有一个错误。(2个终端窗口打开)。我通过在激活后添加close命令来修复这个问题。这将关闭第一个终端窗口。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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