如何在当前终端中打开 Nautilus 目录?

Vit*_*lla 13 nautilus gnome-terminal directory nautilus-script nautilus-actions

我不喜欢打开几十个终端。使用 Nautilus 时,有没有办法在当前终端中添加Open而不是在终端打开

Jac*_*ijm 13

不管脏不脏,下面的解决方案在我经常测试的 30 分钟内完美运行。只要您可以右键单击目录中的文件(任何),该解决方案就可以工作:

1.

在此处输入图片说明

2.

在此处输入图片说明

3.

在此处输入图片说明

鹦鹉螺脚本

#!/usr/bin/env python3
import subprocess
import os
import time

def replace(path):
    for c in [("%23", "#"), ("%5D", "]"), ("%5E", "^"),
              ("file://", ""), ("%20", " ")]:
        path = path.replace(c[0], c[1])
    return path

def get(command):
    try:
        return subprocess.check_output(command).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        pass

t = get(["pgrep", "gnome-terminal"])
if t:
    w = [l.split()[0] for l in get(["wmctrl", "-lp"]).splitlines() if t in l][0]
    # get the current path
    current = replace(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
    dr = os.path.realpath(current)
    # raise the found terminal window
    subprocess.call(["wmctrl", "-ia", w])
    time.sleep(0.3)
    # copy the cd command to clipboard
    c1 = "printf 'cd ' | xclip -in -selection c"
    c2 = 'echo "'+"'"+dr+"'"+'"  | xclip -in -selection c'
    # paste & run it
    for c in [c1, c2]:
        subprocess.call(["/bin/bash", "-c", c])
        subprocess.call(["xdotool", "key", "Control_L+Shift+v"])
        time.sleep(0.05)
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 脚本需要wmctrl,xdotool和 xclip:

    sudo apt-get install wmctrl xdotool xclip
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将脚本复制到一个空文件中,将其另存为open_in_terminal(无扩展名)~/.local/share/nautilus/scripts。如果需要,创建目录。使脚本可执行

就是这样。注销并重新登录,您将获得如图 (2) 所示的脚本。

解释

  • 右键单击文件,我们可以使用 nautilus' 获取路径"NAUTILUS_SCRIPT_CURRENT_URI"
  • 在脚本中,我们可以将此路径加载到剪贴板中(使用xclip
  • 随后,脚本启动(第一个找到的)gnome-terminal窗口并粘贴路径,前面是cd命令。由于我们曾经echo将整行加载到剪贴板中,Return因此包含在内。

笔记

  1. 应该清楚终端中不应该运行任何东西,如果只打开一个终端窗口,效果最好。如果有多个,脚本会选择最旧的gnome-terminal窗口。
  2. 该脚本需要在实践中进行彻底的测试。当我运行它时,即使是一次时间也没有问题,即使桌面必须“穿越”四个或五个视口才能到达终端窗口。IF但是会发生错误,用几行代码,我们可以把它实际上等待在智能(ER)的方式进行,以提高终端窗口。让我们看看发生了什么。似乎没有必要。
  3. 由于脚本使用realpath,链接目录也将正常工作。

有关 nautilus 脚本的更多信息,请访问此处


或者,如果您有多个终端窗口,请选择您自己的终端窗口

如果您希望能够选择在哪个终端窗口中打开当前 (nautilus) 目录,请使用以下脚本。

在实践中如何运作

  1. 右键单击目录(在本例中为我的桌面)内的(任何)文件,如下所示:

    在此处输入图片说明

  2. 单击(或以其他方式提出)您要使用的终端窗口,它将 cd 到目录:

    在此处输入图片说明

剧本

sudo apt-get install wmctrl xdotool xclip
Run Code Online (Sandbox Code Playgroud)

设置

和第一个脚本完全一样。

解释

该脚本与第一个不同:它不会自动提升第一个找到的终端窗口,而是等待第一个终端窗口获得焦点。然后它 cd 到该窗口内的目录。


Ser*_*nyy 9

最简单的方法是这样的:

  1. 在 nautilus 中,按Ctrl+ L,这将打开地址栏进行编辑。按Ctrl+C
  2. 切换到终端并输入cd、空格,然后Shift+Insert (or INS)粘贴路径。击中Enter

不需要脚本或额外的工作。


Jor*_*tro 8

我很确定没有办法做到这一点,但是我有一个可能对您有所帮助的解决方法。

您始终可以将目录从 Nautilus 拖放到终端窗口中,Nautilus 将传递该目录并将其粘贴到命令行中,因此您可以这样做cd,然后将文件夹拖到终端上并按 Enter。