如何直接从当前Finder位置打开终端窗口?


Answers:


134

从Mac OS X Lion 10.7开始,终端提供服务,用于在Finder中打开所选文件夹中的新终端窗口或选项卡。它们还可以使用在文本中选择的绝对路径名(在任何应用程序中)。您可以使用“ 系统偏好设置”>“键盘”>“键盘快捷键”>“服务”启用这些服务。查找“文件夹中的新终端”和“文件夹中的新终端选项卡”。您也可以为其分配快捷键。

此外,您现在可以将文件夹(和路径名)拖到“终端”应用程序图标上以打开新的终端窗口,或拖到终端窗口中的选项卡栏上以在该窗口中创建新选项卡。如果拖动到选项卡(而不是终端视图)上,它将执行完整的cd命令以切换到该目录,而无需任何其他输入。

从OS X Mountain Lion 10.8开始,将命令拖放到终端中还将执行完整的cd命令。

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


2
“此外,您现在可以将文件夹(和路径名)拖到终端应用程序图标上,以打开一个新的终端窗口,” –您在跟我开玩笑吗?棒极了!:)
phil

3
在Mavericks 10.9.4中-快捷方式对我不起作用。感谢拖放提示:)
2014年

1
@amar能否与我们分享您的工作?在10.10中也为我打破
OJFord

2
@Olive-在我升级到Yesomite快捷方式后,它不再对我有用:(
2014年

4
我注意到的一件事,就是El Capitan的问题,是您必须在Finder中选择文件夹(单击在Finder中看到的文件夹)。我期望它起作用的方式是它将在当前文件夹中打开一个终端窗口。实际上,您必须在窗口中选择文件夹。
sillygwailo 2015年

19

解决您的麻烦的方法称为Go2Shell,它完全可以满足您的描述。您可以在App Store上找到它,而且最好的是...它是完全免费的。

Go2Shell


如果您想将iTerm与Go2Shell结合使用,请参见此答案以提出首选项。或简而言之,键入open -a Go2Shell --args config以调出配置。
Jeromy Anglim

@jherran现在看来是确定
科拉斯

1
无法通过应用程序商店安装最新版本,但可以从其网站zipzapmac.com/Go2Shell或通过安装brew cask install go2shell
fiedl

我能够从apple / itunes应用商店中安装最新版本v1.2.2,可以很好地工作
computingfreak

14

另一种方法是:DTerm,它在窗口顶部为您提供一个浮动命令提示符。这适用于许多应用程序,而不仅仅是Finder。


13

cdto似乎正是您所需要的。它是一个微型应用程序,旨在放置在Finder的工具栏中,当您运行它时,它将打开一个终端窗口并cd指向Finder中的当前目录。


10

对于使用iTerm的用户,AppleScript语法在iTerm版本3中已更改。这是在Finder中创建快捷方式的完整过程。

  1. 启动Automator。

  2. 选择“应用程序”:

指令说明

  1. 选择“运行Applescript”:

在此处输入图片说明

  1. 粘贴以下代码:

    -- get the current directory in Finder
    on run {input, parameters}
        tell application "Finder"
            set _cwd to quoted form of (POSIX path of (folder of the front window as alias))
        end tell
        CD_to(_cwd)
    end run
    
    -- change directory in iTerm (version >= 3)
    on CD_to(_cwd)
        tell application "iTerm"
            activate
    
            try
                set _window to first window
            on error
                set _window to (create window with profile "Default")
            end try
    
            tell _window
                tell current session
                    write text "cd " & _cwd & ";clear;"
                end tell
            end tell
        end tell
    end CD_to
    

在此处输入图片说明

  1. 单击“文件”->“导出” .app,将其导出为,保存在中/Applications

  2. 按住的同时将应用程序移动到Finder图标栏

在此处输入图片说明

完成!

您可以按照此处的说明 Finder中更改图标(更改使用Automator创建的应用程序的图标)。


9

我主要使用此功能:

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中添加的服务相比,前两个脚本具有一些优势:

  • 从10.9版开始,存在一个错误,即从未在列视图的服务菜单中列出用于接收文件夹作为输入的服务。如果在“文件夹”服务中为“新建终端标签”分配了键盘快捷键,则该快捷键在列视图中不起作用。
  • 他们使用标题栏上的文件夹,而不是要求您先选择一个文件夹。
  • 如果最前面的选项卡不忙,它们将重用最前面的选项卡,例如运行命令,显示手册页或运行emacs。

如果您使用10.7或10.8,请更改tell application "Finder" to set p to POSIX path of (insertion location as alias)为:

tell application "Finder"
    if exists Finder window 1 then
        set p to POSIX path of (target of Finder window 1 as alias)
    else
        set p to POSIX path of (path to desktop)
    end if
end tell

10.7和10.8中有一个错误(但在10.9或10.6中没有),Finder会忽略上次将焦点移至另一个应用程序后创建的窗口,并在获取该insertion location属性时将其移回。



3

您可以将任何文件或文件夹从查找器中拖到“终端”窗口中,以插入所述文件或文件夹的绝对路径的字符串。

这可以在任何标准安装上运行(至少可以追溯到10.4 Tiger [ ?可能更早吗? ]),而无需使用其他软件,我们的偏好设置就一团糟,如果碰巧是您的非技术朋友,则这两种方法都可能会让您感到厌烦您正在使用的Mac。此技巧还适用于终端机中运行的任何进程,例如emacs或vi(假设您已将vi设置为适当的模式,或者是使用vi的人这样做)。







-1

 

    OpenTerminal


1
。死链接:(这就是为什么只有链接的答案有一个短暂的生命或应定期检查的原因活路。

@daniel替换为archive.org链接
grg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.