【Ubuntu】Linux文件系统简介


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

Linux文件系统简介及类型

1、Linux文件系统简介

  操作系统就是处理各种数据,这些数据在硬盘上就是二进制,但是人类并不能直接看懂这些二进制数据,需要有一个翻译器,将这些二进制数据转化成人类能看懂的形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U盘、SD卡、NAND FLASH、NOR FLASH、网络存储设备等。不同的存储设备物理结构是不同的,不同的物理结构就需要不同的文件系统来管理数据,比如管理NAND FLASH的话使用YAFFS文件系统,管理硬盘、SD卡的话就是EXT文件系统等。
  Linux下也支持类似于Windows下的磁盘切割,常用的磁盘切割工具叫做fdisk,先来看看Windows下创建新盘符时都需要先做格式化处理,格式化处理的过程就是为盘符创建文件系统的过程,如图所示:
在这里插入图片描述
  Windows下一般有FAT、NTFS和exFAT这些文件系统。同理在Linux下我们使用fdisk,创建好分区以后也是先要在创建好的分区上创建文件系统,也就是格式化。但是在Linux下没有磁盘分区的概念,例如C盘、D盘之类的,在Linux下创建好一个分区并且格式化好以后我们要将其“挂载”到一个目录下才能访问这个分区。Windows的文件系统挂载过程是其内部完成的,用户是看不到的,Linux下我们使用mount命令来挂载磁盘。挂载磁盘的时候是需要确定挂载点的,也就是你的这个磁盘是要挂载到哪个目录下。

2、Linux文件系统类型

  Linux下的文件系统主要有EXT2、EXT3、EXT4等文件系统,Linux还支持其他的UNIX文件系统,比如XFS、JFS、UFS等,也支持Windows的FAT文件系统和网络文件系统NFS等。这里主要讲一下EXT2、EXT3、EXT4文件系统。
  EXT2文件系统
  EXT2是Linux早期的文件系,但是随着技术的发展,EXT2文件系统已经不推荐使用了,EXT2是一个非日志系统,大多数的Linux发行版都不支持EXT2文件系统了。
  EXT3文件系统
  EXT3是在EXT2的基础上发展来的,完全兼容EXT2文件系统,EXT3是一个日志文件系统,EXT3支持大文件,其特点有如下几点:
  高可靠性:使用EXT3文件系统的话,即使系统非正常关机、发生死机等情况,恢复EXT3文件系统也只需要数十秒。
  数据完整性:EXT3提高了文件系统的完整性,避免意外死机或者关机对文件系统造成的伤害。
  文件系统速度:EXT3的日志功能对磁盘驱动器读写头进行了优化,文件系统速度相对于EXT2来说没有降低。
  数据转换:从EXT2转换到EXT3非常容易,只需要两条指令就可以完成转换。用户不需要花时间去备份、恢复、格式化分区等,用EXT3文件系统提供的工具tune2fs即可轻松的将EXT2文件系统转换为EXT3日志文件系统。EXT3文件系统不需要经过任何修改,可以直接挂载成EXT2文件系统。
  EXT4文件系统
  EXT4文件系统是在EXT3上发展起来的,EXT4相比与EXT3提供了更佳的性能和可靠性,并且功能更丰富,EXT4向下兼容EXT3和EXT2,因此可以将EXT3和EXT2挂载为EXT4。想要查看安装的Ubuntu使用的哪个版本的文件系统,可以在终端中输入如下命令来查询当前磁盘挂载的是啥文件系统,注意大小写:

df -T -h

结果如图所示:
在这里插入图片描述
图中框起来的就是我们安装Ubuntu的磁盘,“/dev/sda1”就是我们的磁盘分区,可以看出这个磁盘分区类型是EXT4,它的挂载点是“/”,也就是根目录。

Linux文件系统结构

  在Windows下直接打开C盘, 我们进入的就是C盘的根目录,打开D盘进入的就是D盘的根目录,在Linux下因为没有C、D盘的说法,因此Linux下只有一个根目录,没有C盘根目录、D盘根目录之类的。如果你的Windows只有一个C盘的话,那么整个系统也就只有一个根目录。Windows下的C盘根目录就是“C:”,在Linux下的根目录就是“/”,打开Ubuntu的文件浏览器,我们默认并不是处于根目录中,不像Windows,我们直接打开C盘就处于C盘根目录下。Ubuntu是支持多用户的,Ubuntu为每一个用户创建了一个根目录,假设我现在登陆的是“alinx”这个用户,那么默认进入的就是“alinx”这个用户的根目录,就是点开桌面的文件图标,主目录所对应的就是“alinx”用户的根目录,如图所示:
在这里插入图片描述
  现在知道用户的根目录了,但前面不是说Linux下只有一个根目录吗,那它又在哪了,点开上图中的“其他位置”,显示如下:
在这里插入图片描述
  我们就能看到根目录的标志“/”了,那用户的根目录和根目录“/”是一个地位吗?其实所谓的用户根目录只是根目录“/”下的一个文件夹,双击上图中的计算机,点开“home”,如下图所示:
在这里插入图片描述
  在我这里只创建了一个用户,若是再创建一个用户,那么系统就会在上图的“home”中再创建一个以这个用户名命令的文件夹,这个文件夹就是这个用户的根目录。用户可以对自己的用户根目录下的文件进行随意的读写操作,但是如果要修改根目录“/”下的文件就会提示没有权限。打开终端后默认进入的是当前用户根目录,输入以下指令:

alinx@ubuntu:~$ cd /             //进入到根目录“/”
alinx@ubuntu:/$ 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 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。

文件操作指令

创建新文件命令 touch

  使用touch创建文件时,如果[文件名]的文件不存在,那就直接创建一个以[文件名]命令的文件,如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期,命令格式如下:

touch [参数] [文件名]

  常用的参数如下:
  -a 只更改存取时间。
  -c 不建立任何文件。
  -d<日期> 使用指定的日期,而并非现在的日期。
  -t<时间> 使用指定的时间,而并非现在的时间。

创建文件夹命令 mkdir

  跟上面差不多,只不过创建的是文件夹,命令格式如下:

mkdir [参数] [文件夹名目录名]

  主要参数如下:
  -p 如果所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。
  比如说下面这条指令:

mkdir [-p] run/test

  这条指令的含义就是在run文件夹下建立一个test的文件,但是如果run文件夹并不存在,那么就会建立一个run的文件夹。

文件夹及目录删除命令 rm

  既然有创建文件的命令,那肯定就会有删除文件的命令,要删除一个文件或者文件夹可以使用“rm”命令,此命令可以完成删除一个文件或者多个文件及文件夹,它可以实现递归删除。对于链接文件,只删除链接,原文件保持不变,所谓的链接文件,其实就是Windows下的快捷方式文件,命令格式如下:

rm [参数] [目的文件或文件夹名目录名]

  主要参数如下:
  -d 直接把要删除的目录的硬连接数据删成 0,删除该目录。
  -f 强制删除文件和文件夹(目录)。
  -i 删除文件或者文件夹(目录)之前先询问用户。
  -r 递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉。
  -v 显示删除过程。

文件夹(目录)删除命令 rmdir

  上面讲解了如何使用命令“rm”删除文件夹,那就是要加上参数“-rf”,其实Linux提供了直接删除文件夹(目录)的命令–rmdir,它可以不加任何参数的删除指定的空文件夹(目录),命令格式如下:

rmdir [参数] [文件夹(目录)]

  主要参数如下:
  -p 删除指定的文件夹(目录)以后,若上层文件夹(目录)为空文件夹(目录)的话就将其一起删除。

文件执行命令 .

  “.”就是表示执行的意思,而“./”表示执行当前目录下的某个文件,假设我现在有一个可执行文件“a.out”,想要执行改文件则指令如下:

*********$  ./a.out     //表示运行a.out可执行文件
*********$  cd ./b.txt  //表示打开当前目录下的b.txt文件
*********$  cd ..       //返回上一级目录
*********$  cd ../c.txt //打开上一级目录下的c.txt文件

文件复制命令 cp

  命令格式如下:

cp [参数] [源地址] [目的地址]

  主要参数如下:
  -a 此参数和同时指定“ -dpR”参数相同
  -d 在复制有符号连接的文件时,保留原始的连接。
  -f 强行复制文件,不管要复制的文件是否已经存在于目标目录。
  -I 覆盖现有文件之前询问用户。
  -p 保留源文件或者目录的属性。
  -r 或-R 递归处理,将指定目录下的文件及子目录一并处理

文件移动命令 mv

  有时候需要将一个文件或者文件夹移动到另外一个地方去,或者给一个文件或者文件夹进行重命名,这个时候需要用到命令“mv”了,命令格式如下:

mv [参数] [源地址] [目的地址]

  主要参数如下:
  -b 如果要覆盖文件的话覆盖前先进行备份。
  -f 若目标文件或目录与现在的文件重复,直接覆盖目标文件或目录。
  -I 在覆盖之前询问用户。

文件查询和搜索

命令 find

  find命令用于在目录结构中查找文件,其命令格式如下:

find [路径] [参数] [关键字]

  路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一部分,主要参数如下:
  -name 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。
  -depth 从指定目录下的最深层的子目录开始查找。
  -gid <群组识别码> 查找符合指定的群组识别码的文件或目录。
  -group <群组名称> 查找符合指定的群组名称的文件或目录。
  -size <文件大小> 查找符合指定文件大小的文件。
  -type <文件类型> 查找符合指定文件类型的文件。
  -user <拥有者名称> 查找符合指定的拥有者名称的文件或目录

命令 grep

  find命令用于在目录中搜索文件,我们有时候需要在文件中搜索一串关键字,grep就是完成这个功能的,grep命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字,grep命令就会把包含指定关键字的这一行标记出来,grep命令格式如下:

grep [参数] [关键字] [文件列表]

  主要参数如下:
  -b 在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。
  -c 计算符合关键字的列数。
  -d <进行动作> 当指定要查找的是目录而非文件时,必须使用此参数。 否则 grep 指令将回报信息并停止搜索。
  -i 忽略字符大小写。
  -v 反转查找,只显示不匹配的行。
  -r 在指定目录中递归查找。

文件类型

  文件的类型我们可以通过ls命令来查看
在这里插入图片描述
  如上图所示,每个文件(夹)的详细信息占一行,每行最前面的第一个符号表示当前文件(夹)的类型,比如第一个字符为“d”的表示目录文件,那么文件类型有如下几种:
   普通文件,一些应用程序创建的,比如文档、图片、音乐等等。
  d 目录文件。
  c 字符设备文件, Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。
  b 块设备文件,存储设备驱动,比如硬盘, U 盘等。
  l 符号连接文件,相当于 Windows 下的快捷方式。
  s 套接字文件。
  p 管道文件,主要指 FIFO 文件。

Linux用户权限管理

  在安装Ubuntu系统的时候被要求创建一个账户,此时创建的用户其权限会比后面创建的用户权限大一点,但是没有root用户权限大,Ubuntu下用户类型分为以下3类:

  • 初次创建的用户,此用户可以完成比普通用户更多的功能
  • root用户,系统管理员,权限最大
  • 普通用户,安装完操作系统后被创建的用户
    以上三种用户都有各自的ID号,称为UID,操作系统通过UID来识别是哪个用户,用户相关信息可以在文件/etc/passwd中看到。
    对于一个文件通常有三种权限:读®、写(w)、和执行(x),使用命令“ls -l”可以查看某个目录下所有文件的权限信息,就如上图所示,第一位表示文件类型,而后面的9位字符3位一组,从前往后分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限,后面的“alinx alinx”分别代表文件拥有者(用户)和该用户所在的用户组,文件的权限除了用r\w\x表示,还可以使用二进制表示,三种权限就用三位二进制数表示,一种权限对应一个二进制位,如果该位为1就表示具有此权限,如果该位为0就表示没有该权限,组合形式有如下几种:
    在这里插入图片描述
    也可以用a\u\g\o表示文件的归属关系,用=、+、-表示文件权限的变化,如表所示:
    在这里插入图片描述

权限管理命令

权限修改命令 chmod

  命令“chmod”用来修改文件或文件夹的权限,权限可以使用前面所讲的数字表示也可以使用字母表示,命令格式如下:

chmod [参数] [文件名/目录名] 

  主要参数如下:
  -c 效果类似“ -v”参数,但仅回显更改的部分。
  -f 不显示错误信息。
  -R 递归处理,指定目录下的所有文件及其子文件目录一起处理。
  -v 显示指令的执行过程。

文件归属者修改命令 chown

  命令chown用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:

chown [参数] [用户名.<组名>] [文件名/目录] 

  其中,[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,主要参数如下:
  -c 效果同-v 类似,但仅回显更改的部分。
  -f 不显示错误信息。
  -h 只对符号连接的文件做修改,不改动其它任何相关的文件。
  -R 递归处理,将指定的目录下的所有文件和子目录一起处理。
  -v 显示处理过程。

Linux磁盘管理

  在Linux的磁盘管理体系中需要接触一个概念叫做“挂载点”,“挂载点”就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是“挂载点”,文件/etc/fstab中详细记录了Ubuntu中硬盘分区的情况。磁盘管理命令有如下几种:

磁盘分区命令 fdisk

  如果要对某个磁盘进行分区,可以使用fdisk命令,命令格式如下:

fdisk [参数] 

  主要参数如下:
  -b<分区大小> 指定每个分区的大小。
  -l 列出指定设备的分区表。
  -s<分区编号> 将指定的分区大小输出到标准的输出上,单位为块。
  -u 搭配“ -l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。
注意:千万不要对自己装的Ubuntu系统进行分区!!!

格式化命令 mkfs

  使用命令fdisk创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一个文件系统,Linux下的格式化命令为mkfs,命令格式如下:

mkfs [参数] [-t 文件系统类型] [分区名称]

  主要参数如下:
  fs 指定建立文件系统时的参数
  -V 显示版本信息和简要的使用方法。
  -v 显示版本信息和详细的使用方法。

挂载分区命令 mount

  创建好分区并且格式化之后,如何访问磁盘呢?我们需要将其挂载到一个文件夹中,然后通过这个文件夹来访问磁盘,磁盘挂载命令为mount,命令格式如下:

mount [参数] -t [类型] [设备名称] [目标文件夹]

  主要参数如下:
  -V 显示程序版本。
  -h 显示辅助信息。
  -v 显示执行过程详细信息。
  -o ro 只读模式挂载。
  -o rw 读写模式挂载。
  -s-r 等于-o ro。
  -w 等于-o rw。

卸载命令umount

  当我们不需要访问已经挂载的磁盘时,可以通过umount命令将其从卸载点卸除,命令格式如下:

umount [参数] -t [文件系统类型] [设备名称]

  主要参数如下:
  -a 卸载/etc/mtab 中的所有文件系统。
  -h 显示帮助。
  -n 卸载时不要将信息存入到/etc/mtab 文件中
  -r 如果无法成功卸载,则尝试以只读的方式重新挂载。
  -t <文件系统类型> 仅卸载选项中指定的文件系统。
  -v 显示执行过程。
以上就是对Linux文件系统的简介,关于Linux可不只是文件系统这一块,在此非常感谢正点原子提供的资料,以上资料都是我在边看正点原子的文档,边写的,没办法光看记不住,后续当我有时间学习到Linux内核时我会再补充的。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值