我的 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 不改變,這就會起作用。