Linux之文件系统与SHELL
文件系统介绍
ext2/ext3/ext4
Ext2是GNU/Linux系统中标准的文件系统。这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有极快的速度和极小的CPU占用率。Ext2既可以用于标准的块设备(如硬盘),也被应用在软盘等移动存储设备上。
Ext3是Ext2的下一代,也就是保有Ext2的格式之下再加上日志功能。Ext3是一种日志式文件系统(Journal File System),最大的特点是:它会将整个磁盘的写入动作完整的记录在磁盘的某个区域上,以便有需要时回溯追踪。当在某个过程中断时,系统可以根据这些记录直接回溯并重整被中断的部分,重整速度相当快。该分区格式被广泛应用在Linux系统中。
在Ext4中,把支持文件连续写入,也就是说,在文件创建的时候,把为它创建一个连续的存储空间,这样,假如要再在该文件中写入东西,就可以在连续空间中写入,这样就意味着减少了文件的碎片和提高了驱动器的性能。
这个功能不仅仅出现在Ext4中,已经出现在Reiser4和 IBM的 JFS文件系统中,分别被用在Linux和AIX中。就像许多其他的现代文件系统一样,Ext4也是一种日志文件系统,在性能、备份和灾难恢复中起到重要的作用。Ext4兼容ext3标准,就是说,你可以把ext4的分区以ext3加载,但是你把失去它的连续写入功能。
FAT16/FAT32
作为一种文件名称,FAT(File Allocation Table,文件分配表)自1981年问世以来,已经成为一个计算机术语。由于时代的原因,包括Windows、MacOS以及多种Unix版本在内的大多数操作系统均对FAT提供支持。
这是MS-DOS和最早期的Windows 95操作系统中使用的磁盘分区格式。它采用16位的文件分配表,是目前获得操作系统支持最多的一种磁盘分区格式,几乎所有的操作系统都支持这种分区格式,从DOS、Windows 95、Windows OSR2到现在的Windows 98、Windows Me、Windows NT、Windows 2000、Windows XP都支持FAT16,但只支持2GB的硬盘分区成为了它的一大缺点。FAT16分区格式的另外一个缺点是:磁盘利用效率低(具体的技术细节请参阅相关资料)。为了解决这个问题,微软公司在Windows 95 OSR2中推出了一种全新的磁盘分区格式——FAT32。
这种格式采用32位的文件分配表,对磁盘的管理能力大大增强,突破了FAT16下每一个分区的容量只有2GB的限制。由于现在的硬盘生产成本下降,其容量越来越大,运用FAT32的分区格式后,我们可以将一个大容量硬盘定义成一个分区而不必分为几个分区使用,大大方便了对磁盘的管理。而且,FAT32与FAT16相比,可以极大地减少磁盘的浪费,提高磁盘利用率。目前,Windows 95 OSR2以后的操作系统都支持这种分区格式。但是,这种分区格式也有它的缺点。首先是采用FAT32格式分区的磁盘,由于文件分配表的扩大,运行速度比采用FAT16格式分区的磁盘要慢。另外,由于DOS和Windows 95不支持这种分区格式,所以采用这种分区格式后,将无法再使用DOS和Windows 95系统。
NTFS
为了弥补FAT在功能上的缺陷,微软公司创建了一种称作NTFS的文件系统技术。它的优点是安全性和稳定性方面非常出色,在使用中不易产生文件碎片。并且能对用户的操作进行记录,通过对用户权限进行非常严格的限制,使每个用户只能按照系统赋予的权限进行操作,充分保护了系统与数据的安全。Windows 2000、Windows NT、以及Windows XP都支持这种分区格式。
VFAT
VFAT叫长文件名系统,这是一个与Windows系统兼容的Linux文件系统,支持长文件名,可以作为Windows与Linux交换文件的分区。
磁盘访问
ext2文件系统结构示意图
图1 ext2文件系统示意图
super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量。以及文件系统的格式与相关信息等。
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block的号码;
block:实际记录文件的内容,若文件太大时,会占用多个block。
ext2文件读取示意图:
图2 ext2数据访问示意图
FAT文件读取示意图:
图3 FAT数据访问示意图
SHELL-BASH
图4 硬件、内核与用户的相关性
BASH的主要优点
history:我们只要在命令行中按上下键就可以找到前后一个输入的命令。而在很多distribution中,默认的命令记忆功能可以达到1000个。不过需要注意的是/.bash_history记录的是前一次登陆以前所执行的命令,而这一次登陆所执行的命令都被暂存在临时内存中,当注销系统后,该命令记忆才会记录到.bash_history中。
命令与文件补全功能(Tab按键的好处):按Tab键具有自动补全命令与文件名的功能,Tab接在一串命令的第一个字后面,则为命令补全;Tab接在一串命令的第二个字以后时,则为文件补全。
命令 别名设置功能(alias):可以用自己熟悉的简短的命令来代替系统原有的复杂的长命令。
BASH中的常用快捷键:
脚本执行方式
1.以绝对路径的方式去执行bash shell脚本:改方法以一层层的进入文件目录,首先需要有目录的读权限,还要有所执行文件的执行权限。
2. 直接使用bash 或sh 来执行bash shell脚本:该方法是直接调用bash来执行脚本文件,不需要拥有被执行文件的执行权限,也不需要数被执行文件所在目录得到绝对路径。