老陌乱写-自动生成fstab的挂载信息
Tofloor
poster avatar
老陌
deepin
2018-08-31 06:26
Author
本帖最后由 myccloves 于 2018-8-30 22:27 编辑

今天遇到了一个网友,他出现了挂载问题,于是我们聊了起来。

两个人聊的很开心,他说他的,我说我说,都不知道自己在说些什么,哈哈。 最终他问题解决了,我才知道他要的是什么,所以这问题解决的,他云里雾里,我雾里云里……

不过解决了就好。

在解决完问题,我突发奇想,能不能写一个脚本,自动生成挂载信息。

一、需求

我需要把一些硬盘分区,挂载到指定的目录,所以我需要修改/etc/fstab文件。 此文件的一般格式如下:

  1. UUID=... 挂载点  文件系统类型  defaults 0 0
Copy the Code

如果我想把/dev/sda2挂载到/mnt/linuxdata,我需要先查UUID,记录下来,再创建目录/mnt/linuxdata,再编写配置文件… 很麻烦!!

如果能一下子创建目录,生成配置文件需要的信息就好了,所以我的想法是:

  1. 命令 sda2  /mnt/linuxdata
Copy the Code

这样就完成了。

二、编写脚本

  1. #!/bin/bash
  2. #快速生成fstab挂载信息

  3. if [ "$#"   -ne  2 ]; then
  4.     echo "Usage: createfstab sda1 /media/abc"
  5.     exit 1
  6. fi


  7. uuid=$(blkid | grep $1 | grep -o  " UUID=.[0-9a-zA-Z-]\\+" | sed 's/\"//g' )
  8. type=$(blkid | grep $1 | grep -o  " TYPE=\"[0-9a-z]*"  | sed 's/TYPE=\"//g')

  9. if [ -z "$uuid" -o -z "$type" ]; then
  10.     echo "没有找到设备或文件系统类型"
  11.     exit 1
  12. fi

  13. uuid=$(echo $uuid | sed 's/^ //g')
  14. type=$(echo $type | sed 's/^ //g')

  15. if [ ! -d "$2" ]; then
  16.     mkdir -p $2
  17.     if [ "$?" -ne 0 ]; then
  18.         echo "创建挂载点失败"
  19.         exit 1
  20.     fi
  21. fi

  22. echo "$uuid $2 $type defaults 0 0"
Copy the Code

三、测试脚本




查看一个sda2已经挂载到了/mnt/linuxdata中,这是我的物理机挂载好的信息,为了不破坏现有的结构,我做这样的测试:

把sda2挂载到/tmp/linuxdata目录中



我运行了:

  1. ./createfstab sda2 /tmp/linuxdata
Copy the Code

自动生成sda2挂载到/tmp/linuxdata的配置信息。
通过查看,输出了配置信息:

  1. UUID=9205394a-a56e-4f08-b0ec-9cd293743202 /tmp/linuxdata ext4 defaults 0 0
Copy the Code

而且还自动创建了目录:/tmp/linuxdata

下面我们来对比一下,生成的结果和fstab中的之前配置好的一不一样:



我们发现除了指定的挂载点不同,其它的一样,说明成功了。

如果要一步到位,就以管理员身份运行:

  1. sudo -i

  2. ./createfstab sda2 /tmp/linuxdata >> /etc/fstab
Copy the Code

注意:是追加,如果写成 “>” 恭喜你,把系统搞坏了。。。

后记
警告,这是老陌一时兴起写的东西,请不要在你的物理机上尝试,因为不知道有没有BUG,如果把你的系统搞坏了,概不负责!

Reply Favorite View the author
All Replies
avatar
zwq133
deepin
2018-08-31 06:42
#1
牛逼的一塌糊涂~~~
Reply View the author
avatar
158******41
deepin
2018-08-31 06:59
#2
一塔糊涂too
Reply View the author
avatar
177******38
deepin
2018-08-31 07:07
#3
一塌糊涂 double too
Reply View the author
avatar
何来
deepin
2018-08-31 08:56
#4
你不用zsh?这么好用的工具你没装?再装oh-my-zsh+autojump,设置好zshrc命令行真的好用,推荐。
Reply View the author
avatar
老陌
deepin
2018-08-31 14:42
#5
https://bbs.deepin.org/post/168223
牛逼的一塌糊涂~~~

哈哈 ,我看的也一塌糊涂。
Reply View the author
avatar
老陌
deepin
2018-08-31 14:42
#6
https://bbs.deepin.org/post/168223
你不用zsh?这么好用的工具你没装?再装oh-my-zsh+autojump,设置好zshrc命令行真的好用,推荐。 ...

没接触过zsh
Reply View the author