“重新挂载”分区的脚本(先卸载然后挂载)

“重新挂载”分区的脚本(先卸载然后挂载)

我正在用 NTFS(-3G) 和 fstab 做一些实验。对于我对 fstab 所做的每一次更改,我都需要发出:

sudo umount /mountpoint
sudo mount /mountpoint

检查结果。由于我正在进行大量测试,因此每次发出 umount/mount 组合真的很烦人。

有什么方法可以将这两个命令组合在一个remount脚本中吗?是否已经有任何开关可以做到这一点?

  • 我使用的是 Ubuntu 10.10
  • 传递给脚本的所有命令行参数都必须“重新传递”给命令mount(这样我可以使用-a-t type等)
  • 优选地,仅最后的参数应该传递给umount

答案1

在你的 shell 中(假设是 bash 或其他兼容的 shell)运行

function remount() { umount "$1" && mount "$1"; }

现在每当你跑步时remount /whatever,它都会执行一个umount,然后执行一个mount

如果您关闭 shell,该文件就会过期。因此,如果您希望它持续存在,请将其放入您的.bashrc.profile或任何适用于您的情况的内容中。

答案2

mount <something> -o remount,any_additional_options

但如果您需要更改文件系统类型(例如从 ntfs 到 ntfs-3g),这将不起作用

答案3

您知道可以在命令行上使用 a;将任意两个命令链接在一起吗?这使得您成对执行的操作非常容易从命令行中的历史记录运行。

umount /path ; mount /path

您可以考虑使用 AND 运算符来连接它们,以便只有 umount 成功时 mount 才会运行,如下所示:

umount /path && mount /path

如果需要,您甚至可以在其中添加编辑器,如下所示:

卸载/路径; vim /etc/fstab ;挂载/路径

驱动器将卸载,您将看到 fstab,当您退出编辑器时,它将再次安装。

除此之外,如果您需要针对多个路径的更通用的解决方案,函数的建议很好。此外,unix 中的任何一系列命令都可以制作成脚本。只需保存一个文本文件,如下所示:

#!/bin/bash
umount /path
mount /path

然后将其设置为可执行:

chmod +x filename

然后像这样运行它:

./filename

答案4

怎么样(未经测试):

function remount() {
  eval last=\$$#
  umount "$last" &&
  mount "$@"
}

您只需在 shell 中复制粘贴该代码或将其附加到您的 .bashrc 中

相关内容