如何在不创建目录的情况下挂载驱动器?

如何在不创建目录的情况下挂载驱动器?

当您将闪存驱动器插入 Ubuntu 时,它会创建一个目录,并将/media/<username>闪存驱动器名称作为安装点名称。当您卸载该目录时,该目录就会完全消失。

当您mount <x>在命令行上执行此操作时,您始终需要一个安装点,该安装点必须是现有的目录。不创建文件夹怎么办?一定有办法的。

答案1

在类 Unix 系统上,您始终需要一个目录来使用挂载点。有一些软件,例如automountudev,会自动为您创建目录,但必须存在一个目录才能真正进行安装。

答案2

安装设备意味着通过特定目录使其文件系统可用(挂载点) 附着在以 为根的树上/

因此,您始终需要一个现有的目录来用作安装点。如果没有它,您将无法访问已安装的设备。

请注意,用作挂载点的目录不必为空;但是,安装后其旧内容将无法访问。因此,为了避免混淆,设备通常安装在空目录上。

@Kusalananda 的答案提供了一个功能,可以自动创建挂载点并对用户透明,但在幕后目录必须始终存在。

答案3

我认为困惑在于理解管理的自动安装程序/media

挂载功能需要一个可以挂载文件系统的目录。自动挂载程序使用与正在挂载的文件系统关联的标签(如果有)创建此目录,然后挂载文件系统本身。稍后,在卸载文件系统后,它会删除该目录。

视觉效果是在没有目录的情况下安装文件系统,我认为这就是您在一般情况下想要实现的目标。不幸的是,正如其他人已经指出的那样,除非通过自动安装程序的技巧,否则这是不可能的。

mkdir /mnt/dsk
mount /dev/sdb1 /mnt/dsk
# ....
umount /mnt/dsk
rmdir /mnt/dsk

答案4

mymount () {
    local args=( "$@" )
    local dir="${args[-1]}"

    test -d "$dir" || mkdir -p "$dir" || exit 1
    command mount "$@"
}

在大多数 Unices 上,对于大多数文件系统,该mount实用程序需要安装点是现有目录。

随着bash上面的 shell 函数,如果该目录尚不存在,则会创建该目录。调用该函数时,假定挂载点是命令行上的最后一个参数。这使您可以将设备安装在任何地方,而无需手动创建挂载点。

这可能有点像/media/username在系统上创建挂载点的任何操作。

同样,您可以定义myumount卸载设备并删除其安装点。

这显然并没有回避目录不能被创建mount(或被删除umount)的事实,至少mount我所知道的实现不能,但它允许您在函数中隐藏目录的创建。


Unix哲学:做一件事,并把它做好。

mount需要一个目录来安装某些东西。创建此目录是mkdir.

相关内容