我通过“制作链接”选项创建了一个快捷方式。当我进入这个快捷方式的文件夹时,我看不到它上面的任何文件夹,所以我无法轻松导航到它们。
有没有办法在 GUI 中向上移动一个文件夹?也许是一个热键?(cd ..这次不行^__^)。
例如,在 Windows 中,我确实能够按照我描述的方式进行导航,这是一个解释它的 Win10 图像:
Jac*_*ijm 16
这个问题有几个挑战:
nautilus 不直接从命令行通信,例如获取当前活动目录,也不能从命令行“发送”当前打开的文件夹 (-window) 到另一个目录。"NAUTILUS_SCRIPT_CURRENT_URI",Nautilus 不会返回当前文件夹的真实路径,而是“看到”链接,就好像它是一个实际文件夹一样。因此,解决方案很脏。我们需要找到解决方法。下面四个选项来解决这个问题。
要获得当前目录的真实路径,我们必须从链接中检索信息。我们可以通过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
Run Code Online (Sandbox Code Playgroud)
其中后面的部分->是符号链接内的真实路径,或者,使用python:
real = os.path.realpath("/path")
Run Code Online (Sandbox Code Playgroud)
在nautilus脚本中使用它,我们可以间接获得当前文件或文件夹的真实路径。
同样,我们无法解决这个问题并保持双手清洁。为了向上移动一级,我们首先稍微编辑找到的路径,从:
/path/to/a/folder
Run Code Online (Sandbox Code Playgroud)
进入
/path/to/a
Run Code Online (Sandbox Code Playgroud)
然后,使用xdotool模拟Ctrl+ L(将路径插入 nautilus 窗口的 GUI 快捷方式,因为没有使用当前窗口移动到另一个目录的 cli 选项),然后xclip粘贴编辑后的路径 + Enter,我们有一个可行的解决方案!
我们在一个文件夹中,从我桌面上的链接(“电报链接”)打开。在真正的文件夹是我的子文件夹中Downloads的文件夹:
然后,如果我们右键单击文件夹内的任何文件以运行脚本:
自动插入上级目录的路径:
并且,也会自动Return按下,我们将目录向上移动一级:
lrwxrwxrwx 1 jacob jacob 35 jan 15 08:23 /home/jacob/Bureaublad/Flyer_st/Verwijzing naar Site_current -> /home/jacob/Bureaublad/Site_current
Run Code Online (Sandbox Code Playgroud)
该脚本需要xdotool和xclip:
sudo apt-get install xdotool xclip
Run Code Online (Sandbox Code Playgroud)创建,如果它不存在,则目录
~/.local/share/nautilus/scripts
Run Code Online (Sandbox Code Playgroud)将上面的脚本复制到一个空文件中,将其另存为level_up(无扩展名)~/.local/share/nautilus/scripts,并使其可执行
现在您应该能够通过右键单击文件(任何)> 脚本 > level_up来运行脚本:
[编辑] 我更改了上面的脚本以将路径粘贴到nautilus窗口中,而不是xdotool 输入它。它needs xclip需要安装,但它是一个重大改进,尤其是在很长的路径上。
您可以xdotool通过让脚本在父目录中打开一个新的nautilus 窗口来避免使用。脚本会更短:
real = os.path.realpath("/path")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您不需要安装xdotool. 我们甚至可以通过关闭原始窗口并将新窗口放置在完全相同的位置(& 大小)来扩展脚本。
缺点是原始窗口的历史记录以这种方式丢失。
与现有链接无关,但是当从 GUI 使用时,用于.desktop在右键单击时自动创建可执行文件的 nautilus 脚本可能会有所帮助:
右键单击目录以创建快捷方式(表现为链接)
与符号链接不同,这些链接将带您到实际的文件夹,而不会表现为文件夹本身:
/path/to/a/folder
Run Code Online (Sandbox Code Playgroud)
make_link(无扩展名)~/.local/share/nautilus/scripts,并使其可执行.desktop将在同一目录中创建一个可执行文件,如果需要,将其移动到其他地方;链接路径是绝对的。您可以为备用链接指定一个有区别的图标。如果您在目录中搜索/usr/share/icons“文件夹”,则会弹出许多有效选项。
如果在脚本中该行"Icon=folder",被替换为Icon=stock_folder-copy,(使用不带扩展名的图标名称),则我的系统上的结果是:
当然,您也可以使用自己的自定义图标,但如果您使用完整路径(不要使用~),则应包括图标的扩展名。
可能是最方便的选择;nautilus 窗口在前面,按快捷键向上移动一个目录。
/path/to/a
Run Code Online (Sandbox Code Playgroud)
对于此解决方案,xclip和 都xdotool需要在您的系统上。
sudo apt-get install xdodool xclip
Run Code Online (Sandbox Code Playgroud)将脚本复制到一个空文件中,将其另存为level_up.py(任意位置)。
将其添加到快捷键:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:
python3 /path/to/level_up.py
Run Code Online (Sandbox Code Playgroud)NB快捷选项是有点在这种情况下,有限的,因为剧本本身将模拟Ctrl+L,和Ctrl+Alt+L会使你注销...Ctrl+\工作得很好我的系统上。
此脚本也模拟Ctrl+ L,但它没有使用 nautilus' "NAUTILUS_SCRIPT_CURRENT_URI",而是用于xclip在 nautilus 窗口中复制自动选择的路径。与选项 1 一样,脚本然后计算实际路径并导出上级目录。
如果您更喜欢键盘而不是使用右键单击,则此选项可能很有用。