默认情况下,插入可移动介质后,Ubuntu 将在挂载目录中打开 Nautilus。我禁用了此功能,但想知道是否可以将 Gnome 配置为在挂载目录中打开终端。
编辑:我正在使用 Ubuntu 15.10。
答案1
编辑版本这个脚本完成此工作。当连接(任何)USB 设备时,将gnome-terminal
在其(根)目录中打开。
在示例中,当usb
连接了 14.04 启动闪存驱动器时:
剧本
#!/usr/bin/env python3
import os
import subprocess
import time
def get_mountedlist():
return [(item.split()[0].replace("├─", "").replace("└─", ""),
item[item.find("/"):]) for item in subprocess.check_output(
["lsblk"]).decode("utf-8").split("\n") if "/" in item]
def identify(disk):
command = "find /dev/disk -ls | grep /"+disk
output = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
if "usb" in output:
return True
else:
return False
done = []
while True:
mounted = get_mountedlist()
new_paths = [dev for dev in mounted if not dev in done and not dev[1] == "/"]
valid = [dev for dev in new_paths if identify(dev[0]) == True]
for item in valid:
os.chdir(item[1])
subprocess.Popen(["gnome-terminal"])
done = mounted
time.sleep(4)
如何使用
- 将脚本复制到一个空文件中,另存为
open_usb.py
使用以下命令测试运行脚本:
python3 /path/to/open_usb.py
如果一切正常,将其添加到启动应用程序:Dash>启动应用程序>添加命令:
python3 /path/to/open_usb.py
笔记
- 我在 Unity (14.04) 上测试过它,但它不太可能在任何Ubuntu 版本,只要有默认配置(包括
python3
) - 该脚本每四秒仅运行一次非常简单且轻量级的检查。在我的测试中,我无法确定任何额外的处理器负载。
编辑
正如评论中提到的那样,尽管脚本可以正常工作,但是当您安全地删除usb
设备:给出警告,提示该卷已被脚本“占用”。
原因是脚本cd
-s 进入了卷的目录,然后在卷的根目录中打开终端。
解决方案
解决方案很简单;在设备根目录中打开终端后,让脚本再次离开目录usb
。在以下版本中,此问题已得到修复:
#!/usr/bin/env python3
import os
import subprocess
import time
home = os.environ["HOME"]
def get_mountedlist():
return [(item.split()[0].replace("├─", "").replace("└─", ""),
item[item.find("/"):]) for item in subprocess.check_output(
["lsblk"]).decode("utf-8").split("\n") if "/" in item]
def identify(disk):
command = "find /dev/disk -ls | grep /"+disk
output = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
if "usb" in output:
return True
else:
return False
done = []
while True:
mounted = get_mountedlist()
new_paths = [dev for dev in mounted if not dev in done and not dev[1] == "/"]
valid = [dev for dev in new_paths if identify(dev[0]) == True]
for item in valid:
os.chdir(item[1])
subprocess.call(["gnome-terminal"])
os.chdir(home)
done = mounted
time.sleep(4)