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的迁移。
相关文章
|
19天前
|
机器学习/深度学习 Dart 前端开发
移动应用与系统:构建现代数字生态的基石在当今这个高度数字化的社会中,移动应用与操作系统已成为我们日常生活不可或缺的一部分。它们不仅改变了我们的沟通方式,还重塑了我们的工作、学习和娱乐模式。本文将深入探讨移动应用开发的基础、移动操作系统的功能以及这两者如何共同塑造了我们的数字世界。
随着智能手机和平板电脑的普及,移动应用与系统的重要性日益凸显。它们不仅为用户提供了便捷的服务和丰富的功能,还为开发者提供了广阔的创新平台。本文将介绍移动应用开发的基本概念、技术栈以及最佳实践,并探讨主流移动操作系统的特点和发展趋势。通过分析移动应用与系统的相互作用,我们可以更好地理解它们在现代社会中的重要地位。
|
15天前
|
存储 算法 安全
操作系统之文件系统的奥秘
【9月更文挑战第19天】本文将深入探索操作系统中不可或缺的组件——文件系统,揭示其工作原理与实现细节。我们将通过浅显的语言和生动的比喻,一步步解析文件系统如何组织数据、管理存储空间,并确保数据的完整性和安全性。文章不仅适合初学者构建基础概念,也能帮助有经验的开发者更深入地理解文件系统的高级特性。
|
5天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
5天前
|
安全 Linux 数据安全/隐私保护
探索Linux操作系统的文件权限管理
【9月更文挑战第29天】在数字世界中,文件权限管理如同保护我们隐私的锁。本文将带你了解如何在Linux系统中设置和管理文件权限,确保你的数据安全。我们将一起学习如何通过命令行工具来控制文件访问,就像学习一门新语言一样有趣。准备好了吗?让我们一起开启这场技术之旅!
|
9天前
|
存储 缓存 文件存储
探索操作系统中的文件系统管理
【9月更文挑战第25天】在数字世界的海洋中,操作系统是指引我们航行的灯塔。它不仅管理着硬件资源,还维护着软件的秩序。本文将深入探讨操作系统中一个至关重要的部分——文件系统管理。我们将从基础概念出发,逐步深入到文件系统的设计与实现,最后通过代码示例来直观展示文件系统的操作。让我们一起揭开文件系统管理的神秘面纱,理解其背后的逻辑与奥秘。
|
23天前
|
存储 安全 Linux
探索Linux操作系统的心脏:内核
在这篇文章中,我们将深入探讨Linux操作系统的核心—内核。通过简单易懂的语言和比喻,我们会发现内核是如何像心脏一样为系统提供动力,处理数据,并保持一切顺畅运行。从文件系统的管理到进程调度,再到设备驱动,我们将一探究竟,看看内核是怎样支撑起整个操作系统的大厦。无论你是计算机新手还是资深用户,这篇文章都将带你领略Linux内核的魅力,让你对这台复杂机器的内部运作有一个清晰的认识。
52 3
|
23天前
|
存储 数据挖掘 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统服务器上跑了几十个网站,服务器上只有一块SATA硬盘。 服务器故障: 服务器突然宕机,尝试再次启动失败。将硬盘拆下检测,发现存在坏扇区
|
27天前
|
存储 Linux 索引
Linux 下最主流的文件系统格式——ext
【9月更文挑战第8天】硬盘被划分为若干相同大小的块(Block),默认大小为4K,便于灵活管理文件数据。文件数据分散存放于这些块中,提高了数据添加、删除和插入的便利性。
|
21天前
|
存储 监控 安全
探究Linux操作系统的进程管理机制及其优化策略
本文旨在深入探讨Linux操作系统中的进程管理机制,包括进程调度、内存管理以及I/O管理等核心内容。通过对这些关键组件的分析,我们将揭示它们如何共同工作以提供稳定、高效的计算环境,并讨论可能的优化策略。
22 0
下一篇
无影云桌面