我使用的 Ubuntu 版本 (14.04.1) 会自动安装我的数码相机并生成一个框,邀请我说出要用它做什么。由于我对提供的所有选项都不满意,我编写了一个脚本,它完全按照我的要求执行,使用 gphoto2 访问相机并从中获取文件。一个问题是,即使我已为框指定“不执行任何操作”,相机仍处于安装状态,因此,就 gphoto2 而言,由于未释放而不可用。为了释放它,我必须打开或找到文件夹显示,并专门弹出相机。我宁愿不费心执行此步骤,而只是让我的脚本运行。我想知道是否有办法做到这一点。
答案1
对于 Ubuntu 17.10、18.04 及更高版本,您需要使用实用程序gio
(替代gvfs-mount
)。
如果相机已安装并且已安装 gphoto2,请尝试
gio mount -s gphoto2
但如果你想专门针对相机:
gio mount -l
将向您显示可安装的驱动器。
如果你插入了相机,它可能看起来像这样:
$ gio mount -l
Drive(0): DA4032
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
Volume(0): Canon Digital Camera
Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
Mount(0): Canon Digital Camera -> gphoto2://%5Busb%3A002,002%5D/
Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
Mount(1): Canon Digital Camera -> gphoto2://%5Busb%3A002,002%5D/
Type: GDaemonMount
复制之后的位置->
将允许您通过gio mount -u
(卸载,如果您查看帮助:gio help mount
gio mount -u gphoto2://%5Busb%3A002,002%5D/
将通过 shell 卸载相机。现在,要自动执行此操作,您需要创建一个 systemd 脚本。
答案2
如果您不想摆弄udev
(这是系统的事情),您可以使用界面udisk
来卸载相机。
相机通常会安装在一个固定的地方,比如/media/user/1234-5678/
或类似的(YMMV,取决于相机如何格式化卡);并且作为一个设备,比如说/dev/sdc1/
。
现在,你可以使用以下方法从脚本中卸载它
udisksctl unmount -b /dev/sdc1
问题是设备可以改变;我的解决方案是使用这个小魔法
udisksctl unmount -b $(mount | grep 1234-5678 | cut -d" " -f1)
只要卡 ID 不变,此方法便可行。