一、文件系统
操作系统的一大基本功能就是文件管理,而文件的管理就是由文件系统来完成的。大家都知道,其实数据存储最终都会存储到某一具体的存储设备中,如 硬盘、 U盘、 SD卡、 NAND FLASH、 NOR FLASH、网络存储设备等。不同的存储设备其物理结构会有所不同,就需要不同的文件系统去管理,这就导致了会有多种不同类型的 文件系统,它们最终的目的都是对这些存储设备进行读写和对其上的文件进行管理。
我们在对某物理磁盘进行格式化的时候,其实就是在其上创建文件系统的过程,所以在格式化之前都需要指定要创建的文件系统类型。一个被分割成多个分区的磁盘上,还可以对不同的分区格式化为不同的文件系统;如如windows下会有A盘、B盘、C盘的好几个分区,Linux中可以使用fdisk对磁盘进行分区。
在 Linux下创建一个分区并且格式化好以后需要将其“挂载”到一个目录下才能访问这个分区。Windows的文件系统挂载过程是其内部完成的,用户是看不到的, Linux下我们使用mount命令来挂 载磁盘。挂载磁盘的时候是需要确定挂载点的,也就是你的这个磁盘要挂载到哪个目录下。
二、文件系统类型
在 Windows下,主要的文件系统有 FAT、 NTFS和 exFAT等。
在Linux下,主要的文件系统有ext2、ext3、ext4
三、Linux下文件系统结构
要查看文件系统的结构,肯定要先找到文件系统的根目录啊,Linux的根目录就是 '/'。可以使用 " cd / " 命令进入根目录下
/bin 存储一些二进制可执行命令文件 ,/usr/bin也存放了一些基于用户的命令文件。
/sbin 存储了很多系统命令 ,/usr/sbin也存储了许多系统命令。
/root 超级用户 root的根目录文件。
/home 普通用户默认目录,在该目录下,每个用户都 有一个以本用户名命名的文件夹。
/boot 存放 Ubuntu系统内核和系统启动文件。
/mnt 通常包括系统引导后被挂载的文件系统的挂载点。
/dev 存放设备文件,我们后面学习 Linux驱动主要是跟这个文件夹打交道的。
/etc 保存系统管理所需的配置文件和目录。
/lib 保存系统程序运行所需的库文件, ,/usr/lib下存放了一些用于普通用户的库文件。
/lost+found 一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件。
/var 存储一些不断变化的文件,比如日 志文件
/usr 包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件。
/media 存放 Ubuntu系统自动挂载的设备文件。
/proc 虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息。
/tmp 存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限。
/opt 可选文件和程序的存放目录。
/sys 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
四、文件系统相关shell
1、创建新文件命令:touch [参数] [文件名]
常用选项参数如下:
-a 只更改存取时间。
-c 不建立任何文件。
-d<日期 > 使用指定的日期,而并非现在日期。
-t<时间 > 使用指定的时间,而并非现在时间。
2、文件夹创建命令:mkdir [参数] [文件夹名目录名]
常用选项参数如下:
-p 如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。
3、文件及目录删除命令:rm [参数] [目的文件或文件夹目录名]
常用选项参数如下:
-d 直接把要删除的目录的硬连接数据删成 0,删除该目录。
-f 强制删除文件和文件夹 (目录 )。
-i 删除文件或者文件夹 (目录 )之前先询问用户。
-r 递归删除,指定文件夹 (目录 )下的所有文件和子文件夹全部删除掉。
-v 显示删除过程。
4、文件复制命令:cp [参数] [源地址] [目的地址]
常用选项参数如下:
-a 此参数和同时指定“ “-dpR”参数相同
-d 在复制有符号连接的文件时,保留原始的连接。
-f 强行复制文件,不管要复制的文件是否已经存在于目标目录。
-I 覆盖现有文件之前询问用户。
-p 保留源文件或者目录的属性。
-r或 -R 递归处理,将指定目录下的文件及子目录一并处理
5、文件移动命令:mv [参数] [源地址] [目的地址]
常用选项参数如下:
-b 如果要覆盖文件的话覆盖前先进行备份。
-f 若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录。
-I 在覆盖之前询问用户。
6、zip压缩命令:zip [参数] [压缩文件名.zip] [被压缩的文件]
用于将一个或者多个文件压缩成一个 .zip结尾的文件
常用选项参数如下:
-b<工作目录 > 指定暂时存放文件的目录。
-d 从 zip 文件中删除一个文件。
-F 尝试修复已经损毁的压缩文件。
-g 将文件压缩入现有的压缩文件中,不需要新建压缩文件。
-h 帮助。
-j 只保存文件的名,不保存目录。
-m 压缩完成以后删除源文件。
-n<字尾符号 > 不压缩特定扩展名的文件。
-q 不显示压缩命令执行过程。
-r 递归压缩,将指定目录下的所有文件和子目录一起压缩。
-v 显示指令执行过程。
-num 压缩率,为 1~9的数值。
7、zip解压缩命令:unzip [参数] [压缩文件名 .zip]
用于对 .zip格式的压缩包进行解压
常用选项参数如下:
-l 显示压缩文件内所包含的文件。
-t 检查压缩文件是否损坏,但不解压。
-v 显示命令显示的执行过程。
-Z 只显示压缩文件的注解。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中的原有目录路径。
-L 将压缩文件中的全部文件名改为小写。
-n 解压缩时不要覆盖原有文件。
-P<密码 > 解压密码。
-q 静默执行,不显示任何信息。
-x<文件列表 > 指定不要处理 .zip中的哪些文件。
-d<目录 > 把压缩文件解到指定目录下。
8、tar压缩命令:tar [参数] [压缩文件名] [被压缩文件名]
tar将压缩和解压缩集合在一起,使用不同的参数即可,可对最常用的 .bz2和 .gz这两种压缩格式进行压缩和解压缩
常用选项参数如下:
-c 创建新的压缩文件。
-C<目的目录 > 切换到指定的目录。
-f<备份文件 > 指定压缩文件。
-j 用 tar生成压缩文件,然后用 bzip2进行压缩。
-k 解开备份文件时,不覆盖已有的文件。
-m 还原文件时,不变更文件的更改时间。
-r 新增文件到已存在的备份文件的结尾部分。
-t 列出备份文件内容。
-v 显示指令执行过程。
-w 遭遇问题时先询问用户。
-x 从备份文件中释放文件,也就是解压缩文件。
-z 用 tar生成压缩文件,用 gzip压缩。
-Z 用 tar生成压缩文件,用 compress压缩。
tar -vcjf test1.tar.bz2 test1 //将test1文件压缩成.bz2格式
tar -vczf test1.tar.gz test1 //将test1文件压缩成.gz格式
tar -vxjf test1.tar.bz2 //将test1.tar.bz2的.bz2文件解压缩为test1
tar -vxzf test2.tar.gz //将test1.tar.gz的.gz文件解压缩为test1
参考:《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.3》