您现在的位置是:首页 >学无止境 >云原生大佬重生,记忆逐步复苏(三:命令行管理文件)网站首页学无止境

云原生大佬重生,记忆逐步复苏(三:命令行管理文件)

子恒2005 2026-06-29 00:01:04
简介云原生大佬重生,记忆逐步复苏(三:命令行管理文件)

目录

1:linux的文件系统层次结构

2:如何通过名称指定文件

3:如何浏览文件路径

4:如何通过命令行管理文件

5:软硬链接

6:什么是模式匹配

7:shell扩展详谈

8:为什么说linux系统一切皆文件呢


1:linux的文件系统层次结构

Linux的文件系统层次结构定义了系统中数据的逻辑关系,定义了文件和目录的组织方式,默认设置了每个目录的作用。这种层次结构帮助用户更好的理解和管理文件系统。确保了不同linux发行版的一致性。默认登录的根文件系统层次结构主要如下:

1. /(根目录)

描述:根目录是整个文件系统的最顶层目录,所有其他目录和文件都从这里开始。

用途:根目录是整个文件系统的起点,包含所有其他目录。

2. /bin(二进制文件目录)

描述:包含系统启动和运行所需的二进制可执行文件。

用途:存放用户常用的命令行工具,如 ls、cp、mv 等。

3. /sbin(系统二进制文件目录)

描述:包含系统管理员使用的系统管理命令。

用途:存放系统管理工具,如 fdisk、mount、umount 等。

4. /etc(配置文件目录)

描述:包含系统的配置文件。

用途:存放系统和应用程序的配置文件,如 passwd、group、hosts 等。

5. /dev(设备文件目录)

描述:包含设备文件,用于表示系统中的硬件设备。

用途:提供对硬件设备的访问接口,如 /dev/sda1 表示第一个硬盘的第一个分区。

6. /proc(进程信息目录)

描述:包含系统和进程的信息,是一个虚拟文件系统。

用途:提供运行时的系统信息和进程信息,如 /proc/cpuinfo、/proc/meminfo 等。

8. /var(可变数据目录)

描述:包含可变数据,如日志文件、缓存文件等。

用途:存放系统运行时生成的文件,如日志文件 /var/log/、缓存文件 /var/cache/ 等。

9. /tmp(临时文件目录)

描述:用于存放临时文件。

用途:提供一个临时存储空间,系统重启后通常会清空。

10. /home(用户主目录)

描述:包含用户的个人文件和目录。

用途:每个用户都有一个自己的主目录,如 /home/user。

11. /root(root 用户主目录)

描述:root 用户的主目录。

用途:存放 root 用户的个人文件和配置。

12. /usr(用户程序目录)

描述:包含用户程序和文件。

用途:存放用户程序和文件,如 /usr/bin/、/usr/lib/、/usr/share/ 等。

13. /opt(可选软件包目录)

描述:包含可选软件包。

用途:存放第三方软件包,如 /opt/oracle/。

14. /boot(启动目录)

描述:包含启动 Linux 时使用的静态文件。

用途:存放启动时需要的文件,如内核文件 vmlinuz 和启动加载器配置文件 grub.cfg。

15. /media(媒体挂载点)

描述:用于挂载可移动媒体设备。

用途:挂载 USB 驱动器、光盘等设备。

16. /mnt(挂载点目录)

描述:用于临时挂载文件系统。

用途:临时挂载外部存储设备,如 /mnt/usb

2:如何通过名称指定文件

每个文件在文件系统都有自己唯一的路径,叫做绝对路径

比如说/var/log/messages.log

但是如果每次都有输入这么长的路径有点麻烦,所以存在相对路径,在shell程序中都会有自己目前处于的工作目录,可以根据自己的工作目录去通过相对路径指定文件,且存在特殊符号去表示目录,比如说

~:当前登录用户的主目录,比如说/home/student

.:当前处于的目录

..:当前目录的父目录

-:当前目录的前一个目录

比如说如果此时是student用户登录,此时在/home/student/.config目录

如果要访问.config目录下的text文件

绝对路径:/home/student/.config/text

相对路径:~/.config/text,./text

想访问student主目录的tar文件时

相对路径:../tar

3:如何浏览文件路径

-使用pwd命令:可以列出当前处于的目录

-使用ls 命令:可以列出某个目录下的子文件和子目录,后面加路径参数,如果不加参数,默认当前目录

-使用cd 命令:后面加目录路径,可以切换自己的目录到指定的目录

4:如何通过命令行管理文件

所谓的通过命令行就是指在shell程序中输入指令,管理文件指的是创建,删除,复制,移动文件或者是目录。具体流程如下图

-创建目录

-复制目录及包含所有的文件

-移动目录及其所有的文件

-删除目录及其包含的所有文件

-创建文件

-复制文件

-移动文件

- 删除文件

5:软硬链接

什么是链接:网站链接可以导向网站,那么linux系统中的链接是导向文件的,(并不仅仅是普通文件,可以是目录文件,设备文件等等)。

那为什么会有软硬链接呢,有什么区别

在Linux中,链接创立命令是ln(link)

-软链接

创立命令:ln -s

软链接是一种特殊的文件,它包含了一个指向目标文件或目录的路径。软链接类似于 Windows 中的快捷方式。

特点

指向路径:

软链接包含一个指向目标文件或目录的路径,而不是直接指向 inode。

因此,软链接依赖于目标路径的存在。

依赖路径:

如果目标文件被删除或移动,软链接将失效(变成“死链接”)。

灵活性:

软链接可以跨文件系统(即可以跨分区)。

软链接可以链接到目录。

目标文件删除行为:

如果目标文件被删除,软链接仍然存在,但会变成一个无效的链接(死链接)。

-硬链接

创立命令:ln 目标文件(目录) 硬链接名

硬链接是指向文件系统中 inode(索引节点) 的直接引用。inode 是文件系统中存储文件元数据(如文件大小、权限、所有者等)的结构,而硬链接通过 inode 来访问文件内容。

特点

直接指向 inode:

硬链接直接指向文件的 inode,而不是文件的路径。

因此,硬链接和原始文件实际上是同一个文件的两个不同名字。

不依赖路径:

硬链接不包含路径信息,它直接通过 inode 访问文件内容。

因此,即使原始文件被删除,硬链接仍然可以访问文件内容(只要 inode 未被删除)。

限制:

硬链接不能跨文件系统(即不能跨分区)。

硬链接不能链接到目录(出于安全和一致性考虑)。

文件删除行为:

当一个文件被删除时,实际上只是删除了该文件的一个链接(即一个名字)。

只有当文件的所有链接都被删除(即 inode 的引用计数为 0)时,文件的内容才会被真正删除。

6:什么是模式匹配

模式匹配就是通过便捷特殊字符快速查找想要的多个文件

模式匹配是基于shell的路径名扩展,所谓扩展就是将特殊部分(变量,命令,特殊字符)替换成相对应的信息

路径名扩展是将元字符(.,?,*)等特殊字符按照模式匹配成想要的文件名列表

模式如下:

- * :匹配任意数量字符

- ? :匹配任意单个字符

- [[:class:]] :字符类匹配,匹配任意单个字符集里面的字符

常见的字符集

[:alpha:]:任意单个字母

[:digit:]:任意单个数字

[:alnum:]:任意单个字母或者数字

[:space:]:任意单个空白

[:upper:]:任意单个大写字母

[:lower:]:任意单个小写字母

- []:字符集匹配

  1. z]:表示匹配a-z的任意单个字符

[!a-z]:表示匹配不是a-z的任意单个字符

-()?:可选模式匹配,匹配一个或多个括号内的模式

- !():排除模式匹配:匹配不符合括号内匹配模式的文件名

7:shell扩展详谈

在 Shell(特别是 Bash)中,扩展(Expansion)是指在命令执行之前,Shell 对命令行中的某些特殊字符或模式进行解析和替换的过程。Bash 提供了多种类型的扩展机制,这些扩展按照特定的顺序发生,用于处理命令行中的变量、命令替换、路径名匹配等。

以下是 Bash 中常见的扩展类型及其顺序:

1. 命令替换(Command Substitution)

命令替换允许你将一个命令的输出插入到命令行中。它有两种语法:

$(command):现代语法,推荐使用。

`command`:旧式语法,功能相同。

示例:echo "Today is $(date)"

输出:Today is Thu Feb 15 14:30:00 CST 2024

2. 参数扩展(Parameter Expansion)

参数扩展用于处理变量的值。它允许你对变量进行各种操作,如替换、截断、默认值等。

示例:name="Kimi"

echo "Hello, ${name}"

输出:Hello, Kimi

常见用法:

${var:-default}:如果变量为空或未定义,使用默认值。

${var:+value}:如果变量已定义且非空,使用指定值。

${var#pattern}:从变量值中删除最短匹配的前缀。

${var##pattern}:从变量值中删除最长匹配的前缀。

${var%pattern}:从变量值中删除最短匹配的后缀。

${var%%pattern}:从变量值中删除最长匹配的后缀。

3. 算术扩展(Arithmetic Expansion)

算术扩展用于执行算术运算。它使用 $((...)) 语法。

示例:result=$((5 + 3))

echo $result

输出:8

4. 路径名扩展(Pathname Expansion,也称为 Globbing)

如上文进行模式匹配,得到匹配的文件名

5. 大括号扩展(Brace Expansion)

大括号扩展用于生成一系列字符串,通常用于创建多个文件名或目录名。

示例:mkdir {dir1,dir2,dir3}

创建 dir1、dir2 和 dir3 三个目录。

另外,如果输入命令时想完全禁止shell扩展或者部分禁止shell扩展

完全禁止shell扩展使用‘’单引号将字符括起来

部分禁止shell(除了命令,$,,!)扩展

8:为什么说linux系统一切皆文件呢

“Linux 系统是一切皆文件” 是一个非常形象的描述,反映了 Linux(以及 Unix 系统)的核心设计理念之一:将所有系统资源和设备都抽象为文件。这种设计极大地简化了系统编程和管理,使得用户可以通过统一的文件操作接口来访问各种资源

一、为什么说“一切皆文件”?

在 Linux 系统中,几乎所有的系统资源和设备都被表示为文件或目录。这种设计基于以下核心思想:

统一的文件系统接口:所有资源(包括文件、目录、设备、网络资源等)都通过文件系统接口进行访问。

简化编程模型:通过将所有资源抽象为文件,系统提供了一致的访问方式,使得编程和管理更加简单。

二、一切皆文件的优势

统一的接口:所有资源都通过文件系统接口访问,简化了编程模型。

灵活性:用户可以通过标准的文件操作命令(如 cat、echo、cp 等)来操作设备和资源。

扩展性:新的设备和资源可以通过文件系统接口轻松集成到系统中

如果你看到了这里,说明你踏出了记忆复苏的第三步,你已经具备一丁点的能力了,加油少年,假以时日,你必将重登知识之巅,成为云原生大佬,另外成为我的粉丝吧

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。