首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >linux常用命令(7)——文件处理

linux常用命令(7)——文件处理

作者头像
christine-rr
发布2026-01-13 19:28:47
发布2026-01-13 19:28:47
3070
举报
文章被收录于专栏:linux命令linux命令

博客主页:christine-rr-CSDN博客 ​​​​​ ​​ hi,大家好,我是christine-rr ! 今天来分享一下linux常用命令——文件处理

七、文件处理

1.vi 文本编辑器

vi 是 Linux 系统默认自带的文本编辑器,无需额外安装,适用于所有场景(包括无图形界面的服务器)。它功能简洁但操作依赖快捷键,核心是 “模式切换”,默认启动进入 命令模式

核心格式

vi [选项] 文件名

  • 若文件不存在:执行命令后会创建该文件(需保存才会写入磁盘);
  • 若文件已存在:直接打开文件并进入命令模式。
关键操作(依赖模式切换)

模式

进入方式

核心操作

退出方式

命令模式

启动 vi 后默认进入

光标移动、复制、删除、模式切换

输入 i/a/o 进入编辑模式;输入 : 进入末行模式

编辑模式

命令模式下输入 i(光标前插入)、a(光标后插入)、o(新行插入)

直接输入文本内容

按 Esc 键返回命令模式

末行模式

命令模式下输入 :

保存、退出、查找、替换

执行命令后自动返回命令模式;按 Esc 可取消输入

常用示例

新建并编辑 test.txt 文件:

代码语言:javascript
复制
vi test.txt  # 启动vi,进入命令模式
# 按 i 进入编辑模式,输入内容(如“Hello Linux”)
# 按 Esc 返回命令模式,输入 :wq 保存并退出(w=write保存,q=quit退出)

强制退出不保存: 命令模式下输入 :q!(适用于编辑错误不想保留的场景)。

2. vim 高级文件编辑器

vimvi 的增强版,兼容 vi 所有功能,新增了语法高亮、代码补全、行号显示等实用特性,是开发和运维的首选编辑器(部分系统需手动安装:sudo apt install vimsudo yum install vim)。

三种核心模式(与 vi 一致,但功能更丰富)

以上图片来自菜鸟教程

  • 若想要编辑文本,只需要启动 vim,进入了命令模式,页面底部会显示文件名;
  • 按下 i ao等切换到输入模式,此时页面底部显示--INSERT--
  • 输入模式按下ESC 按钮回到命令模式
  • 命令模式按下:wq 储存后离开 vi/vim

注意:不允许输入模式和命令模式直接进行切换

(1)命令模式(启动默认进入)

命令模式只有一些最基本的命令,因此仍要依靠:进入底线命令行模式输入更多命令。

光标移动(高效快捷键,比方向键更灵活):

  • 行内移动:h(左)、j(下)、k(上)、l(右);
  • 行首 / 行尾:^(行首第一个非空字符)、$(行尾);
  • 翻屏:Ctrl+B(向上翻一屏)、Ctrl+F(向下翻一屏)、Ctrl+U(向上翻半屏)、Ctrl+D(向下翻半屏);
  • 跳转指定行:数字+G(如 10G 跳转到第 10 行)、G(跳转到最后一行)、gg(跳转到第一行)。

复制操作

  • 复制当前行:yy
  • 复制指定行数:数字+yy(如 3yy 复制当前行及下方 2 行,共 3 行);
  • 粘贴:p(小写)(粘贴到光标下方)、P(大写)(粘贴到光标上方)。

剪切 / 删除操作(剪切 = 删除 + 可粘贴,删除 = 不可恢复删除):

  • 剪切当前行:dd(删除后可通过 p 粘贴);
  • 剪切指定行数:数字+dd(如 2dd 剪切当前行及下方 1 行);
  • 删除单个字符:x(删除光标所在字符)、X(删除光标前一个字符);
  • 删除行内内容:dw(删除光标后一个单词)、d$(删除光标到行尾内容)。

撤销 / 恢复

  • 撤销上一步操作:u(undo);
  • 恢复撤销操作:Ctrl+R(redo)。

模式切换

  • 进入编辑模式:i(光标前插入)、a(光标后插入)、o(光标下新建行插入)、I(行首插入)、A(行尾插入)、O(光标上新建行插入);
  • 进入末行模式:输入 :
(2)编辑/输入模式

功能:纯文本输入,支持方向键移动光标,新增 “语法高亮”(根据文件类型自动着色,如代码文件会区分关键字、注释); 退出:按 Esc 键返回命令模式。

在命令模式下按下 i 就进入了输入模式,使用Esc键可以返回到普通模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式
(3)末行模式(命令模式输入 : 进入)

保存与退出

  • :w:保存当前文件(不退出);
  • :w 新文件名:另存为新文件;
  • :q:退出(需先保存,否则提示);
  • :wq / :x:保存并退出;
  • :q!:强制退出(不保存,忽略修改)。

查找与替换

  • 查找关键字:: /关键字(按 n 下一个匹配,N 上一个匹配,如 :/Linux 查找 “Linux”);
  • 替换(当前行)::s/旧内容/新内容(如 :s/Hello/Hi 替换当前行第一个 “Hello” 为 “Hi”);
  • 替换(全行)::s/旧内容/新内容/gg=global,替换当前行所有匹配);
  • 替换(全文):: %s/旧内容/新内容/g% 表示所有行,如 :%s/Linux/Unix/g 替换全文 “Linux” 为 “Unix”)。

其他实用命令

  • 显示行号::set nu(临时生效,退出后失效;永久生效需编辑 ~/.vimrc 文件添加 set nu);
  • 关闭行号::set nonu
4 种常用打开文件方式
  1. 直接打开文件
代码语言:javascript
复制
vim /etc/profile	#打开系统环境变量配置文件
  1. 打开文件并跳转到指定行:
代码语言:javascript
复制
 vim +10 /etc/passwd #打开/etc/passwd并跳转到第 10 行,适合修改已知行的配置)
  1. 打开文件并定位到关键字
代码语言:javascript
复制
vim +/root /etc/passwd  #打开文件并直接定位到第一个“root” 所在行,适合快速查找配置);
  1. 同时打开多个文件
代码语言:javascript
复制
vim file1.txt file2.txt file3.txt	#按:n 切换到下一个文件,`:N` 切换到上一个文件
3. info :查看详细帮助文档

info 是 Linux 系统的 “高级帮助工具”,提供比 man 更详细的文档(按章节组织,支持跳转),常用于查看命令、函数或配置的完整说明(部分命令的 info 文档包含示例和使用场景)。

格式

info [命令/主题]

常用操作(进入 info 界面后)
  • 导航:按 Enter 进入链接(蓝色高亮文本),u 返回上一级,n 下一个节点,p 上一个节点;
  • 搜索:按 s 输入关键字搜索,Ctrl+G 退出搜索;
  • 退出:按 q 键退出 info 界面。

示例:

  1. 查看 vim 的详细帮助文档:
代码语言:javascript
复制
info vim  # 进入后可按章节查看vim的模式、命令、配置等详细说明

info ls	#这会显示 ls 命令的详细文档,包括:命令语法、所有选项说明、使用示例、相关命令链接
  1. 查看 bash 命令的帮助:
代码语言:javascript
复制
info bash  # 适合深入学习bash语法(如循环、条件判断)
  1. 在文档中搜索特定内容
    • 打开 info 文档
    • s
    • 输入搜索词如 “permission”
    • 按 Enter 开始搜索
    • 使用 , 查找下一个匹配项
4. echo:输出文本 / 变量

echo 是最常用的 “文本输出命令”,可直接打印字符串,或输出环境变量、脚本变量的值,常用于脚本调试、批量输出内容。

核心格式

echo [选项] [内容/变量]

常用选项

选项

功能

-n

不换行输出(默认输出后会自动换行)

-e

支持转义字符(如 \n 换行、\t 制表符

-E

禁用转义字符解释(默认)

转义字符(需要 -e 选项):

  • \n : 换行
  • \t : 制表符
  • \r : 回车
  • \b : 退格
  • \\: 反斜杠
  • \" : 双引号
  • \a : 响铃

示例:

  1. 输出普通文本:
代码语言:javascript
复制
echo "Hello Linux"  # 输出:Hello Linux(自动换行)
  1. 不换行输出:
代码语言:javascript
复制
echo -n "Enter your name: "  # 输出后不换行,常用于提示用户输入(如脚本中配合 read 命令)
  1. 输出变量(如环境变量 PATH、自定义变量 name):
代码语言:javascript
复制
echo $PATH  # 输出系统环境变量 PATH(存储可执行命令路径)

name="Alice"
echo "My name is $name"  # 输出:My name is Alice(变量需加 $ 引用)
  1. 支持转义字符(需 -e 选项):
代码语言:javascript
复制
echo -e "Name:\tAlice\nAge:\t20"  # 输出:
# Name:    Alice
# Age:     20
  1. -e 选项:启用转义字符
代码语言:javascript
复制
echo -e "First\nSecond"  #启用对反斜杠转义字符的解释

执行结果:

代码语言:javascript
复制
First
Second
5. nano:简易文本编辑器

nano 是一款 “傻瓜式” 文本编辑器,操作直观(无需记忆复杂模式),适合新手或临时编辑文件,默认显示操作快捷键(底部有提示),部分轻量系统(如 Alpine Linux)默认预装。

核心格式

nano [文件名]

常用操作(底部快捷键提示)
  • 保存:Ctrl+O(按 Enter 确认文件名);
  • 退出:Ctrl+X(若有未保存修改,会提示是否保存);
  • 查找:Ctrl+W(输入关键字后按 Enter 查找,Alt+W 下一个匹配);
  • 复制 / 粘贴:Ctrl+K 剪切当前行(可连续剪切多行),Ctrl+U 粘贴剪切内容。

示例: 编辑 test.sh 脚本文件:

代码语言:javascript
复制
nano test.sh  # 直接进入编辑界面,输入内容(如 #!/bin/bash\n echo "Hello")
# 按 Ctrl+O 保存(Enter 确认),按 Ctrl+X 退出
6. sed :流式文本处理命令

sed(Stream Editor)是 “非交互式文本编辑器”,通过脚本化命令批量处理文本(如替换、删除、插入),无需打开文件,直接读取输入流(文件或管道)并输出处理结果,常用于脚本自动化处理。 格式

sed [选项] ‘脚本命令’ 文件名

常用选项与脚本命令

选项

功能

脚本命令

功能

-i

直接修改原文件(默认仅输出到终端,不修改原文件)

s/旧/新

替换(默认每行第一个匹配)

-n

仅显示匹配的行(默认显示所有行)

s/旧/新/g

全局替换(每行所有匹配)

d

删除匹配的行

p

打印匹配的行(常与 -n 配合)

** 示例**:

  1. 替换文本(输出到终端,不修改原文件):
代码语言:javascript
复制
sed 's/Linux/Unix/' test.txt  # 将 test.txt 中每行第一个“Linux”替换为“Unix”,输出结果
  1. 全局替换并修改原文件(-i 选项,谨慎使用):
代码语言:javascript
复制
sed -i 's/old/new/g' config.ini  # 将 config.ini 中所有“old”替换为“new”,直接修改原文件
#备份原文件(推荐,避免误操作)
sed -i.bak 's/old/new/g' config.ini(生成 config.ini.bak 备份)
  1. 删除指定行:
代码语言:javascript
复制
sed '3d' test.txt  # 删除 test.txt 第3行,输出结果
sed '/^#/d' test.txt  # 删除所有以“#”开头的行(注释行),输出结果
  1. 打印匹配行:
代码语言:javascript
复制
sed -n '/root/p' /etc/passwd  # 仅打印 /etc/passwd 中包含“root”的行(-n 抑制默认输出,p 打印匹配行)
7. awk:文本分析与处理工具

awk 是功能强大的 “文本处理语言”,擅长按行分割文本、提取字段、统计分析(如计数、求和),核心是 “按模式处理行”,常用于日志分析、数据提取等场景。

核心原理
  • 按行读取文件,默认以 “空格 / 制表符” 为分隔符,将每行拆分为多个字段(1 表示第 1 个字段,2 第 2 个,
  • 支持条件判断、循环、函数,语法类似 C 语言。

核心格式:

代码语言:javascript
复制
awk '模式 {动作}' 文件名

示例

  1. 提取字段(如 /etc/passwd 文件,以 : 为分隔符):
代码语言:javascript
复制
awk '{print}' file					#打印整行
awk '{print $1, $2}' file		#打印特定列
# /etc/passwd 格式:用户名:密码占位符:UID:GID:注释:家目录:Shell
awk -F ':' '{print $1, $6}' /etc/passwd  # -F 指定分隔符为“:”,打印第1字段(用户名)和第6字段(家目录)
  1. 条件过滤(提取 UID≥1000 的普通用户):
代码语言:javascript
复制
awk -F ':' '$3 >= 1000 {print $1, $3}' /etc/passwd  # $3 是 UID,条件满足则打印用户名和 UID
  1. 统计分析(统计日志中某 IP 的访问次数):
代码语言:javascript
复制
#假设 access.log 中有“192.168.1.100 - [时间] GET /index.html”格式的日志
awk '{print $1}' access.log | sort | uniq -c | grep '192.168.1.100'

#步骤:1. 提取第1字段(IP)→ 2. 排序 → 3. 去重并计数 → 4. 过滤目标IP
  1. 内置变量使用(NR 表示行号,NF 表示当前行字段数):
代码语言:javascript
复制
awk -F',' '{print $1, $2}' file	#使用分隔符指定列

awk '{print NR, $0}' file	#打印行数

awk '{print "行号:" NR, "字段数:" NF, "整行:" $0}' test.txt  # 打印每行的行号、字段数、整行内容
8. sort文件行排序

sort 用于对文件内容按行排序,支持按字母、数字、字段排序,可配合 uniq 去重,常用于日志分析、数据整理。

常用选项

选项

功能

-n

按数字排序(默认按字母排序,如 “10” 会排在 “2” 前面)

-r

反向排序(从大到小,默认从小到大)

-k 字段数

按指定字段排序(需配合 -t 指定分隔符)

-t 分隔符

指定字段分隔符(如 -t ':' 以 : 为分隔符)

-u

去重(等同于 sortuniq,排序后删除重复行)

示例

  1. 数字排序(如排序成绩文件 score.txt):
代码语言:javascript
复制
# cat score.txt 内容:
# 小明 85
# 小红 92
# 小刚 78

sort -n -k 2 score.txt  # -k 2 按第2字段(成绩)排序,-n 按数字排序,结果从小到大

# 小刚 78
# 小明 85
# 小红 92
  1. 按字段反向排序(如 /etc/passwd 按 UID 从大到小排序):
代码语言:javascript
复制
sort -t ':' -k 3 -n -r /etc/passwd  # -t ':' 指定分隔符,-k 3 按 UID 排序,-r 反向
  1. 排序并去重(统计 words.txt 中不重复的单词):
代码语言:javascript
复制
sort -u words.txt  # 排序后删除重复行,等同于 sort words.txt | uniq
9. diff 比较文件差异

diff 用于对比两个文件的内容差异,输出 “修改、删除、新增” 的行,支持文本文件和配置文件对比,常用于版本控制、配置变更检查。

核心格式

diff [选项] 文件1 文件2

常用选项

选项

功能

-u

以 “统一格式” 输出(显示修改前后的上下文,更易读,常配合 patch 打补丁)

-b

忽略空格差异(如多空格、少空格视为相同)

-B

忽略空行差异

-i

忽略大小写差异

示例

  1. 对比两个配置文件的差异:
代码语言:javascript
复制
diff /etc/profile /etc/profile.bak  # 输出两个文件的行差异,默认格式(如“3c3”表示第3行修改)
  1. 以统一格式对比(更易读):
代码语言:javascript
复制
diff -u /etc/profile /etc/profile.bak  # 输出包含上下文的差异,开头“---”是原文件,“+++”是目标文件
  1. 忽略空格和空行差异:
代码语言:javascript
复制
diff -bB test1.txt test2.txt  # 忽略空格和空行的不同,仅对比有效内容
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 七、文件处理
    • 1.vi 文本编辑器
      • 关键操作(依赖模式切换)
    • 2. vim 高级文件编辑器
      • 三种核心模式(与 vi 一致,但功能更丰富)
      • (1)命令模式(启动默认进入)
      • (2)编辑/输入模式
      • (3)末行模式(命令模式输入 : 进入)
      • 4 种常用打开文件方式
    • 3. info :查看详细帮助文档
      • 常用操作(进入 info 界面后)
    • 4. echo:输出文本 / 变量
      • 常用选项
    • 5. nano:简易文本编辑器
      • 常用操作(底部快捷键提示)
    • 6. sed :流式文本处理命令
      • 常用选项与脚本命令
    • 7. awk:文本分析与处理工具
      • 核心原理
    • 8. sort文件行排序
      • 常用选项
    • 9. diff 比较文件差异
      • 常用选项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档