您现在的位置是:首页 >学无止境 >云原生大佬重生,记忆逐步复苏(三:命令行管理文件)网站首页学无止境
云原生大佬重生,记忆逐步复苏(三:命令行管理文件)
目录
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:]:任意单个小写字母
- []:字符集匹配
- 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 等)来操作设备和资源。
扩展性:新的设备和资源可以通过文件系统接口轻松集成到系统中


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






QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结