Linux操作系统:基础篇5基本功能之文件系统

简介: 在Linux操作系统中,文件系统是用来组织、管理、存放文件的一套管理机制。文件系统可以有不同的格式,叫做文件系统类型(file system types)。这些格式决定信息如何被存储为文件和目录。

一、文件系统概述

 在Linux操作系统中,文件系统是用来组织、管理、存放文件的一套管理机制。文件系统可以有不同的格式,叫做文件系统类型(file system types)。这些格式决定信息如何被存储为文件和目录。

二、文件系统目录结构

 Linux采用与Windows完全不同的独立文件存储方式。 Linux的文件系统采用分层结构。其顶层为根目录,用符号“/”表示,在根目录下是不同的子目录。 这个树状结构构成Linux中的文件系统,从而管理组织系统的所有文件。

d23fb05c851548b28170212f5c85bac9.png

三、文件系统类型

 Linux支持的文件系统类型有ext2、ext3、ext4、vfat、ntfs、iso9660、jiffs、romfs、cramfs和nfs等。

 ext2文件系统:(也称为第二扩展文件系统)旨在克服早期Linux版本中使用的Minⅸ文件系统的缺点。多年来,该文件系统直广泛应用于 Linux。但ext2中没有日志,现在基本上已被ext3和最新的ext4所取代。

 ext3文件系统:向标准ext2文件系统添加了日志功能,因此是个非常稳定的文件系统的一个演化发展。它在大多数情况下提供合理的性能并且仍旧在改进。由于它在可靠的ext2文件系统上添加了日志功能,因此可以将现有ext2文件系统转换为ext3文件系统,并且在必要时还可以转换回来。

 ext4文件系统:作为ext3的扩展来启动的,它通过增加存储限制和提高性能来满足更大文件系统的需求。为了保留ext3的稳定性,在2006年6月,该扩展被拆分成一个新的文件系统,即ext4。

 vfat文件系统:(也称为FAT32)没有日志功能,且缺乏完整的Linux文件系统实现所需的许多特性。它可用于在 Windows和Linux系统之间交换数据,因为 Windows和Linuⅹ都能读取它不要将这个文件系统用于 Linux,除非要在 Windows和 Linux之间共享数据。如果您在一个vfat磁盘上解压缩一个 Linux归档文件,那么您将丢失权限(比如执行权限),还会丢失该归档文件中可能存储的符号链接。

 NFS:网络文件系统。

 ISO9660:CD-ROM标准文件系统。

四、创建文件系统

  挂载:在Linux中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。使用mount命令将一个文件系统附着到当前文件系统层次结构中(根)。在执行挂载时,要提供文件系统类型、文件系统和一个挂载点。

 Linux使用mkfs命令来创建文件系统。

 语法:mkfs [-t 文件系统格式] 分区设备文件名

 常用参数:

5c4e5d3e69c74ef8a3a9e5182a8f57d2.png

 示例:

 ① 查看当前分区

   命令:fdisk

   fdisk命令操作磁盘详解–查看、添加、删除、转换分区等。

#fdisk –l

  ② 创建分区

   命令:fdisk + 硬盘设备

#fdisk /dev/sda

   然后输入m显示所有的命令列示,根据示例执行后续分区操作。

 创建文件系统

#mkfs –t ext4 /dev/sda1

 挂载

#mount /dev/sda1 /mnt/test

 挂载点要求:

   目录没有被其他进程占用

   目录必须事先存在

   目录中原先文件会被隐藏,直到卸载

五、文件的属性与权限

1、文件命名

 (1)由字母(可用汉字)、数字、下划线、圆点等字符构成。

 (2)长度不超过255个字符,避免使用特殊字符?*$等

 (3)同一目录下不能有相同的文件名,不同目录下可以同名。

 (4)圆点“.”在第一位置时表示隐含文件。

 (5)文件的属性与取名无关,文件名中不规定扩展名。

 (6)区分英文字符的大小写。比如 myfile, Myfile和myFILE表示的是三个不同的文件。

2、目录、路径基础

 (1)目录:目录是指包含许多文件项目的一类特殊文件。子目录、父目录、工作目录、用户主目录( Home directory)

 (2)路径:由目录名和“/“(斜杠)做分隔符组成的字符串,用来表示文件或目录在文件系统中所处的层次的一种方法。路径又分绝对路径和相对路径。

 (3)“.”表示当前目录,“…”表示父目录。

3、文件类型

 (1)普通文件(-):用于存放数据、程序等信息的一般文件,包括文本文件和二进制文件。

 (2)目录文件(d):相当于 Windows系统中的文件夹,由该目录所包含的目录项所组成的文件。

 (3)套接字文件(s):套接字文件系统是一个用户不可见的,高度简化的,用于汇集网络套接字的内存文件系统,它没有块设备,没有子目录,没有文件缓冲,它借用虚拟文件系统的框架来使套接字与文件描述字具有相同的用户接口。当用户用socket(family,type,protocol)创建一个网络协议族为family,类型为type,协议为 protocol的套接字时,系统就在套接字文件系统中为其创建了一个名称为其索引节点编号的套接字文件。

 (4)块设备文件(b):存取是以一个字块为单位。普通文件的处理是不必要对硬件进行过多操作的,而字符型设备和块设备就不同了,所以是以特别形式文件出现。 dev/cdrom,/dev/fd0,dev/hda都是磁盘(光驱,软驱,主硬盘),它们的存取是通过数据块来进行的。

 (5)字符设备文件©:存取数据时是以单个字符为单位的。/ dev/audio是字符设备文件,对audio的存取是以字节流方式来进行的。

 (6)命名管道文件§:负责将一个进程的信息传递给另一个进程,从而使该进程的输出成为另一个进程的输入。

 (7)符号链接文件(l) :符号链接又叫软链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

 用ln -s source_file softlink_file命令可以生成一个软链接,在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作。

 但删除链接文件时,系统仅仅删除链接文件而不删除源文件本身。删除软链接用rm softlink_file或者 unlink softlink_file。

4、Linux文件的组成

 Linux 文件被分成两个部分:用户数据 (user data) 与元数据 (metadata)。

用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。

 在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

 为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(soft link)。链接不仅解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等优势。

5、 Linux文件的链接

 硬链接:硬链接复制文件inode,也就是保留文件所链接文件的索引节点信息,即使文件更名或改变、移动,硬链接文件仍然存在。

 软链接:软链接仅仅指向目的文件的路径,类似于Windows下的快捷方式,如果被链接的文件更名或移动,软链接文件就无任何意义。

 ln链接命令

 硬链接格式:ln 源文件 链接文件

 软连接格式:ln –s 源文件 链接文件

 示例:

   (1)在目录下创建一个文件,然后对这个文件进行链接的创建

inux@ b 09: 99:1  test    nmyfile mrfi1e  &&  echo  "This is a plain text file."  myfile
  Limuxwblvg1gg.1 This is a plain text  file. IllyIlB

   (2)为myfile文件创建一个硬链接,并查看一下当前目录:

linux@b109199: /test$ 1n myfile hard linux@b109199:/test$1s-1i tota1 0
10696049115179401 trw-r--r-- 2 1inux 1inux27 Apr  8 14:34 hard  
10696049115179401 trw-r--r-- 2 linux linux 27 Apr 8 14:34 myfile

   (3)为myfile文件创建一个软链接,并查看一下当前目录:

linux@b109199: /test$ 1n -s myfile soft linux@b109199:/test$1s-1i tota1 0
10696049115179401 -rw-r--r-- 2 1inux 1inux 27 Apr 8 14:34 hard  
10696049115179401 -rw-r--r-- 2 1inux 1inux 27 Apr 8 14:34 myfile  
16888498602743385 1rwxrwxrwx 1 1inux1inux 6 Apr 8 14:38 soft -> myfile

6、文件权限

 Linux系统中的每个文件和目录都有访问许可权限,这是加在文件上的一个数据结构。

 访问权限规定三种不同类型的用户:

 文件属主(owner):文件的所有者,称为属主。

 同组用户(group):文件属主的同组用户。

 其他用户(others):系统内除了以上两种用户之外的所有用户。

 访问权限规定三种访问文件或目录的方式:

 读®:允许读取文件内容或者列目录。

 写(w):允许修改文件内容或者创建、删除文件。

 可执行(x):允许执行文件或者允许使用cd命令进入目录。

示例:ls –l
    -rw-r–r-- 1 test gtest 31 Apr 9 11:10 test.txt

第一组字符(-rw-r–r--):访问权限清单,共有10个位置。第一个字符指出文件的类型,短划线“-”代表一个文件,如果是字母“d”代表子目录。随后9个字符是根据不同用户的分类来排列的,第一组3个字符是文件属主对该文件的权限集;第二组3个字符是用户所在组对该文件的权限集;第三组3个字符是其他用户对该文件的权限集。

   ⊙字符“-”:代表空白权限

   ⊙字母“r”:代表读权限,数字代表为4

   ⊙字母“w”:代表写权限,数字代表为2

   ⊙字母“x”:代表执行权限,数字代表为1

 第二组字符(1):链接个数

 第三组字符( test):文件属主

 第四组字符( gtest):用户分组名

 第五组字符(31):文件长度

 第六组字符(Apr 9 11:10 ):文件上次修改的日期和时间

 第七组字符( test.txt):文件名

7、使用chmod命令更改文件属性

chmod命令用于更改文件对于某类用户的操作权限。

79ddcb54c9f34c8ba4b51f47dfaeddbe.png

示例:ls –l
    -rw-rw–r-- 1 linux linux 31 Apr 9 11:10 test.txt
  (1)增加文件属主linux的执行权限(x)
    #chmod u+x test.txt 等价于 #chmod 764 test.txt
  (2)去除文件属组linux的写权限(w)
    #chmod g-w test.txt 等价于 #chmod 744 test.txt

8、修改文件或目录的拥有者

 在Linux中,使用chown命令改变文件或目录的所有者(属主)和所属的用户组,用法为:

   chown [-R]新所有者:新用户组 要改变的文件名或目录

 常用参数:-R:处理指定目录以及其子目录下的所有文件

 注,在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

 使用chgrp命令只能更改指定文件或目录所属的用户组,其用法为:

   chgrp 新用户组 要改变所属用户组的目录或文件

 常用参数:-R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理

六、目录及文件操作基本命令

 1、pwd:查看当前所在目录

示例:[root@test:~/test]#pwd
    /home/root/test

 2、cd:切换目录命令

示例:[root@test:~]#cd /test
    [root@test:~/test]#pwd
    /home/root/test

 3、ls:显示目录信息命令

 参数:

   -a: 显示所有文件及目录 (. 开头的隐藏文件也会列出)

    -l :除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

   -t :将文件依建立时间之先后次序列出

 4、mkdir:用于创建目录命令参数:-p :确保目录名称存在,不存在的就建一个。

 示例:在当前目录下创建test目录: #mkdir test

 5、rmdir:删除空的目录

 参数:-p :是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

示例:在工作目录下的 AAA 目录中,删除名为 Test 的子目录。若 Test 删除后,AAA 目录成为空目录,则 BBB 亦予删除。 #rmdir -p BBB/Test。

 6、touch:修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件

 7、cp:复制文件或目录命令参数:-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

-f:覆盖已经存在的目标文件而不给出提示。示例:将当前目录 test/ 下的所有文件复制到新目录 newtest 下

#cp –r test/ newtest

 8、mv:为文件或目录改名、或将文件或目录移入其它位置

 示例:将文件 aaa 改名为 bbb :

#mv aaa bbb

 将 info 目录放入 logs 目录中。注意,如果 logs 目录不存在,则该命令将 info 改名为 logs。

#mv info/ logs

 将 /usr/runoob 下的所有文件和目录移到当前目录下:

# mv /usr/runoob/* .

 9、rm:删除一个文件或者目录

 参数:

   -i: 删除前逐一询问确认。

    -r: 将目录及以下之档案亦逐一删除。

   -f :即使原档案属性设为唯读,亦直接删除,无需逐一确认。

 示例:删除文件可以直接使用rm命令,若删除目录则必须配合选项“-r“:

# rm test.txt
    rm:是否删除 一般文件 “test.txt”? y
     # rm homework
    rm: 无法删除目录"homework": 是一个目录
    # rm -r homework
     rm:是否删除 目录 “homework”? y
  删除当前目录下的所有文件及目录:
    #rm -r *

七、查看文件内容基本命令

 1、输出重定向命令

 输出的内容默认是到屏幕,使用输出的重定向,将输出到屏幕的内容输出到其他地方

示例:#echo‘123456’> /1/1.txt

 2、追加输出重定向

 将输出重定向内容追加输出到其他地方

示例:#echo‘123456’>>/1/1.txt

 3、cat:查看文件内容

 参数:

   -n 或 --number:由 1 开始对所有输出的行数编号。

    -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

 示例:把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

cat -n textfile1 > textfile2

 清空 /etc/test.txt 文档内容:

cat /dev/null > /etc/test.txt

 4、grep:指定文件中查找指定字符串

 示例:查找前缀有“test”的文件包含“test”字符串的文件

#grep test test*

 5、more:以一页一页的形式显示文件内容

 示例:从第 20 行开始显示 testfile 之文档内容:

#more +20 testfile

 6、less:与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

 7、head:查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

 示例:显示 test.log 文件的开头 10 行:

 

#head test.log
     显示 test.log 文件的开头 5 行:
       #head -n 5 test.log

 8、tail:此命令从指定点开始将文件写到标准输出,将最尾部的内容显示在屏幕上,并且不断刷新,看到最新的文件内容。

八、压缩及解压缩基本命令

 首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

1、tar:

 用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件

 参数

   -c:创建打包文件

   -x:解开打包文件

   -z:geip压缩与解压

   -j:bzip2压缩与解压

   -v:显示压缩与解压过程

   -f:目标文件名

   -C:指定解压位置

 示例:

解包:
    #tar xvf FileName.tar
  打包:
    #tar cvf FileName.tar DirName
  解压:
     #tar zxvf FileName.tar.gz
  压缩:
     #tar zcvf FileName.tar.gz DirName

2、zip:

 用于压缩文件,压缩后的文件后缀名为 .zip,使用unzip命令解压。

 参数:

   -r:递归压缩,将自定目录下的所有子文件以及文件一起处理

   -m:将文件压缩后,删除原文件

   -q:安静模式,在压缩的时候不显示指令执行的过程

九、linux下创建一个指定大小的文件

 1.创建一个大小为500M的文件

dd if=/dev/zero of=test.log bs=1M count=500

 2.查看文件大小

[root@]$ ls -lh test.log
    -rw-r–r-- 1 root root 500M Mar 6 14:20 test.log
    [root@ ]$
相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
20天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
45 1
|
2天前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
21天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
22天前
|
搜索推荐 Linux
深入理解Linux操作系统的启动过程
本文旨在揭示Linux操作系统从开机到完全启动的神秘面纱,通过逐步解析BIOS、引导加载程序、内核初始化等关键步骤,帮助读者建立对Linux启动流程的清晰认识。我们将探讨如何自定义和优化这一过程,以实现更高效、更稳定的系统运行。
|
20天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
21天前
|
缓存 监控 网络协议
Linux操作系统的内核优化与实践####
本文旨在探讨Linux操作系统内核的优化策略与实际应用案例,深入分析内核参数调优、编译选项配置及实时性能监控的方法。通过具体实例讲解如何根据不同应用场景调整内核设置,以提升系统性能和稳定性,为系统管理员和技术爱好者提供实用的优化指南。 ####
|
23天前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
7月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
117 0
|
7月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战
【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战
151 0
|
7月前
|
Ubuntu Unix Linux
【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战
【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战
104 0

热门文章

最新文章