Gru*_*bel 32 command-line mount
如何从命令行触发自动挂载?我所说的“自动挂载”并不是指全自动挂载,而是获取可用设备列表,然后选择一个并使其最终成为/media/{user}/{diskid}. 例如,此功能由 Nautilus 或 Thunar 提供,但我似乎找不到触发这种半自动挂载的命令行工具。
pmount是我发现的最接近的,但似乎由完全不同的机制在下面工作,并使设备显示为/media/sdf或类似的东西。
Rad*_*anu 37
您可以使用:
udisksctl安装-b DEVICE_NAME
device_name存储设备的名称在哪里,应该类似于/dev/sdb1.
使用lsblk或sudo fdisk -l命令您可以找出连接到系统的所有存储设备。
Gru*_*bel 21
gio mountgvfs现在被列为已弃用 (2018),建议您使用“gio”,它是 Gnome In Out 和 Glib 的一部分。参见维基百科。
例如,自动挂载第二个驱动器分区;使用以下命令创建一个具有可执行权限的 bash 脚本以在启动时运行:
gio mount -d /dev/sda2
Run Code Online (Sandbox Code Playgroud)
如果您是分区的所有者(请参阅chown参考资料),则不需要 sudo。
挂载位于例如的 ISO 文件~/ISOs:
gio mount "archive://file%3A%2F%2F%2Fhome%2Fpablo%2FISOs%2Fubuntu-18.04-desktop-amd64.iso"
Run Code Online (Sandbox Code Playgroud)
您可以使用 Python 3 对路径进行URL 编码和realpath(连接到archive://:
python -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1], \"\"))" "file://$(realpath ubuntu-18.04-desktop-amd64.iso)"
Run Code Online (Sandbox Code Playgroud)
这将安装在/run/user/$(id -u)/gvfs/.
作为替代,gnome-disk-image-mounter将安装在/media/$USER/.
要卸载使用gio mount -u /run/user/$(id -u)/gvfs/archive*(或/media/$USER/,取决于您的安装方式)。
udisksctl列出可用设备:
udisksctl status
Run Code Online (Sandbox Code Playgroud)
安装是通过以下方式完成的:
udisksctl mount -b /dev/sdf
Run Code Online (Sandbox Code Playgroud)
或者
udisksctl mount -p block_devices/sdf
Run Code Online (Sandbox Code Playgroud)
卸载是通过以下方式完成的:
udisksctl unmount -b /dev/sdf
Run Code Online (Sandbox Code Playgroud)
或者
udisksctl unmount -p block_devices/sdf
Run Code Online (Sandbox Code Playgroud)
该object-path可以通过做可以看出:
udisksctl dump
Run Code Online (Sandbox Code Playgroud)
类型的对象org.freedesktop.UDisks2.Block似乎是有效的object-patch,/org/freedesktop/UDisks2/前缀必须从路径中删除,以便 udisksctl 接受它们。
gvfs-mount可以通过以下方式列出可用设备:
gvfs-mount --list
Run Code Online (Sandbox Code Playgroud)
可以通过以下方式安装它们:
gvfs-mount -d /dev/sdf
Run Code Online (Sandbox Code Playgroud)
可以通过以下方式卸载:
gvfs-mount --unmount /media/user/01234567890
Run Code Online (Sandbox Code Playgroud)
剩下的一个问题是我不知道如何gvfs-mount --list在 mount 命令中使用输出,因为--list不会显示块设备名称,并且尝试使用它在挂载中打印的设备名称将导致:
Error mounting location: volume doesn't implement mount
Run Code Online (Sandbox Code Playgroud)
虽然两者gvfs-mount并udisksctl会为执行这些任务,它们的接口是不切实际的,因为他们不提供磁盘的人类可读的状态可用,只是一个过于冗长的信息转储。
一个按要求工作的简单解决方案(挂载到 /media/{user}/{diskid}),但它不能列出设备,但需要提供准确的、区分大小写的卷标作为参数 $1
安装:
DEVICE=$(findfs LABEL=$1) && udisksctl mount -b $DEVICE
Run Code Online (Sandbox Code Playgroud)
卸载:
DEVICE=$(findfs LABEL=$1) && udisksctl unmount -b $DEVICE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34178 次 |
| 最近记录: |