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

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 和数据块。修改复制后的文件不会影响原始文件,因此原来文件的硬链接数不会增加
http://www.xdnf.cn/news/3710.html

相关文章:

  • 单片机裸机环境下临界区保护
  • Golang WaitGroup 用法 源码阅读笔记
  • # LeetCode 1007 行相等的最少多米诺旋转
  • 动态规划-1137.第N个泰波那契数-力扣(LeetCode)
  • 【iview】es6变量结构赋值(对象赋值)
  • 【LLaMA-Factory实战】1.3命令行深度操作:YAML配置与多GPU训练全解析
  • 轻量级RTSP服务模块:跨平台低延迟嵌入即用的流媒体引擎
  • 从融智学视域快速回顾世界历史和主要语言文字最初历史证据(列表对照分析比较)
  • Vue实现成绩增删案例
  • C++ 中的继承
  • JSON 处理笔记
  • npm pnpm yarn 设置国内镜像
  • 数据库原理与应用实验二 题目七
  • PowerShell安装Chocolatey
  • 哈希函数详解(SHA-2系列、SHA-3系列、SM3国密)案例:构建简单的区块链——密码学基础
  • Python刷题:流程控制(下)
  • PowerPC架构详解:定义、应用及特点
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】1.1 数据库核心概念与PostgreSQL技术优势
  • C++负载均衡远程调用学习之 Dns-Route关系构建
  • 代码随想录算法训练营Day43
  • 超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局
  • 美丽天天秒链动2+1源码(新零售商城搭建)
  • P4314 CPU 监控 Solution
  • YOLO旋转目标检测之ONNX模型推理
  • 上位机知识篇---粗细颗粒度
  • P2415集合求和 题解
  • 【Java IO流】字符输入流FileReader、字符输出流FileWriter
  • C++ 动态内存管理详讲
  • 【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream
  • ICRA 2025 基于触觉反馈的闭环分层控制框架——开放环境下通用门开启的智能规划与操作