导读

操作系统的基本功能之一就是文件管理,而文件的管理是由文件系统来完成的。Linux 支持多种文件系统,本文我们就来讲解 Linux 下的文件系统、文件系统类型、文件系统结构和文件系统相关Shell 命令。

操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,人类肯定不能直接看懂这些二进制数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux 有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U 盘、SD 卡、NAND FLASH、NOR FLASH、网络存储设备等。不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理 NAND FLASH 的话使用 YAFFS 文件系统,管理硬盘、SD 卡的话就是 ext 文件系统等等。

我们在使用 Windows 的时候新买一个硬盘回来一般肯定是将这个硬盘分为好几个盘,比如C 盘、D 盘等等。这个叫磁盘的分割,Linux 下也支持磁盘分割,Linux 下常用的磁盘分割工具为:fdisk,fdisk 这个工具我们后面会详细讲解怎么用,因为我们移植 Linux 的时候需要将 SD卡分为三个分区来存储不同的东西。在 Windows 下我们创建一个新的盘符以后都要做格式化处理,格式化其实就是给这个盘符创建文件系统的过程,我们在 Windows 格式化某个盘的时候都会让你选择文件系统,如图所示:

格式化磁盘

上图就是格式化磁盘的时候选择文件系统,Windows 下一般有 FAT、NTFS 和 exFAT这些文件系统。同样的,在 Linux 下我们使用 fdisk 创建好分区以后也是要先在创建好的分区上面创建文件系统,也就是格式化。

在 Windows 下有磁盘分区的概念,比如 C,D,E 盘等,在 Linux 下没有这个概念,因此Linux 下你找不到像C、D、E 盘这样的东西。前面我们说了Linux 下可以给磁盘分割,但是没有 C、D、E 盘那怎么访问这些分区呢?在 Linux 下创建一个分区并且格式化好以后我们要将其“挂载”到一个目录下才能访问这个分区。Windows 的文件系统挂载过程是其内部完成的,用户是看不到的,Linux 下我们使用 mount 命令来挂载磁盘。挂载磁盘的时候是需要确定挂载点的,也就是你的这个磁盘要挂载到哪个目录下。

前面我们说了,在Windows 下有 FAT、NTFS 和 exFAT 这样的文件系统,在Linux 下又有哪些文件系统呢,Linux 下的文件系统主要有 ext2、ext3、ext4 等文件系统。Linux 还支持其他的 UNIX 文件系统,比如XFS、JFS、UFS 等,也支持Windows 的 FAT 文件系统和网络文件系统 NFS 等。这里我们主要讲一下 Linux 自带的 ext2、ext3 和 ext4 文件系统。

ext2 文件系统:

ext2 是Linux 早期的文件系统,但是随着技术的发展 ext2 文件系统已经不推荐使用了,ext2是一个非日志文件系统,大多数的 Linux 发行版都不支持 ext2 文件系统了。

ext3 文件系统:

ext3 是在 ext2 的基础上发展起来的文件系统,完全兼容 ext2 文件系统,ext3 是一个日志文件系统,ext3 支持大文件,ext3 文件系统的特点有如下:

高可靠性:使用 ext3 文件系统的话,即使系统非正常关机、发生死机等情况,恢复 ext3 文件系统也只需要数十秒。

数据完整性:ext3 提高了文件系统的完整性,避免意外死机或者关机对文件系统的伤害。

文件系统速度:ext3 的日志功能对磁盘驱动器读写头进行了优化,文件系统速度相对与 ext2来说没有降低。

数据转换:从 ext2 转换到ext3 非常容易,只需要两条指令就可以完成转换。用户不需要花时间去备份、恢复、格式化分区等,用 ext3 文件系统提供的工具 tune2fs 即可轻松的将 ext2 文件系统转换为 ext3 日志文件系统。ext3 文件系统不需要经过任何修改,可以直接挂载成 ext2 文件系统。

ext4 文件系统:

ext4 文件系统是在 ext3 上发展起来的,ext4 相比与ext3 提供了更佳的性能和可靠性,并且功能更丰富,ext4 向下兼容 ext3 和 ext2,因此可以将 ext2 和 ext3 挂载为 ext4。那么我们安装的 Ubuntu 使用的哪个版本的文件系统呢?在终端中输入如下命令来查询当前磁盘挂载的啥文件系统:

df -T –h

在Windows 下直接打开C 盘,我们进入的就是C 盘的根目录,打开D 盘进入的就是D 盘的根目录,比如C 盘根目录如下:

在 Linux 下因为没有 C、D 盘之说,因此 Linux 只有一个根目录,没有 C 盘根目录、D 盘根目录之类的。其实如果你的 Windows 只有一个 C 盘的话那么整个系统也就只有一个根目录。

Windows 下的 C 盘根目录就是“C:”,在 Linux 下的根目录就是“/”,你没有看错,Linux 根目录就是用“/”来表示的,打开 Ubuntu 的文件浏览器,文件浏览器在左侧的导航栏,图标如图所示:

直接打开文件浏览器以后,我们默认不是处于根目录中的,不像Windows,我们直接打开C 盘就处于C 盘根目录下。Ubuntu 是支持多用户的,Ubuntu 为每个用户创建了一个根目录,比如我电脑现在登陆的是“zuozhongkai”这个用户,因此默认进入的是“zuozhongkai”这个用户的根目录。我们点击图中左侧的“计算机”,打开以后如图所示:

上图就是 Ubuntu 的根目录“/”,这时候肯定就有人有疑问,刚刚说 Ubuntu 会给每个用户创建一个根目录,那这些用户的根目录在哪里?是不是和根目录“/”是一个地位的?其实所谓的给每个用户创建一个根目录只是方便说而已,这个所谓的用户根目录其实就是“/”下的一个文件夹,以我的“zuozhongkai”这个用户为例,其用户根目录就是:/home/zuozhongkai。只要

你创建了一个用户,那么系统就会在/home 这个目录下创建一个以这个用户名命名的文件夹,这个文件夹就是这个用户的根目录。

用户可以对自己的用户根目录下的文件进行随意的读写操作,但是如果要修改根目录“/”下的文件就会提示没有权限。打开终端以后默认进入的是当前用户根目录,比如我们打开终端以后输入“ls”命令查看当前目录下有什么文件,可以看出,都是“zuozhongkai”这个账户的根目录。我们来看一下根目录“/”下都有哪些文件,在终端中输入如下命令:

cd / //进入到根目录“/ ls //查看根目录“/”下的文件以及文件夹

执行上述两行命令以后,列举出了根目录“/”下面的所有文件夹,这里我们仔细观察一下,当我们进入到根目录“/”里面以后终端提示符“$”前面的符号“~”变成了“/”,这是因为当我们在终端中切换了目录以后“$”前面就会显示切换以后的目录路径。我们来看一下根目录“/”中的一些重要的文件夹:

/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 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。

嵌入式linux培训教程,嵌入式Linux开发学习之Linux文件系统学习相关推荐

  1. Linux培训教程 Git在linux下的使用

       *初始化git仓库,使用gitinit命令 *添加文件到git仓库分两步: 1.使用git add filename ;可分多次使用,添加多个文件到暂存区 2.使用git commit -m & ...

  2. linux嵌入式移植培训,达内嵌入式培训大讲堂之Linux系统移植

    移植一个基本的必要的linux系统(包含存储设备,输入输出设备驱动)移植到板子里,其他的一些驱动不能移植进去,对设备的要求不高,接下来,达内嵌入式培训大讲堂将和大家讨论"Linux系统移植& ...

  3. Linux培训教程 浅谈:PHP在linux上执行外部命令(整理)

    一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用专门函数 ...

  4. linux使用教程_iTOP-4412-QtE系统源码以及Linux系统-wfi设置以及使用文档 - 心底狂像...

    精英版在 linux 下使用 wifi,需要进行下面的配置: 首先用户在拿到光盘资料以后查看下光盘里面的"linux"->""文件,其中的 "x ...

  5. Linux驱动程序教程:如何编写简单的Linux设备驱动程序

    翻译来自: https://www.apriorit.com/dev-blog/195-simple-driver-for-linux-os 代码下载 此Linux设备驱动程序教程将为您提供有关如何为 ...

  6. xp系统上安装linux系统教程,XP系统如何安装fedora linux双系统?WinXP安装fedora linux双系统的方法...

    有位朋友因为想在linux中熟悉下hadoop的配置开发环境,所以就开始于WinXP系统中安装fedora linux双系统,可是操作了很久都没成功.这该如何怎么办呢?接下来,小编就给大家介绍WinX ...

  7. arm linux 核心板 制作,Linux下制作给ARM开发板使用的文件系统

    1.Busybox源码请网上自行下载,编译方法请参考百度. 2.交叉编译工具链的设置也请先设置好. 如果以上1.2没有问题,那么可以使用以下脚本,制作一个给ARM开发板使用的文件系统. 可以自行定制使 ...

  8. win7 安装深度linux系统安装教程,深度技术win7旗舰版linux虚拟机安装教程

    有用户在问,想在win7系统的用户想在虚拟机中安装linux系统,却不知Win7怎么进行linux虚拟机安装呢?方法其实并不复杂,下面介绍深度技术win7旗舰版linux虚拟机安装教程. 1.想要在w ...

  9. 开发linux显卡驱动,显卡驱动开发DRM入门--Apple的学习笔记

    由于之前的blog提及kmscube的源码我没有找到,所以只能在网上搜索了. DRM简介 DRM是Linux目前主流的图形显示框架,同时DRM可以统一管理GPU和Display驱动,使得软件架构更为统 ...

最新文章

  1. 五、Netty核心组件
  2. wxWidgets:在对话框之间共享信息
  3. python param_Python基于paramunittest模块实现excl参数化
  4. mysql gzip_在mysql中存储GZIP:ed文本?
  5. JavaScript-Iterable迭代
  6. html5画布作品,HTML5 canvas画布
  7. 7.从Paxos到Zookeeper分布式一致性原理与实践---Zookeeper 技术内幕
  8. 1、pandas入门示例
  9. 拨号保护,网络电话,保护隐私,匿名通话
  10. 【大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)】
  11. dcp7080d怎么加墨粉_兄弟打印机DCP,7080D提示更换墨粉该怎么办?|7080D打印机
  12. 双向TVS的符号及几个参数问题?
  13. 如何用VB语言实现四连环游戏(重力四子棋)?
  14. 【后台技术】异步编程指北,问题和重点
  15. 如何在微信窗口使用计算机,站长教你电脑如何打开多个微信界面
  16. 使用体素场存储场景数据
  17. html中如何写div中div的位置,position设置div的位置
  18. 一节课轻松通关 Spark
  19. XXX高校数字化校园数据中心建设方案
  20. OTA市场寡头竞争态势严峻,同程艺龙赴港IPO能否改变现状?

热门文章

  1. 平价蓝牙耳机选哪个?盘点性价比高的无线蓝牙耳机
  2. 冰羚Planned features.md翻译
  3. 第十二届noc网络机器人赛项成绩_2017年第15届中小学NOC活动全国决赛机器人超市购物赛项获奖结果...
  4. java具名参数_Spring jdbc具名参数使用方法详解
  5. Vulnhub-theEther
  6. 国内知名插画培训机构有哪些
  7. C#中的委托和事件网上最好的解释
  8. NFS服务器配置与管理笔记
  9. x86架构鼻祖-i8086
  10. 接口自动化测试之接口测试基础