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

相关推荐
sunshineine3 分钟前
Linux系统安装PaddleDetection
linux·运维·服务器·人工智能·算法
m0_5493148631 分钟前
CRS 16 slot 设备硬件架构
运维·网络·硬件架构·cisco·运营商·ios-xr·crs
belldeep1 小时前
WSL 安装 Debian 后,apt get 如何更改到国内镜像网址?
linux·debian·wsl
烦躁的大鼻嘎1 小时前
【Linux】深入理解Linux基础IO:从文件描述符到缓冲区设计
linux·运维·服务器·c++·ubuntu
s_little_monster1 小时前
【Linux】网络基础
linux·运维·网络·笔记·学习·php·学习方法
深海小咸鱼2 小时前
如何在服务器后台运行Python脚本,并配置虚拟环境与GPU支持
服务器·python·策略模式
Lxt.星翊2 小时前
Linux的时间同步服务器(附加详细实验案例)
运维·服务器·网络
Mapleay2 小时前
linux stm32mp157 GIC-V2 中断处理过程分析
linux·stm32
小Tomkk2 小时前
jenkins 远程执行 定时 执行shell
运维·servlet·jenkins
Hello.Reader2 小时前
NGINX 的 ngx_http_auth_jwt_module模块
运维·nginx·http