Linux 文件系统简介以及类型
硬盘上都是二进制数据,人类想看懂就需要将数据转化为文件形式。存储数据的物理设备有硬盘、 U 盘、 SD 卡、 NAND FLASH、 NOR FLASH、网络存储设备等,不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理 NAND FLASH 的话使用 YAFFS 文件系统,管理硬盘、 SD 卡的话就是 ext 文件系统等等。
Windows 下有 FAT、 NTFS 和 exFAT 这样的文件系统,Linux 下的文件系统主要有 ext2、 ext3、 ext4 等文件系统。 Linux 还支持其他的 UNIX 文件系统,比如 XFS、 JFS、 UFS 等,也支持 Windows 的 FAT 文件系统和网络文件系统 NFS 等。
ext2 文件系统:ext2 是 Linux 早期的文件系统,但是随着技术的发展 ext2 文件系统已经不推荐使用了, ext2是一个非日志文件系统,大多数的 Linux 发行版都不支持 ext2 文件系统了。
ext3 文件系统:ext3 是一个日志文件系统, ext3 支持大文件。
具有以下特点:
高可靠性:断电重启后恢复速度快。
数据完整性: 避免意外死机或者关机对文件系统的伤害。
文件系统速度:对磁盘驱动器读写头进行了优化。
数据转换:可轻松的将 ext2 文件系统转换为 ext3 日志文件系统。 ext3 文件系统不需要经过任何修改,可以直接挂载成 ext2 文件系统。
ext4 文件系统:在ext3基础上提供了更佳的性能和可靠性,并且功能更丰富, ext4 向下兼容 ext3 和 ext2。
df -T –h //查看当前文件系统版本
Linux 文件系统结构
在 Windows 下,分为C、D、E、F多个磁盘,每个磁盘下都有一个根目录。
在 Linux 下,只有一个根目录,用“/”来表示。Linux下一切皆文件。
路径 /home/zxy 是用户zxy的路径,在home下可以创建多个用户,每个用户用一个文件夹。
根目录“/”中的一些重要的文件夹:
/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 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
文件操作命令
1、创建新文件命令—touch
touch [参数] [文件名]
-a 只更改存取时间。
-c 不建立任何文件。
-d<日期> 使用指定的日期,而并非现在日期。
-t<时间> 使用指定的时间,而并非现在时间。
一般的 touch test.txt 即可创建文件
2、文件夹创建命令—mkdir
mkdir [参数] [文件夹名目录名]
-p 如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。
mkdir test1 test2 //可同时创建两个目录
3、文件及目录删除命令—rm
rm [参数] [目的文件或文件夹目录名]
-d 直接把要删除的目录的硬连接数据删成 0,删除该目录。
-f 强制删除文件和文件夹(目录)。
-i 删除文件或者文件夹(目录)之前先询问用户。
-r 递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉。
-v 显示删除过程。
一般的 rm test.txt //删除文件
rm -rf testdir //强制递归删除目录
4、文件夹(目录)删除命令—rmdir
rmdir [参数] [文件夹(目录)]
-p 删除指定的文件夹(目录)以后,若上层文件夹(目录)为空文件夹(目录)的话就将其一起删除。
哈哈哈!加上-p可以将空文件一块儿带走,俗称连坐。
5、文件复制命令—cp
cp [参数] [源地址] [目的地址]
-a 此参数和同时指定“-dpR”参数相同
-d 在复制有符号连接的文件时,保留原始的连接。
-f 强行复制文件,不管要复制的文件是否已经存在于目标目录。
-I 覆盖现有文件之前询问用户。
-p 保留源文件或者目录的属性。
-r 或-R 递归处理,将指定目录下的文件及子目录一并处理
一般的
cp a.c b.c //将a.c文件复制到当前目录并命名b.c
cp *.c ../test2 //将本目录下*.c文件复制到上一目录的test2目录下,*为通配符
cp -rf test2/ test3/ //强制递归复制test2为test3
“ * ”为通配符,“ . ”表示当前目录,“. .”表示上一目录。
6、文件移动命令—mv
mv [参数] [源地址] [目的地址]
-b 如果要覆盖文件的话覆盖前先进行备份。
-f 若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录。
-I 在覆盖之前询问用户。
和cp命令使用类似。
文件压缩和解压缩
图形化压缩和解压缩用鼠标点点就行。
命令行压缩和解压缩常用的命令有三个: zip、 unzip 和 tar。
1.命令 zip,压缩
zip [参数] [压缩文件名.zip] [被压缩的文件]
-b<工作目录> 指定暂时存放文件的目录。
-d 从 zip 文件中删除一个文件。
-F 尝试修复已经损毁的压缩文件。
-g 将文件压缩入现有的压缩文件中,不需要新建压缩文件。
-h 帮助。
-j 只保存文件的名,不保存目录。
-m 压缩完成以后删除源文件。
-n<字尾符号> 不压缩特定扩展名的文件。
-q 不显示压缩命令执行过程。
-r 递归压缩,将指定目录下的所有文件和子目录一起压缩。
-v 显示指令执行过程。
-num 压缩率,为 1~9 的数值。
一般的 zip -rv test2.zip test2
2.命令 unzip,解压缩
unzip [参数] [压缩文件名.zip]
-l 显示压缩文件内所包含的文件。
-t 检查压缩文件是否损坏,但不解压。
-v 显示命令显示的执行过程。
-Z 只显示压缩文件的注解。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中的原有目录路径。
-L 将压缩文件中的全部文件名改为小写。
-n 解压缩时不要覆盖原有文件。
-P<密码> 解压密码。
-q 静默执行,不显示任何信息。
-x<文件列表> 指定不要处理.zip 中的哪些文件。
-d<目录> 把压缩文件解到指定目录下。
一般的 unzip test2.zip
3.命令 tar
Linux 下最常用的.bz2 和.gz 这两种压缩格式,可使用tar命令完成。
tar [参数] [压缩文件名] [被压缩文件名]
-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 // 压缩为bz2格式
tar -vczf test2.tar.gz test1 // 压缩为gz格式
tar -vxjf test1.tar.bz2 // 解压test1
tar -vxzf test2.tar.gz // 解压test2
文件查询和搜索
1、命令 find,用于在目录结构中查找文件
find [路径] [参数] [关键字]
-name<filename> 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。
-depth 从指定目录下的最深层的子目录开始查找。
-gid<群组识别码>查找符合指定的群组识别码的文件或目录。
-group<群组名称> 查找符合指定的群组名称的文件或目录。
-size<文件大小> 查找符合指定文件大小的文件。
-type<文件类型> 查找符合指定文件类型的文件。
-user<拥有者名称> 查找符合指定的拥有者名称的文件或目录。
比如 find /etc/ -name vim*
2、命令 grep,用于查找包含指定关键字的文件
grep [参数] 关键字 文件列表
-b 在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。
-c 计算符合关键字的列数。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 指令将回报信息并停止搜索。
-i 忽略字符大小写。
-v 反转查找,只显示不匹配的行。
-r 在指定目录中递归查找。
比如 grep -ir "Ubuntu" /usr/
文件类型
每个文件都有其文件类型,使用 ls -l 命令可查看详细信息。
第一个字符表示不同的文件类型
- 普通文件,一些应用程序创建的,比如文档、图片、音乐等等。
d 目录文件。
c 字符设备文件, Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。
b 块设备文件,存储设备驱动,比如硬盘, U 盘等。
l 符号连接文件,相当于 Windwos 下的快捷方式。
s 套接字文件。
p 管道文件,主要指 FIFO 文件。