Shell - 挂载硬盘

前几天装上了从淘宝买来的光驱位硬盘盒,我也就把光驱废掉了换成了一个硬盘,这样Ubuntu和win7可以开机的时候切换了。
因为我在两个硬盘上分别装的系统,而不是一个硬盘上双系统。

但是问题来了,ubuntu下不会像插u盘那样自动挂载硬盘。那么怎么办?

首先,我们应该看看硬盘的情况,比如分区这些。

 1 huangjacky@huangjacky-laptop:~$ sudo fdisk -l
 2 [sudo] password for huangjacky: 
 3 omitting empty partition (5)
 4 
 5 Disk /dev/sda: 500.1 GB, 500107862016 bytes
 6 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
 7 Units = sectors of 1 * 512 = 512 bytes
 8 Sector size (logical/physical): 512 bytes / 512 bytes
 9 I/O size (minimum/optimal): 512 bytes / 512 bytes
10 Disk identifier: 0x95b895b8
11 
12    Device Boot      Start         End      Blocks   Id  System
13 /dev/sda1   *          63   102414374    51207156    7  HPFS/NTFS/exFAT
14 /dev/sda2       102414436   976768064   437176814+   f  W95 Ext'd (LBA)
15 /dev/sda5       102414438   348176744   122881153+   7  HPFS/NTFS/exFAT
16 /dev/sda6       348176808   593939114   122881153+   b  W95 FAT32
17 /dev/sda7       593939178   802671659   104366241    7  HPFS/NTFS/exFAT
18 /dev/sda8       802671723   874032389    35680333+   7  HPFS/NTFS/exFAT
19 /dev/sda9       874032453   976768064    51367806    7  HPFS/NTFS/exFAT
20 
21 Disk /dev/sdb: 80.0 GB, 80026361856 bytes
22 255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectors
23 Units = sectors of 1 * 512 = 512 bytes
24 Sector size (logical/physical): 512 bytes / 512 bytes
25 I/O size (minimum/optimal): 512 bytes / 512 bytes
26 Disk identifier: 0xe445604b
27 
28    Device Boot      Start         End      Blocks   Id  System
29 /dev/sdb1   *        2048   148301823    74149888   83  Linux
30 /dev/sdb2       148303870   156299263     3997697    5  Extended
31 /dev/sdb5       148303872   156299263     3997696   82  Linux swap / Solaris

可以看见sda是我win7的硬盘分区,那么接下来就是挂载。

1 huangjacky@huangjacky-laptop:~$ sudo mount /dev/sda1 /mnt/win_c

这个命令将/dev/sda1分区挂载到指定的目录,那么我们打开这个目录就是打开win7系统的C盘了。

卸载:

1 huangjacky@huangjacky-laptop:~$ sudo umount /mnt/win_c

手动操作就是这样,那么我们有这么多个盘,每次都这样操作岂不是很麻烦?

所以这里我们需要编写一个sh脚本。

 1 #! /bin/sh
 2 # 挂载所有的硬盘到指定目录、
 3 mymount()
 4 {
 5     echo "check and create mount directory!"
 6     if [ ! -d "/mnt/win_c" ] 
 7     then
 8         mkdir /mnt/win_c
 9     fi
10 
11     if [ ! -d "/mnt/win_d" ] 
12     then
13         mkdir /mnt/win_d
14     fi
15 
16     if [ ! -d "/mnt/win_e" ] 
17     then
18         mkdir /mnt/win_e
19     fi
20 
21     if [ ! -d "/mnt/win_f" ] 
22     then
23         mkdir /mnt/win_f
24     fi
25 
26     if [ ! -d "/mnt/win_g" ] 
27     then
28         mkdir /mnt/win_g
29     fi
30 
31     if [ ! -d "/mnt/win_h" ] 
32     then
33         mkdir /mnt/win_h
34     fi
35 
36     echo "start mount win disk!!"
37     mount /dev/sda1 /mnt/win_c
38     mount /dev/sda5 /mnt/win_d
39     mount /dev/sda6 /mnt/win_e
40     mount /dev/sda7 /mnt/win_f
41     mount /dev/sda8 /mnt/win_g
42     mount /dev/sda9 /mnt/win_h
43     echo "mount over!Have fun"
44 }
45 
46 myumount()
47 {
48     echo "start umounting win disk!!"
49     umount /mnt/win_c
50     umount /mnt/win_d
51     umount /mnt/win_e
52     umount /mnt/win_f
53     umount /mnt/win_g
54     umount /mnt/win_h
55     echo "all down bye!"
56 }
57 
58 echo "mount or umount win disk?please type m/u"
59 read M_U
60 # echo $M_U 不再需要打印字符了
61 if [ "$M_U" = "m" ]; then
62     mymount
63 else
64     myumount    
65 fi

shel l脚本需要注意的地方就是if这个条件这里[]和then要是在同一行那么就得加上;,还有就是 中间的判断要和中括号有空格,比如[ 判断条件 ],有一次我就是少了个空格,代码一直错,还找不到问题在什么地方。

下过如下:

1 huangjacky@huangjacky-laptop:~$ sudo sh ~/game/mountwin.sh
2 mount or umount win disk?please type m/u
3 m
4 check and create mount directory!
5 start mount win disk!!
6 mount over!Have fun
posted @ 2012-04-24 16:43  HuangJacky  阅读(2908)  评论(0编辑  收藏  举报
AdminLogin