目录

1.为什么要进行挂载

2.mount挂载

(1)fdisk查看分区

(2)mount基本格式

(3)挂载光驱

3.题目要求:

(1)U盘的挂载

(2)U盘的卸载

(3)显示U盘中的文件

(4)从硬盘复制文件到U盘

(5)从U盘复制文件到硬盘

(6)退出程序

(7)调用函数

(8)运行结果

第五步:卸载U盘挂载


Linux下Shell编程(一)

Shell程序中的特殊字符(二)

Shell程序中的流程控制(三)

Shell程序中的函数定义

Shell程序中的命令组合应用

mount挂载和分区查看fdisk

Linux下的挂载

为什么要挂载

参考文章:

提示:虽然上面这位博主已经给出了代码,但是当你运行时,你其实并知道到底在干些什么,所以是对上面的补充,并进行程序代码的解释。

1.为什么要进行挂载

  • 对于Linux来说,挂载外部设备是一个非常重要的功能,并且经常使用。就是将一个设备挂接到一个已存在目录上,这里的设备通常是存储设备,可以挂载光盘,硬盘,磁带,光盘镜像文件等;但是挂载之后这些目录以前的内容将不可用。
  • Linux系统将所有的设备都看作文件,将整个计算机的资源都整合成一个大的文件目录。如果我们要访问存储设备中的文件,必须将我呢间所在的分区挂载到一个已存在的目录上,然后通过这个目录来访问存储设备。
  • 注意:挂载源和挂载点。
  • /mnt目录存放手动挂载的硬件;
  • /media目录存放自动挂载的硬件(载点都是由系统自动建立和删除的)
  • /dev不是存放设备的驱动程序,而是作为访问外部设备文件的接口。比如,我们的U盘,插入linux系统后,用fdisk -l查看分区,显示文件为/dev/sda1。
     

2.mount挂载

(1)fdisk查看分区

  • 磁盘分区表操作工具
    格式:fdisk[参数]
  • -l:列出指定的外围设备的分区表状况;
  • -u: 搭配-l参数列表,会用分区数目取代柱数面数目,来表示每个分区的起始地址。

(2)mount基本格式

  • 挂载文件系统,使用权威超级用户或者‘/etc/fstab’中允许的使用者:
  • 格式:mount [--参数][设备名称][挂载点]
  • -a:安装在/etc/fstab文件列出的所有文件系统;
  • -l:列出当前已挂载的设备,文件系统名称和挂载点;
  • -o:指定挂载选项,如“-o nolock”表示禁用锁定,ro表示只读方式,loop表示把挂载的设备当成是一个磁盘分区;
  • -t:<文件系统类型>指定设备的文件系统类型;
  • ext2  Linux目前常用的文件系统
  • Msdos:MS-DOS的fat16;
  • Vfat:windows98常用的fat32;
  • Nfs:网络文件系统;
  • iso9660: CD-ROM光盘标准文件系统;
  • Auto:windows NT/2000/XP的文件系统;
  • Ntfs:自动检测文件系统。

(3)挂载光驱

  • 进入computer->mnt:到mnt目录下创建一个目录demo用来进行挂载:
  • mkdir /mnt/demo
  • 确定挂载源设备
  • 进入设备dev目录:cd /dev
  • 查看设备情况:ls -l 
  • 第一个例子:这里使用挂载源设备为U盘
  • 提示:可以看到该文件是一个块设备,所以不能直接进行访问,需要挂载之后才能访问。
  • 挂载语句:mount -t vfat -o ro /dev/sdb1 /mnt/demo
  • 进入root用户进行挂载时,可能会提示以下信息:
  • /dev/sdb1 is already mounted or /mnt/demo busy
    /dev/sdb1 is already mounted on /media/krgroots/disk
  • 解决方案
  • 下载dmsetup:apt-get install dmsetup
  • 执行:dmsetup status查看状态
  • 执行第二句:dmsetup remove_all
  • 第二个例子:挂载/dev/cdrom挂载源
  • 挂载语句:mount -t iso9660 -o ro /dev/cdrom /mnt/demo/
  • 可能会报错:mount: no medium found on /dev/sr0
  • 解决方案:解决方案
  • 挂载成功
  • 第三个例子:挂载光盘镜像文件(.iso文件)
  • 第一步:准备一个ISO文件,如Center-7-x86_64-DVD-1908.iso;
  • 第二步:在/mnt/目录下创建 一个ISOdemo文件:mkdir /mnt/isodemo
  • 第三步:挂载语句:mount -t iso9660 -o loop /documents/Center-7-x86_64-DVD-1908.iso /mnt/isodemo
  • 开机自动挂载
  • 挂载的资源在重庆系统之后失效,需要重新挂载,如果需要设置开机自动挂载,需要将挂载信息设置到/etc/fstab配置文件当中,步骤如下:
  • 比如将/dev/cdrom挂载源和Center-7-x86_64-DVD-1908.iso设置为自动挂载;
  • 参数解释:
  • /dev/cdrom:表示挂载源,要挂载的磁盘分区或者存储设备或者读取文件系统;
  • /mnt/cdrom:表示挂载点,挂载的位置;
  • iso9660:表示文件系统类型,ext4文件系统,iso9660标准文件系统,swap表示交换分区等;
  • default:挂载参数,一般默认;
  • 第一个0:表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份,如果是0,dump被忽略,一般大多数的dump都是0;
  • 第二个0:读取文件系统时检查顺序,允许的数字为0,1,2.根目录应当获得最高的优先权1,表示其他所有需要被检查的设备为2,不检查使用0.
  • 接下来是重启系统:重新启动系统

3.题目要求:

  • 编写一个Shell程序,呈现一个菜单,有0-5共6个命令选项,
  • 1为挂载U盘;
  • 2为卸载U盘;
  • 3为显示U盘的信息;
  • 4把硬盘中的文件拷贝到U盘;
  • 5把U盘中的文件拷贝到硬盘中;
  • 选0为退出。

代码实现

(1)U盘的挂载

#!/bin/bash

mountusb(){
        clear
       	mkdir -p /mnt/usb
        fdisk -l | grep /dev/sd
        echo -e "Please Enter the device name of usb as shown above:\c"
        read PARAMETER
        mount /dev/$PARAMETER /mnt/usb
	    echo "successfully mount!"
}

提示:fdisk -l | grep /dev/sd:表示查看分区,并将结果通过管道“|”的方式作为grep的输入,使用grep查看/dev/目录以sd开头的文件。

(2)U盘的卸载

umountusb(){
    clear
    umount /mnt/usb
	echo "successfully umount!"
}

(3)显示U盘中的文件

display(){
        clear
        ls -la /mnt/usb
}

(4)从硬盘复制文件到U盘

cpdisktousb(){
        clear
        echo -e"Please Enter filename to be Copide(number Current director):\c"
        read FILE
        echo "Copying please wait..."
        cp $FILE /mnt/usb
}

提示:这里的 cp $FILE /mnt/usb:表示将文件从硬盘复制到U盘中。 

(5)从U盘复制文件到硬盘

cpusbtodisk(){
        clear
        echo -e "Please Enter the filename to be Copide in USB:\c"
        read FILE
        echo "Copying ,Please wait..."
        cp /mnt/usb/$FILE .
}

提示:注意这里的cp /mnt/usb/$FILE  .(注意这里的点)表示从U盘中复制文件到当前目录下。 

(6)退出程序

quit(){
        clear
        echo "************************8"
        echo"***  thank you to use ,Good bye!   ***"
        exit 0
}

(7)调用函数

clear
	while true
                do
                	echo "============================="
                	echo "***  LINUX USB MANAGE PROGRAM  ***"
                	echo "        1-MOUNT USB"              
                	echo "        2-UNMOUNT USB"
                	echo "        3-DISPLEAY USB INFORMATION"
                	echo "        4-COPYFILE IN DISK TO USB"
                	echo "        5-COPY FILE IN USB TO DISK"
                	echo "        0-EXIT"
                	echo "============================"
                	echo -e "Please Enter a Choice (0-5):\c"

                	read CHOICE
                
			        case $CHOICE in
                	        1)
                        	        mountusb
                                	;;
                        	2)	
                                	umountusb
                                	;;
                        	3)
                                	display
                                	;;
                        	4)
                                	cpdisktousb
                                	;;
                        	5)
                                	cpusbtodisk
                                	;;
                       	    0)
                               		quit
					                ;;
                        	*)
                                	echo "Invalid Choice Corrent Choice is(0-5)"
                                	sleep 4
                                	clear
					                continue
                                	;;

                        	esac
			        done

(8)运行结果

第一步:挂载U盘

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Shell

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Linux 文件怎么复制到容器里面去_02

第二步:查看U盘文件

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_文件系统_03

第三步:从硬盘复制文件到U盘

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Shell_04

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_文件系统_05

查看文件是否复制成功到U盘: 

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Linux 文件怎么复制到容器里面去_06

第四步:从U盘复制文件到硬盘

 

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Shell_07

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Shell_08

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Shell_09

第五步:卸载U盘挂载

Linux 文件怎么复制到容器里面去 linux如何将文件复制到u盘_Shell_10