当前位置: 首页 > news >正文

Linxu基本操作

Linxu基本操作

1 Linux文件系统

文件系统(File System)是操作系统中负责管理存储设备(如硬盘、SSD、USB闪存盘等)上数据和元数据的结构或机制。它为用户和程序提供了一个抽象层,使得数据的存取、检索、更新和删除等操作变 得简单而有效。文件系统不仅负责存储文件本身的数据,还存储了关于文件的信息,如文件名、创建时 间、修改时间、大小、权限(谁可以读、写或执行该文件)以及文件在存储设备上的位置等。

文件系统的主要功能和特点包括:

1.数据存储:文件系统负责将数据以文件的形式存储在物理设备上。

2**.数据组织**:通过目录(也称为文件夹)和子目录结构来组织文件,使得用户能够方便地找到和管理
文件。

3.提供接口:为操作系统和应用程序提供了一套标准的接口(如API),用于文件的创建、删除、读
取、写入、移动和复制等操作。

4.安全性:通过权限控制来保护文件,确保只有授权的用户或程序才能访问特定的文件。

5.错误恢复:大多数现代文件系统都包含错误检测和恢复机制,以确保数据的一致性和完整性。

不同的操作系统支持不同的文件系统类型,例如:

**Windows:**常见的文件系统有FAT(File Allocation Table)、NTFS(New Tech nology File System)
和exFAT(Extended File Allocation Table)。

Linux/Unix:常见的文件系统有EXT(Extended File System)、EXT2、EXT3、EXT4、XFS、Btrfs、
JFS、ReiserFS以及网络文件系统NFS(Network File System)等。

**macOS:**主要使用HFS+(Hierarchical File System Plus)和较新的APFS(Apple File System)。

inux文件系统采用树形结构,所有文件和目录都位于根目录下的子目录中

linux系统下的文件组织方式是以**/根目录**开始

  • 绝对路径:(从根目录开始的路径)以/的开头的就是绝对路径
    • 可以使用**/表示根目录**,起点是固定的 /根目录
  • 相对路径:(不从根目录开始的路径)
  • 相对路径可以把任何一个目录作为起点,路径里使用…进入上层目录),路径里 使用.表示当前目录),起点不是固定的。
wanfeng@wanfeng-virtual-machine:~$ 
  • 当前用户名@当前系统名:当前工作路径$
  • wanfeng:当前的用户名
  • @ :分割符
  • wanfeng-virtual-machine :当前系统名
  • : :分割符
  • ~ :当前工作路径
  • $ :分割符

~ :家目录,表示当前用户的目录。在此目录下,当前用户是非常高的权限。

注意:可以通过#和 来区分此时是超级用户还是普通用户, 来区分此时是超级用户还是普通用户, 来区分此时是超级用户还是普通用户,表示普通用户,#表示超级用户

2 vi编辑器

vi是linux系统里用来记录文字信息的工具
vi只能在终端窗口里使用(不能使用鼠标)
vim是vi进阶版。
vi 编辑器主要有三种模式:

命令模式(Command Mode):这是 vi 的默认模式,用户可以在这个模式下使用快捷键来执行命 令,如移动光标、删除文本、复制粘贴等。

比如创建a.cpp,直接 vi a.cpp,

命令->插入 i

x : 删除光标所在位置的字符
dd :delete 删除光标所在行
ndd : number delete 。n在这里是一个数字,表示删除包括光标所在行及往下n行的内容。并且
把删除的内容保存在剪切板
p : print 将剪切板中的内容粘贴到当前行的后面
P : Print 将剪切板中的内容粘贴到当前行的前面
yy :复制当前行,把当前行的内容拷贝到剪切板中
r : replace 替换光标所在的那一个字符,按下r在找要替换的字符
R :替换光标及之后的多个字符,(按下esc退出替换模式)
u : undo 撤销操作

插入模式(Insert Mode):在命令模式下,用户可以通过输入i 、a、o等命令进入插入模式,在这个模式下可以像使用普通文本编辑器一样输入文本。

插入->命令 Esc

末行模式(Last Line Mode):也被称为命令行模式或Ex模式,用户可以通过在命令模式下按:(冒 号)进入此模式。在这个模式下,用户可以执行一些高级命令,如搜索文本、保存文件、退出vi等。

命令 ->末行 按:

末行->命令 删除:

  • :q : quit 退出 只有在没有进行修改的情况下,才能正常退出(如果有修改文件内容,退出的时候进行询问/提示)
  • :q! :强制退出,不保存
  • :wq :write quit 保存并退出
  • :w :write 写入/保存
  • :x : 保存并退出
  • : /需要搜索的内容
    • n :next 找到下一个匹配的内容
    • N :找到上一个匹配的内容
  • : set nu显示行

vi编译器编译执行

 g++ c.cpp -o c./c

3 文件的元数据

元数据(Metadata)是描述数据的数据(data about data),主要是描述数据属性的信息。

元数据用来描述文件的特征,如访问权限、文件拥有者、文件数据块的分布信息(如inode号)等。

inode是文件的身份证号

Window是通过文件扩展名区分文件类型,Linux文件类型和扩展名无关,取决于创建时候的文件类型,创建时候是什么类型就是什么类型,修改后缀名类型不变

  • 查看文件的元数据

    ls -l -rw-rw-r-- 1 
    -rw-rw-r-- 1 wanfeng wanfeng 86  5月  3 14:15 c.cpp
    
    • 第一个字符(-)表示这是一个普通文件(其他可能的字符包括d表示目录,l表示软链接、以及其他用户的权限。
    • 接下来的三组字符分别表示文件所有者的权限(read, write, execute)、文件所属组的权
      • 在这个例子中,rw-表示**文件所有者(**wanfeng)有读(r)和写(w)权限,但没有执行 (x)权限。
      • 第二个rw-表示与文件所有者同组的用户(wanfeng组)也有读(r)和写(w)权限,但没 有执行(x)权限。
      • 最后的r–表示其他所有用户只有读(r)权限,没有写(w)和执行(x)权限。

怎么区分呢?举个例子:王者登录:你有三个账号你的qq 你的wx 你同学账号

文件所有者:qq (你用 QQ 账号创建了一个文件,所以 QQ 是文件所有者)

文件所有组:假设你创建了一个名为 mygroup 的组,并将 QQ 和微信账号都添加到了这个组中。那么 mygroup 就是文件的所有组

其他所有用户:同学账号(不在 QQ 和 mygroup 组中的其他用户)

说白了文件所有组就是你创建的用户组,可以将多个用户添加到这个组中。

在Linux中,您可以使用 chmod 命令来修改文件或目录的权限。 chmod 命令允许您指定谁(文件所有 者、所属组成员、其他用户)可以对文件或目录执行什么操作(读®、写(w)、执行(x))

chmod [选项] 权限 文件名

符号模式:使用
u (用户,即文件所有者)、g(组)、o(其他用户)和a(所有用户)来表示权限
的类别,使用+(添加权限)、-(移除权限)、=(设置权限)来表示操作。

例如,给文件所有者添加执行权限:

chmod u+x 文件名

给 c.cpp文件其他用户(o)添加(+)可写(w)权限

chmod o+w c.cpp
-rw-rw-rw- 1 wanfeng wanfeng 86  5月  3 14:15 c.cpp

数字模式:使用三个数字来表示权限,每个数字代表一类用户的权限(所有者、组、其他用户)。每个
数字是读(4)、写(2)和执行(1)权限之和。
例如,设置文件权限为所有者可以读写执行(7),组用户可以读执行(5),其他用户可以读(4):

chmod 754 文件名

举个例子:

-rwxrwxr-x 1 wanfeng wanfeng 16520  5月  3 14:15 c
chmod 666 c
-rw-rw-rw- 1 wanfeng wanfeng 86  5月  3 14:15 c.cpp

1 :这个数字表示该文件或目录的硬链接数。在这个例子中,test.cpp 文件有一个硬链接,即它本身。如果这个数字大于1,那么意味着还有其他的文件名链接到了这个文件的内容。
wanfeng(第一个):这是文件所有者的用户名。在这个例子中,文件所有者是wanfeng。
wanfeng(第二个):这是文件所属组的名称。在这个例子中,文件属于wanfeng组。
86:这个数字表示文件的大小,单位是字节(byte)。

5月 3 14:15:这部分表示文件的最后修改时间。在这个例子中,文件test.cpp 最后一次被修改的时间是8月22日的13时43分。注意,时间的显示格式可能会根据系统的区域设置而有所不同。
test.cpp :这是文件的名称。

inode号是一个指向inode数据结构指针或索引。这个inode数据结构包含了文件或目录的所有元数据信息。
当操作系统需要访问一个文件或目录时,它会首先根据文件名找到对应的inode号,然后通过inode号访问inode数据结构,从而获取文件或目录的元数据信息。

每个inode号在文件系统中都是唯一的,它确保了每个文件或目录都有一个唯一的标识。这种唯一性使 得文件系统能够准确地管理和访问大量的文件和目录,而不会发生混淆。

  • 查看文件inode号
ls -i 文件名
ls -i c.cpp
807512 c.cpp

表面上,用户通过文件名打开文件。实际上系统通过inode节点信息,找到该文件数据存储的硬盘区域,读出数据。

4 链接

在Linux文件系统中,链接是指两个或多个文件或目录之间的连接关系,它允许一个文件或目录通过不同的路径名被访问。通过文件的inode号实现。(可以粗略把文件名inode理解为指针,文件数据认为是空 间)

4.1 软链接(Soft Link)

或者叫符号链接(Symbolic Link)

软链接类似于Windows中的快捷方式。

它本身是一个特殊的文件(Linux万物都是文件),其中包含了另一个文件或目录的路径 信息。当访问软链接时,系统会解析这个路径并访问指向的文件或目录。

  • 文件A和文件B inode节点虽然不一样,但是文件A的内容就是文件B的路径
  • 读取文件A的时候,系统会自动将访问者导向文件B
  • 因此,无论打开文件A还是打开文件B,最终读取到的内容都是文件B的内容
  • 这种时候/情况,文件A称为文件B的软链接 (soft Link)
  • 意味着文件A指向了文件B,删除文件A是不会对文件B有影响的,但是如果删除文件B就会对文件A产生影响,文件A无法打开(找不到路径对应的内容了)

在这里插入图片描述

语法:

ln -s 源文件 软连接文件名
ln -s ./code soft_code

在这里插入图片描述

!在这里插入图片描述

注意:
软链接可以指向目录,而硬链接不能。
软链接可以跨文件系统创建,即可以链接到不同文件系统中的文件或目录。
不要在共享目录下使用,因为window没有链接文件

4.2 硬链接(Hard Link)

硬链接通过文件系统中的索引节点(inode)来实现。在Linux中,每个文件都有一个唯一的inode号, 它是文件在磁盘上的元数据标识。硬链接允许多个文件名指向同一个inode号,即多个文件名可以引用 同一个文件的内容。

  • 一般情况下,文件名和inode节点是一一对应的关系,也就是每一个inode节点对应一个文件名
  • 但是linux系统允许多个文件名指向同一个inode节点,意味着可以用不同的文件名访问相同的内容
  • 对于这个文件内容的进行修改,会影响其他文件名访问那个文件内容,但是删除一个文件名,不影响其他文件名的使用的。这个链接称为硬链接 (hard link)

为什么呢,因为Linux多个文件可以拥有多个inode号,系统会统计使用inode号认识

增加一个+1.删除1个-1,为0才会把inode号回收

语法:

ln 源文件 硬连接文件名

为源文件创建一个硬链接 指向inode (目标文件指向源文件的inode)

在这里插入图片描述

硬链接的inode和链接的文件一样。

  • 文件本身就是硬链接,创建一个稳健硬链接+1,删除硬链接-1.文件复制不会添加硬链接
  • 当创建一个文件的硬链接时,文件系统并不会复制文件的内容,而是会在目录中创建一个新的目录项,该目录项指向与原始文件相同的inode号。
  • 因此,硬链接并不是文件内容的复制,而是文件名的别名。对硬链接文件的修改会直接影响到原始文件,因为它们都指向同一个inode和文件数据。

注意:

  • 硬链接只能对文件进行链接,不能对目录进行链接。
  • 硬链接不能跨文件系统创建,即不能链接到不同文件系统中的文件
  • 文件复制:文件复制会创建一个全新的文件,拥有自己的 inode 和数据块。修改复制后的文件不会影响原始文件,因此原来文件的硬链接数不会增加

相关文章:

  • 计算机系统结构 第二章 :缓存优化
  • Java中深拷贝与浅拷贝的深入探讨
  • C++抽象基类三重防线:纯虚函数与保护构造的深度实践
  • springAop代理责任链模式源码解析
  • 《解锁GCC版本升级:开启编程新世界大门》
  • Python蓝桥杯真题代码
  • 工作记录 2015-06-01
  • 数据库介绍以及windows下mysql安装
  • vector和string的迭代器
  • BG开发者日志505:项目总体情况
  • PowerPC架构详解:定义、应用及特点
  • 软件管理(安装方式)
  • MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等
  • MySQL安装完全指南:从零开始到配置优化(附避坑指南)
  • 【Python生成器与迭代器】核心原理与实战应用
  • 【Python实战】飞机大战
  • 吾爱出品 [Windows] EndNote 21.5.18513 汉化补丁
  • 【进阶】C# 委托(Delegate)知识点总结归纳
  • Rotary Positional Embedding
  • QT6 源(72):阅读与注释单选框这个类型的按钮 QRadioButton,及各种属性验证,
  • 多地政府机关食堂五一“开门迎客”:怎么看这场“宠粉”大戏
  • 爱彼迎:一季度总收入约23亿美元,将拓展住宿以外的新领域
  • 美国鞋类巨头请求白宫豁免关税,称已构成“生存威胁”
  • 党旗下的青春|赵天益:少年确定志向,把最好的时光奉献给戏剧事业
  • 今年4月上海一二手房成交面积同比增21%,二手房成交2.07万套
  • 投资者建议发行优惠套票给“被套”小股东,张家界:将研究考虑