linux-文件操作

在 Linux 系统中,文件操作与管理是日常使用和系统管理的重要组成部分。下面将详细介绍文件的复制、移动、链接创建,以及文件查找、文本处理、排序、权限管理等相关知识。

一、文件的复制

在 Linux 里,cp 命令可用于复制文件或目录,生成其副本。其语法结构为:cp [选项] 源文件或目录 目标文件或目录。以下是一些常用选项:

  • -r:递归复制整个目录及其子目录。若要复制一个包含子目录的文件夹,就需要使用该选项。
  • -i:在覆盖目标文件之前会提醒用户,避免误操作覆盖重要文件。
  • -f:强制复制,会忽略错误继续复制,即便遇到一些小问题也会尽力完成复制操作。

二、文件的移动

mv 命令用于移动文件或目录,语法结构为:mv [选项] 源文件或目录 目标文件或目录。常用选项 -i 为交互式操作,当目标文件存在时,会提醒用户是否覆盖。

此外,mv 还有其他使用方式。可以使用 mv [多个]文件 目录,如果文件不在目标目录中,就会被移入该文件夹;也能使用 mv [多个]目录 目标目录,实现目录的移动。

三、创建链接文件

ln 命令可以为文件创建链接文件,它不会生成副本,而是与原文件相关联。其语法结构是:ln [选项] 源文件 目标文件。常用选项 -s 用于创建软链接文件。

硬链接与软链接的区别

  • 硬链接:链接文件和源文件具有相同的索引号,链接让它们有不同的名称。硬链接不能跨文件系统,并且不能为目录创建硬链接。
  • 软链接:只是指向另一个文件名,包含的是另外一个文件的路径名的文本指针。软链接可以跨文件系统,也可以为目录创建软链接。

目录的链接方面,子目录数一开始创建默认是 2(. 和 ..)。可以通过 ls -dl 来展示详细的信息,-d 选项能让目录像文件一样显示。

文件名替换功能

在 Linux 中,可以使用特定字符去匹配字符(正则表达式):

  • ?:匹配单个字符。
  • *:匹配 0 到 n 个字符。
  • [字符列表]:匹配文件名中任意在字符列表中的字符。
  • [!字符列表]:匹配文件名中任意不在字符列表中的字符。

系统会先处理通配符,再去匹配(文件名扩展),命令本身并不知道通配符的存在。

四、文件查找和文本处理

查找文件

find 命令可在层次目录中根据文件名或文件属性名去定位文件,还能对定位的文件执行删除、打印等操作。其语法格式为:find [目录] [条件] [动作]。例如,find ./ -name filea -print 会在当前目录中通过名字查找 filea,找到后将其打印出来。

常见选项
  • -name:根据文件名查找,使用时可以结合通配符,但要使用双引号包起来。
  • -type:根据文件类型查找,常见的文件类型有 b(块设备)、c(字符特殊设备)、d(目录文件)、f(普通文件)。
  • 可以使用操作符实现多个条件的查找:
    • -a:与操作(默认)。
    • -o:或操作。
    • !:非操作。
    • ():逻辑组,指定哪些条件优先评估。
  • -size +-n:根据文件大小(块)查找。
  • -mtime +-n:根据最后修改的时间(天)查找。
常见动作
  • -exec 命令名 {} \;:把找到的文件当做参数去执行新的命令。
  • -ok 命令名 {} \;:同上,但为交互式操作,执行前会询问用户是否继续。
    也可以使用 + 去替换 \;

文本查找

grep 命令用于在一个或多个文件中查找满足特定格式的行。其语法格式为:grep [选项] 搜索的字符串 文件名,输出的是包含搜索字符串的行。

常见选项
  • -i:忽略大小写。
  • -n:显示匹配的行号。
  • -v:显示不匹配的行。
  • -w:匹配整个字符串。
  • -c:显示匹配行的数量。
  • -r:递归搜索。

字段提取

cut 命令可从文件中取出指定的字段或列,语法格式为:cut 选项 文件

常见选项
  • -b:指定字节,如 1,3,5 或 1 - 3,5
  • -c:指定字符,如 1 - 4 表示输出第一个到第四个字符。
  • -d:指定分隔符,默认是制表符。如果分隔符有特殊意义或为空格,需要用双引号括起来,例如 cut -d " " -f 1 phones
  • -f:指定字段的位置。

cut 命令的输出会显示在标准输出中。

文件排序

sort 命令用于对文件进行排序,语法格式为:sort [选项] 文件

常见选项
  • -n:以数值来排序,包含负数和小数。
  • -r:逆序排序。
  • -o:输出到指定的文件。
  • -k:指定排序的依据字段,如 1,2 表示先用第一个字段排序,若相同再用第二个字段排序。

五、文件权限管理

文件权限的含义

文件
  • 读(r:可以读取文件内容。
  • 写(w:可以修改文件内容,也能删除文件。
  • 执行(x:可以将文件作为程序文件执行。
目录
  • 读(r:可以列出目录内容。
  • 写(w:可以在目录内部创建、删除、重命名文件和子目录。
  • 执行(x:可以进入该目录。

umask 掩码

umask 掩码用于设置哪些权限不会被赋予新文件。文件的默认权限是 666,目录的默认权限是 777。例如,umask 022 会将初始权限设置为 777 - 022(目录)和 666 - 022(文件)。如果 umask 是 4 位,第一位表示特殊权限。

修改权限

chmod 命令用于修改文件权限,有两种方式:

  • 字符串方式:字符串包括三个部分,u(用户)、g(组)、o(其他)、a(所有);+-=rwx 或 -。例如,chmod u+x file 表示给文件的所有者添加执行权限。
  • 三位八进制方式:例如,chmod 755 file 。

六、Linux 文件组织方式

Linux 基于索引节点来组织文件,索引节点的最大数量在初始化的时候就确定了。删除一个文件会释放其占用的索引节点。目录包含索引节点号,通过索引节点号可以找到对应的索引节点,而索引节点指向文件的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 复习

VS 修改 C 语言标准 右键项目-属性 输入输出 //引用头文件&#xff0c;用<>包裹起来的一般是系统提供的写好的代码 编译器会在专门的系统路径中去进行查找 #include <iostream> //自己写的代码文件一般都用""包裹起来 编译器会在当前文件所在的目录中査…

openGauss新特性 | HTAP新特性介绍

一、行列融合功能简介 HTAP 行列融合特性在单机、主备场景下&#xff0c;通过节点的行列双格式内存模式&#xff0c;实现openGauss HTAP一体化数据库架构。 通过高效的行列转换技术方案&#xff0c;节点读取磁盘行存数据&#xff0c;生成列存储单元&#xff08;Column Unit&am…

双目测量中的将视差图重投影成三维坐标图

双目测距主要步骤如下&#xff1a; 左右两张图片 → 匹配 → 得到视差图 disp&#xff1b; 使用 cv2.reprojectImageTo3D(disp, Q) 将视差图 重投影 成三维坐标图 → 得到 points_3d 什么是 points_3d&#xff1f; points_3d cv2.reprojectImageTo3D(disp, Q)points_3d.shap…

《深度剖析:SOAP与REST,API集成的两极选择》

API作为不同系统之间交互的桥梁&#xff0c;其设计与实现的优劣直接影响着整个软件生态的运转效率。而在API的设计领域&#xff0c;SOAP和REST犹如两座巍峨的山峰&#xff0c;各自代表着截然不同的设计理念与应用方向&#xff0c;成为开发者在构建API时必须慎重权衡的关键选项。…

非对称加密算法(RSA、ECC、SM2)——密码学基础

对称加密算法&#xff08;AES、ChaCha20和SM4&#xff09;Python实现——密码学基础(Python出现No module named “Crypto” 解决方案) 这篇的续篇&#xff0c;因此实践部分少些&#xff1b; 文章目录 一、非对称加密算法基础二、RSA算法2.1 RSA原理与数学基础2.2 RSA密钥长度…

Pillow 玩图术:轻松获取图片尺寸和颜色模式

前言 在这个“图像为王”的时代,谁还敢说自己没被一张图折磨过?一张图片不讲武德,说崩就崩,说卡就卡,仿佛像素里藏着程序员的眼泪。不管你是网页设计师、AI炼丹师,还是只是想把猫片修得像艺术品,图片的尺寸和颜色模式都是你必须掌握的第一手情报。如果你不知道它有多宽…

下载core5compat 模块时,被禁止,显示 - servese replied: Forbbidden. -->换镜像源

怎么解决&#xff1f; --->换镜像源 方法 1&#xff1a;使用命令行参数指定镜像源 在运行 Qt 安装器时&#xff0c;通过 --mirror 参数指定镜像源&#xff1a; # Windows qt-unified-windows-x64-online.exe --mirror https://mirrors.ustc.edu.cn/qtproject# Linux/macO…

WPF中Behaviors

行为的好处 可以把复杂的界面逻辑抽象出去&#xff0c;让xaml的界面设计更简单&#xff0c;更清爽 1.安装包 Microsoft.Xaml.Behaviors.Wpf2.简单实现拖动效果 <Border Width"100"Height"100"Background"Red"><i:Interaction.Behav…

GitHub 趋势日报 (2025年05月03日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1hacksider/Deep-Live-Camreal time face swap and one-click video deepfake with only a single image⭐ 1582⭐ 59337Python2aip…

Oracle OCP认证考试考点详解083系列08

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 36. 第36题&#xff1a; 题目 解析及答案&#xff1a; 关于数据库闪回&#xff08;FLASHBACK DATABASE&#xff09;功能&#xff0c;以下…

优化01-统计信息

Oracle 的统计信息是数据库优化器生成高效执行计划的核心依据。它记录了数据库对象&#xff08;如表、索引、列等&#xff09;的元数据信息&#xff0c;帮助优化器评估查询成本并选择最优执行路径。以下是关于 Oracle 统计信息的详细介绍&#xff1a; 一、统计信息的分类 表统…

动态规划-面试题08.01三步问题-力扣(LeetCode)

一、题目解析 此题可以类比第N个泰波那契数 二、算法解析 1、状态表示 根据上面的分析和题目要求&#xff0c;dp[i]表示&#xff1a;到达i位置&#xff0c;一共有多少种方法 2、状态转移方程 以i位置的状态&#xff0c;以最近一步划分问题 dp[i] 从i-1->i dp[i-1] 从…

kotlin中枚举带参数和不带参数的区别

一 ✅ 代码对比总结 第一段&#xff08;带参数 工具方法&#xff09; enum class SeatPosition(val position: Int) {DRIVER_LEFT(0),DRIVER_RIGHT(1),SECOND_LEFT(2),SECOND_RIGHT(3);companion object {fun fromPosition(position: Int): SeatPosition? {return SeatPosi…

Java使用JDBC操作数据库

1.创建一个数据库一会用来连接 2.使用idea新建一个Java项目 3.在pom文件中加上相关依赖&#xff0c;并配置Maven路径 <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>…

重名导致does not name a type

今天在Ubuntu24.04上编成时&#xff0c;makefile编译报错: falsecolor.h:48:9: error: ‘FalseColor’ does not name a type48 | FalseColor* content ;| ^~~~~~~~~~falsecolor.h的部分代码如下: class FalseColor {public:FalseColor(int w, int h){width …

Vue3 后台管理系统模板

Vue3 后台管理系统模板 gie仓库地址 一个基于 Vue3 TypeScript Element Plus 的后台管理系统模板&#xff0c;集成了动态路由和权限管理功能。 技术栈 Vue 3.2TypeScript 4.5Vue Router 4Vuex 4Element Plus 2.9AxiosLess 功能特性 &#x1f680; 基于 Vue3 最新技术栈开…

林业数智化转型初步设计方案

最近应林业方面的朋友要求,帮助其设计了林业方面的数字化智能化转型的方案设计,编写了如下内容,供大家参考,林业方面主要有三大方向,即林业生态、生物灾害和疫源疫病,目前已经建成了一些信息化系统,但在数字化智能化方面偏弱,就想着如何借助人工智能、物联网、大数据和…

springboot单体项目的执行流程

首先就是启动springboot项目&#xff0c;即执行主函数&#xff0c;这个主函数的类通常带有SpingBootApplication注解&#xff0c;类中的main方法就是程序的入口。 启动主函数后&#xff0c;SpringBoot会按特定顺序加载配置文件&#xff0c;如application.properties或applicat…

Python格式化字符串的四种方法

Python格式化字符串的四种方法 1.使用 % 运算符 %s 是一个字符串的占位符&#xff0c;而 “World” 是替换它的值 print("Hello, %s!" % "World") # 输出&#xff1a;Hello, World!你可以使用多个占位符 注意&#xff1a;多个变量占位&#xff0c;变量要…

【Redis】缓存|缓存的更新策略|内存淘汰策略|缓存预热、缓存穿透、缓存雪崩和缓存击穿

思维导图&#xff1a; Redis最主要的用途&#xff0c;三个方面&#xff1a; 1.存储数据&#xff08;内存数据库&#xff09; 2.缓存&#xff08;redis最常用的场景&#xff09; 3.消息队列 一、什么是缓存 我们知道对于硬件的访问速度来说&#xff0c;通常情况下&#xff1…