"링크 만들기"옵션을 통해 바로 가기를 만들었습니다. 이 바로 가기 폴더에 들어가면 그 위에있는 폴더를 볼 수 없으므로 쉽게 이동할 수 없습니다.
GUI에서 하나의 폴더를 올리는 방법이 있습니까? 아마 단축키? ( cd ..
이번에 는 할 수 없습니다 ^ __ ^).
예를 들어 Windows의 경우 실제로 설명하는 방식으로 탐색 할 수 있습니다. 여기에 설명하는 Win10 이미지가 있습니다.
Alt+up key
"링크 만들기"옵션을 통해 바로 가기를 만들었습니다. 이 바로 가기 폴더에 들어가면 그 위에있는 폴더를 볼 수 없으므로 쉽게 이동할 수 없습니다.
GUI에서 하나의 폴더를 올리는 방법이 있습니까? 아마 단축키? ( cd ..
이번에 는 할 수 없습니다 ^ __ ^).
예를 들어 Windows의 경우 실제로 설명하는 방식으로 탐색 할 수 있습니다. 여기에 설명하는 Win10 이미지가 있습니다.
Alt+up key
답변:
이 질문에는 몇 가지 과제가 있습니다.
nautilus
예를 들어 현재 활성 디렉토리를 얻기 위해 명령 행에서 직접 통신하지 않으며 현재 열려있는 폴더 (창)를 명령 행에서 다른 디렉토리로 "전송"할 수 없습니다."NAUTILUS_SCRIPT_CURRENT_URI"
에서을 통해 요청한대로 노틸러스는 현재 폴더 의 실제 경로를 반환하지 않지만 링크를 실제 폴더 인 것처럼 "인식"합니다.따라서 솔루션은 점점 더러워집니다. 해결 방법을 찾아야합니다. 이 문제를 해결하기위한 네 가지 옵션이 있습니다.
현재 디렉토리 의 실제 경로 를 얻으려면 링크에서 정보를 검색해야합니다. ls -l
링크 를 사용하여 다음 과 같이 출력 할 수 있습니다 .
lrwxrwxrwx 1 jacob jacob 35 jan 15 08:23 /home/jacob/Bureaublad/Flyer_st/Verwijzing naar Site_current -> /home/jacob/Bureaublad/Site_current
어디 부분은 후에 ->
는 IS 실제 사용하여 심볼릭 링크 내부 경로, 또는 python
:
real = os.path.realpath("/path")
이것을 nautilus
스크립트 에서 사용 하면 현재 파일이나 폴더 의 실제 경로를 간접적으로 얻을 수 있습니다 .
다시 말하지만, 우리는이 문제를 해결할 수 와 깨끗한 우리의 손을 유지. 한 레벨 위로 이동하려면 먼저 다음에서 찾은 경로를 약간 편집하십시오.
/path/to/a/folder
으로
/path/to/a
다음 사용하여 xdotool
시뮬레이션 Ctrl+ L(다른 디렉토리로 이동 할 CLI 옵션이 없기 때문에, 노틸러스 창에 경로를 삽입 할 GUI 바로 가기를 현재 창을 사용하여이 ), 이후 수 있도록하는 xclip
편집 된 경로 +를 붙여 Enter, 우리는 해결책을 작업 한 !
우리는 내 바탕 화면의 링크 ( "텔레 그램에 링크")에서 열린 폴더 안에 있습니다. 실제 폴더 내의 하위 폴더입니다 Downloads
폴더 :
그런 다음 우리는에 커서를 대고 오른쪽 버튼을 클릭하면 모든 스크립트를 실행하는 폴더에있는 파일 :
상위 디렉토리의 경로가 자동으로 삽입됩니다.
또한 자동으로 Return누르면 디렉토리 레벨이 한 단계 위로 올라갑니다.
#!/usr/bin/env python3
import subprocess
import os
import time
def run(cmd):
subprocess.call(["/bin/bash", "-c", cmd])
current = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI").replace("file://", "").replace("%20", " ")
real = os.path.realpath(current)
up = os.path.abspath(os.path.join(real, os.pardir))
run("xdotool key Control_L+l")
run("printf '"+up+"' | xclip -selection clipboard")
run("xdotool key Control_L+v")
# confirm by virtually press Return
time.sleep(0.1)
run("xdotool key Return")
스크립트는 모두 필요 xdotool
하고를 xclip
:
sudo apt-get install xdotool xclip
디렉토리가 존재하지 않는 경우 디렉토리를 작성하십시오.
~/.local/share/nautilus/scripts
로 저장, 빈 파일로 위의 스크립트를 복사 level_up
에서 (확장자) ~/.local/share/nautilus/scripts
, 그리고 그것을 실행하기
이제 파일 (모든)> 스크립트> level_up 을 마우스 오른쪽 버튼 으로 클릭하여 스크립트를 실행할 수 있습니다 .
[ 편집 ] 경로를 입력 하는 대신 창 에 붙여 넣기 위해 위의 스크립트를 변경 했습니다. 그것은 설치했지만, 특히 매우 긴 경로에 주요 개선한다.nautilus
xdotool
needs
xclip
당신은 할 수 사용하지 않는 xdotool
스크립트가 열함으로써, 새로운 부모의 디렉토리에, 노틸러스 창을여십시오. 그러면 스크립트가 더 짧아집니다.
#!/usr/bin/env python3
import subprocess
import os
def run(cmd):
subprocess.call(cmd)
current = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI").replace("file://", "").replace("%20", " ")
real = os.path.realpath(current)
up = real[:real.rfind("/")]
subprocess.Popen(["nautilus", up])
이 경우을 설치할 필요가 없습니다 xdotool
. 원래 창을 닫고 새 창을 정확히 동일한 위치 (& 크기)에 배치하여 스크립트를 확장 할 수도 있습니다.
단점은 원래 창의 이력이 이런 식으로 손실된다는 것입니다.
기존 링크와 관련이 없지만 GUI에서 사용될 때 .desktop
마우스 오른쪽 버튼을 클릭 하면 실행 파일 을 자동으로 생성하는 노틸러스 스크립트 가 도움이 될 수 있습니다.
디렉토리를 마우스 오른쪽 버튼으로 클릭하여 링크로 작동하는 바로 가기를 만듭니다.
심볼릭 링크와 달리이 링크는 폴더 자체로 동작하지 않고 실제 폴더로 이동합니다.
#!/usr/bin/env python3
import subprocess
import os
current = os.getenv(
"NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
).replace("file://", "").replace("%20", " ").strip()
if os.path.isdir(current):
parent = os.path.abspath(os.path.join(current, os.pardir))
fldr_path = '"'+current+'"'
folder = current[current.rfind("/")+1:]
linkfilename = parent+"/"+folder+"link.desktop"
linkdata = [
"[Desktop Entry]",
"Type=Application",
"Name=Link to -> "+folder,
"Icon=folder",
"Exec=nautilus "+fldr_path,
]
with open(linkfilename, "wt") as wt:
for l in linkdata:
wt.write(l+"\n")
command = "chmod +x "+"'"+linkfilename+"'"
subprocess.Popen(["/bin/bash", "-c", command])
make_link
에서 (확장자) ~/.local/share/nautilus/scripts
, 그리고 그것을 실행하기.desktop
파일은 동일한 디렉토리에 작성됩니다. 필요한 경우 다른 곳으로 이동하십시오. 연결된 경로는 절대적입니다.대체 링크에 구별 아이콘을 제공 할 수 있습니다. 디렉토리 내에서 /usr/share/icons
"폴더" 를 검색하면 수많은 유효한 옵션이 나타납니다.
스크립트에서 줄 "Icon=folder",
이 대체되면 Icon=stock_folder-copy,
(확장자없이 아이콘 이름 사용) 내 시스템의 결과는 다음과 같습니다.
물론 당신은뿐만 아니라 자신 만의 아이콘을 사용할 수 있습니다 중,하지만 당신은 전체 경로를 사용하는 경우 (사용하지 않는 ~
), 당신은 해야 아이콘의 확장자를 포함.
아마도 가장 편리한 옵션 일 것입니다. 노틸러스 창이 앞에 있으면 바로 가기 키를 눌러 한 디렉토리를 위로 이동하십시오.
#!/usr/bin/env python3
import subprocess
import time
import os
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def run(cmd):
subprocess.call(["/bin/bash", "-c", cmd])
# get information on the active window
front = get(["xprop", "-id", get(["xdotool", "getactivewindow"])])
# (only) if it is a "normal" nautilus window, take action
if 'WM_CLASS(STRING) = "nautilus", "Nautilus"' in front:
# "virtually" press Ctrl + l
run("xdotool key Control_L+l"); time.sleep(0.05)
# copy the current path, calculate the "real" parent directory
real = os.path.realpath(get(["xclip", "-o"]))
up = os.path.abspath(os.path.join(real, os.pardir))
time.sleep(0.1)
# enter the superior directory
run("printf '"+up+"' | xclip -selection clipboard")
run("xdotool key Control_L+v")
# confirm by virtually press Return
time.sleep(0.1)
run("xdotool key Return")
이 솔루션의 경우, 모두 xclip
와 xdotool
필요가 시스템에 있어야합니다.
sudo apt-get install xdodool xclip
스크립트를 빈 파일에 복사하고 level_up.py
(어디서나) 다른 이름으로 저장하십시오 .
바로 가기 키에 추가하십시오 : 시스템 설정> "키보드"> "바로 가기"> "사용자 정의 바로 가기"를 선택하십시오. "+"를 클릭하고 다음 명령을 추가하십시오.
python3 /path/to/level_up.py
NB 스크립트 때문에 옵션을,이 경우 제한된 비트있는 바로 가기 자체가 시뮬레이션됩니다Ctrl+L및Ctrl+Alt+ 것은L당신이 ... 로그 아웃 할 것입니다Ctrl+\내 시스템에 근무 벌금을.
이 스크립트는 Ctrl+ 도 시뮬레이트 L하지만 nautilus '를 사용하는 대신 노틸러스 창에서 자동으로 선택된 경로를 복사하는 "NAUTILUS_SCRIPT_CURRENT_URI"
데 사용 xclip
됩니다. 옵션 1과 마찬가지로 스크립트는 실제 경로를 계산하고 상위 디렉토리를 파생시킵니다.
이 옵션은 키보드를 마우스 오른쪽 버튼으로 사용하는 것을 선호하는 경우 유용 할 수 있습니다.
또는 xdotool
패키지가 추가 된 Ubuntu 14.04, nautilus 3.10-1의 경우 .local/share/nautilus/scripts/updirtree
파일 에서 다음을 사용 하십시오.
# In nautilus, the pwd is the actual, not the link path
xdotool key ctrl-l
xdotool type "$(dirname $(pwd))" "
"
마지막 따옴표는 개행 문자 또는 리턴 ( 0x0a
) 만 포함해야합니다 . pwd
내에서 노틸러스는 떠들썩한 / 터미널에서 실행할 때와 다른 결과를 생성 - 그것은 실제 경로가 아닌 링크를 사용하여 경로를 반환합니다.
나는 이해가되지 않으며, 문서화되지 않았으며, 어떤 종류의 실행 환경이 코드를 실행하고 있는지 알 수는 없지만 (결과를 생성하는 쉘을 찾을 수 없음) 작동합니다. 그것은 해킹이기 때문에 노틸러스 버전을 포함 시켰습니다. 그것이 얼마나 오래 작동하는지 누가 알 수 있습니까? 다음 노틸러스 업그레이드 (또는 알려지지 않은 해석기)에서 중단 될 수 있지만, 마운트 된 위치에 대한 링크, 디렉토리 트리의 위치에 대한 링크 또는 디렉토리 트리의 일반 위치에서 작동합니다.
xclip
붙여 넣었 습니다.
깨끗한 수정이지만 이 커밋 을 되돌려 소스를 다시 작성해야합니다 .
diff --git a/src/nautilus-mime-actions.c b/src/nautilus-mime-actions.c
index ca1f0ac..0b363b4 100644
--- a/src/nautilus-mime-actions.c
+++ b/src/nautilus-mime-actions.c
@@ -2029,21 +2029,13 @@ activate_activation_uris_ready_callback (GList *files_ignore,
/* Convert the files to the actual activation uri files */
for (l = parameters->locations; l != NULL; l = l->next) {
- char *uri = NULL;
-
+ char *uri;
location = l->data;
/* We want the file for the activation URI since we care
* about the attributes for that, not for the original file.
*/
- if (nautilus_file_is_symbolic_link (location->file)) {
- uri = nautilus_file_get_symbolic_link_target_uri (location->file);
- }
-
- if (uri == NULL) {
- uri = nautilus_file_get_activation_uri (location->file);
- }
-
+ uri = nautilus_file_get_activation_uri (location->file);
if (uri != NULL) {
launch_location_update_from_uri (location, uri);
}
빌드 지시 사항 :
소스 다운로드 :
apt-get source nautilus
빌드 종속성 다운로드
sudo apt-get build-dep nautilus
위 패치에서 수정이 필요합니다
편집하다 src/nautilus-mime-actions.c
/* Convert the files to the actual activation uri files */
for (l = parameters->locations; l != NULL; l = l->next) {
char *uri = NULL;
location = l->data;
/* We want the file for the activation URI since we care
* about the attributes for that, not for the original file.
*/
if (nautilus_file_is_symbolic_link (location->file)) {
uri = nautilus_file_get_symbolic_link_target_uri (location->file);
}
if (uri == NULL) {
uri = nautilus_file_get_activation_uri (location->file);
}
if (uri != NULL) {
launch_location_update_from_uri (location, uri);
}
빌드 및 설치
autoreconf
./configure
make
설치하지 않고 테스트하려면
sudo killall -r "[\w]*nautilus"
./src/nautilus
설치하려면
sudo make install
이렇게하면 노틸러스가 대상 경로에 대한 링크를 확인합니다. BTW, 이것은 얼마 전에 버그로보고되었습니다. 이것이 기능이라고 생각하면 다른 버그 보고서를 제출하여 스위치 또는 특정 단축키 설정을 요청하십시오.
/usr/local/bin/
시스템이 항상 수정 된 사본을 실행할 수 있도록에서 설명 된대로,$PATH