현재 터미널에서 노틸러스 디렉토리를 여는 방법은 무엇입니까? 터미널을 열고 싶지 않습니다. 노틸러스를

나는 수십 개의 터미널을 열고 싶지 않습니다. 노틸러스를 사용할 때 터미널에서 열기 대신 현재 터미널에서 열기 를 추가하는 방법이 있습니까?



답변

더럽거나 말거나, 아래 솔루션은 자주 테스트 한 30 분 동안 완벽하게 작동했습니다. 디렉토리 내에서 파일을 마우스 오른쪽 단추로 클릭하면 솔루션이 작동합니다.

1.


2.


삼.

노틸러스 스크립트

#!/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)

사용하는 방법

  1. 스크립트 wmctrl에는 xdotoolxclip이 필요합니다 .

    sudo apt-get install wmctrl xdotool xclip
    
  2. 스크립트를 빈 파일에 복사하고에 open_in_terminal(확장자 없음) 으로 저장하십시오 ~/.local/share/nautilus/scripts. 필요한 경우 디렉토리를 작성하십시오. 스크립트를 실행 가능하게 만들기

그게 다야. 로그 아웃했다가 다시 로그인하면 이미지 (2)와 같이 스크립트를 사용할 수 있습니다.

설명

  • 파일을 마우스 오른쪽 버튼으로 클릭하면 nautilus ‘를 사용하여 경로를 얻을 수 있습니다 "NAUTILUS_SCRIPT_CURRENT_URI".
  • 스크립트에서 우리는 다음 클립 보드에이 경로를로드 할 수 있습니다 (사용 xclip)
  • 결과적으로 스크립트는 (처음 찾은) gnome-terminal창을 올리고 경로를 명령 앞에 붙여 넣 습니다 cd. 우리 echo는 전체 라인을 클립 보드에로드하는 데 사용 되었으므로 Return포함되어 있습니다.

노트

  1. 터미널에서 실행중인 것이 없어야하며 터미널 창이 하나만 열려있는 경우 가장 잘 작동합니다. 여러 개가있는 경우 스크립트는 가장 오래된 gnome-terminal창을 선택합니다 .
  2. 실제로는 스크립트를 철저히 테스트해야합니다. 내가 그것을 실행하는 동안, 타이밍은 한 번도 문제가되지 않았다. 심지어 터미널 윈도우에 도달하기 위해 데스크탑이 4 개 또는 5 개의 뷰포트를 가로 질러 이동해야 할 때조차 아니었다. 경우 오류가 몇 줄, 그러나 발생할 수있는 이상 우리는 실제로 만들 수 기다릴 터미널 창을 제기하는 스마트 (어) 방식으로. 어떻게되는지 보자. 필요하지 않은 것 같습니다.
  3. 스크립트는 realpath를 사용하므로 링크 된 디렉토리도 올바르게 작동합니다.

노틸러스 스크립트에 대한 자세한 내용은 여기를 참조하십시오 .


또는 여러 개인 경우 자신의 터미널 창을 선택하십시오

당신은에서 선택할 수 있도록하려면 어떤 당신이 현재 (노틸러스) 디렉토리를 열고 아래의 스크립트를 사용하는 것이 터미널 창.

실제로 작동하는 방식

  1. 아래와 같이 디렉토리 (이 경우 내 데스크탑) 내의 파일을 마우스 오른쪽 단추로 클릭하십시오.

  2. 사용하려는 터미널 창을 클릭하거나 다른 방법으로 올리면 디렉토리로 이동합니다.

스크립트

#!/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

# check if gnome-terminal runs
pid = get(["pgrep", "gnome-terminal"])

if pid:
    t = 0
    while t < 30:
        # see if the frontmost window is a terminam window
        active = get(["xdotool", "getactivewindow"])
        if pid in get(["xprop", "-id", active]):
            # get the current path
            current = replace(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
            dr = os.path.realpath(current)
            # 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)
            break
        else:
            t += 1
            time.sleep(0.5)

설정

첫 번째 스크립트와 정확히 같습니다.

설명

스크립트는 첫 번째와는 다른 점이 있습니다. 첫 번째 발견 된 터미널 창을 자동으로 올리는 대신 첫 번째 터미널 창에 포커스가있을 때까지 기다립니다. 그런 다음 해당 창의 내부 디렉토리로 cd됩니다.


답변

나는 이것을 할 수있는 방법이 없다고 확신하지만 도움이 될 수있는 해결 방법이 있습니다.

항상 노틸러스에서 터미널 창으로 디렉토리를 끌어다 놓을 수 있으며 노틸러스는 해당 디렉토리를 전달하여 명령 행에 붙여 넣습니다. 따라서 cd폴더를 터미널로 끌어서 Enter 키를 누르십시오.


답변

가장 간단한 방법은 다음과 같습니다.

  1. 노틸러스에서 Ctrl+을 누르면 L주소 표시 줄이 편집을 위해 열립니다. Ctrl+를 누르십시오C
  2. 터미널로 전환하고 cd, 공백을 입력 한 다음 Shift+ Insert (or INS)를 입력하여 경로를 붙여 넣습니다. 을 누르십시오 Enter.

스크립트 나 추가 작업이 필요 없습니다.


답변

내 의견으로는이 문제를 해결하지 않는 유일한 우아한 방법은 tmux 와 같은 터미널 멀티플렉서를 사용하고 파일 관리자를 갖는 것입니다

  • 기존 세션 내에서 새 터미널 창을 열거 나
  • 새로운 tmux 세션으로 새로운 터미널 에뮬레이터를 시작하십시오.

다음 쉘 스크립트는이를 달성합니다.

#!/bin/sh
set -e
TMUX=tmux
#TERMINAL_EMULATOR='gnome-terminal -x'

cd "$1"
if $TMUX has-session; then
  exec $TMUX new-window
else
  exec ${TERMINAL_EMULATOR:-x-terminal-emulator -x} $TMUX
fi

TERMINAL_EMULATOR새 터미널 창에 대해 원하는 터미널 에뮬레이터를 보유하고 있습니다 (기본 설정이 마음에 들지 않으면 x-terminal-emulator) 에뮬레이터 내에서 명령을 실행할 수있는 명령 행 옵션이 있습니다.

파일 관리자에서 다른 파일 형식 연결과 마찬가지로 파일 처리기 스크립트를 등록 할 수 있습니다.