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

第四章 命令行管理文件 2

1. 创建普通文件

1.1 touch

  • 用法一:

文件不存在时创建新文件(可以使用花括号)

touch a.txt touch b{1..4..2}.txt
  • 用法二:

文件存在时,文件的三个时间会修改

时间:

访问时间(atime):文件最后被访问的时间

修改时间(mtime):文件内容修改时间

更改时间(ctime):文件元数据(属性)修改时间(文件修改时文件大小也会修改,mtime修改时ctime也会修改)

1.2 dd

  • 创建指定大小和数量的大文件
  • 格式
dd if=来源 of=文件名 count=数据块数量 bs=块大小

if=/dev/zero:空数据设备文件,填充无数个数据 0(创建指定容量的空文件)

of=文件名:新文件路径

count=:数据块数量

bs=:块大小(文件的总容量 = 数据块数量 × 块大小)

例如:

2. 查看普通文件

2.1 直接查看普通文件

2.1.1 cat

  • 查看文件内容(适合内容较少的文件)
  • 文件内容直接显示在终端屏幕上
  • 格式
cat [选项] 文件
  • 选项
-n显示行号(空行也显示)
-b空行不显示行号
不加选项直接显示内容

例如:

2.1.2 tac

  • 倒叙查看文件内容
  • 格式
tac 文件

2.1.3 more

  • 翻页查看文件内容(适合内容较多的)
  • 回车往下翻一行,空格(或者上下键)翻页,q 退出(或者看完文件自动退出)
  • 退出后文件会保留在屏幕上
  • 访问到底会自动退出
  • 不能进行搜索
  • 格式
more -选项 文件
  • 选项
选项功能
-s压缩多个空行为一个空行

2.1.4 less

  • 与more相同
  • 但退出后内容不会保留在屏幕上
  • 访问到底后不会自动退出
  • 可以进行搜索
  • 格式
less -选项 文件
  • 选项
选项功能
-s压缩多个空行为一个空行

2.1.5 head

  • 显示前n行内容(默认是显示前10行)
  • 格式
head -选项 文件
  • 选项
选项功能
-数字显示行数

2.1.6 tail

  • 显示后n行内容(默认是后10行)
  • 格式
tail -选项 文件
  • 选项
选项功能
-数字显示行数
-f动态查看文件内容

tail -f 动态查看这个日志文件,su 切换用户,开两个终端分屏查看,日志文件更新

2.2 进一步处理文件内容

2.2.1 |

  • 管道符,将左边的命令结果作为右边命令的输入
  • 格式
命令A | 命令B | 命令C

注意:使用管道会加大耗时,在极致追求效率 / 高性能的场景,要「尽量少用管道 | 」,且管道越多、耗 时越明显。

2.2.2 grep

  • 过滤文件内容(将文件中查找含有指定的字符)
  • 格式
grep -选项 查找条件 文件
  • 选项
选项功能
-c显示查找到的行数(统计行)
-i忽略大小
-n显示行号
-v取反
-r递归搜索文件内容(当前目录递归)
-w按完整单词匹配
-A 数字匹配行及下n行
-B 数字匹配行及上n行
-C 数字匹配行及上下n行

#将包含a的行标记出来

grep a anaconda-ks.cfg

#将包含a的行数量统计出来

[root@redhat ~]#grep -c a anaconda-ks.cfg

#将包含A/a的行数显示出来

[root@redhat ~]#grep -ic a anaconda-ks.cfg

#将包含a的行统计出来标号

[root@redhat ~]# grep -n a anaconda-ks.cfg

#将不含a的行显示出来

[root@redhat ~]# grep -v a anaconda-ks.cfg

#将按完整单词过滤

[root@redhat ~]# grep -w root /etc/passwd

#显示包含root行以及下两行

[root@redhat ~]# grep -A2 root /etc/passwd

#显示包含root行以及上两行

[root@redhat ~]# grep -B2 root /etc/passwd

#显示包含root行以及上下两行

[root@redhat ~]# grep -C2 root /etc/passwd

  • 加上符号过滤
命令说明
grep ^root 文件匹配以root单词开头的行
grep ^[root] 文件匹配以r o t 开头的行
grep ^[ ^ab] 文件匹配不以 a 或 b 开头的行
grep ^[0-9] 文件匹配以数字开头的行
grep ^[a-zA-Z] 文件匹配以字母开头的行
grep q$ 文件名匹配以 q 结尾的行
grep ^$匹配空白行
grep -r h .递归匹配当前目录下的子目录和子文件中包含 h 的行(包括隐藏文件)
grep -r h ./*递归匹配当前目录下的子目录和子文件中包含 h 的行(不包括隐藏文 件)
grep -d skip h ./*只查找当前目录下的普通文件,不递归查找子目录(不包括隐藏文件)

#匹配以a开头的行

[root@redhat ~]# grep ^a /etc/passwd

#匹配以h结尾的行

[root@redhat ~]# grep h$ /etc/passwd

#匹配以root开头的行并加上行号

[root@redhat ~]# grep -n ^root /etc/passwd

[root@redhat ~]# grep -n "^root" /etc/passwd

#匹配以r o t开头的行

[root@redhat ~]# grep ^[root] /etc/passwd

#匹配空行并加上行号

[root@redhat ~]# grep -n ^$ a1

2.2.3 cut

  • 按列提取文本内容
  • 格式
cut -d “分隔符” -f 列数字 文件名

#提取用户名

[root@redhat ~]# cut -d : -f 1 /etc/passwd

#提取内核版本号

[root@redhat ~]# uname -a | cut -d " " -f3

2.2.4 tr

  • 替换、删除文本,输出到屏幕上
  • 缩减多个字符
  • 源文件不会更改
  • 格式
tr -选项 内容 新内容
  • 选项
选项功能
-c取反
-d

删除

-s缩减连续重复字符为单个字符(常将空格缩减)

#替换文件字符

[root@redhat ~]# cat /etc/passwd | tr a-z A-Z

#删除文件的字符

[root@redhat ~]# cat /etc/passwd | tr -d a-z

#提取IP地址

[root@redhat ~]# ip a | grep ens160$ | tr -s " " | cut -d / -f 1 | cut -d " " -f 3

#提取MAC地址

[root@redhat ~]# ip a | grep link/ether | tr -s " " | cut -d " " -f 3

2.2.5 sort

  • 排列显示
  • 格式
sort -选项 文件
  • 选项
选项功能
-f忽略大小写(默认a>A)
-n数值排序
-r逆序
-u排序后,去除重复行
-t指定间隔符
-k按照第几列进行排序

#将用户名排序

[root@redhat ~]# cut -d ":" -f 1 /etc/passwd | sort

#排序不区分大小写

[root@redhat ~]# sort -f file

#去除重复行

[root@redhat ~]# sort -u file

#数值排序

[root@redhat ~]# cut -d ":" -f 3 /etc/passwd | sort -n

#数值从大到小

[root@redhat ~]# cut -d ":" -f 3 /etc/passwd | sort -nr

#按照用户数值排序

[root@redhat ~]# sort -t ":" -k 3 -n /etc/passwd

2.2.6 uniq

  • 去重显示
  • 去除文本中的“连续”重复行
  • 格式
uniq -选项 文件
  • 选项
选项功能
-c统计重复行出现的次数
不加去除重复行

#将重复内容去重

[root@redhat ~]# uniq file1

#将重复行的行数统计出来

[root@redhat ~]# uniq -c file1

练习:

#列出所有账号的账号名(/etc/passwd)

[root@redhat ~]# cut -d ":" -f 1 /etc/passwd

#将 /etc/passwd 中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容

[root@redhat ~]# sort -t ":" -k 3 -nr /etc/passwd

#列出 /etc/passwd 中的的 15 - 20 行内容

[root@redhat ~]# head -20 /etc/passwd | tail -6

#切割出你的 IP 地址和 mac 地址

[root@redhat ~]# ip a | grep ens160$ | cut -d "/" -f 1 | tr -s " " | cut -d " " -f 3

#切割出 /etc/passwd 最后一个字段并进行重复内容的重复次数统计

[root@redhat ~]# cut -d ":" -f 7 /etc/passwd | sort | uniq -c

http://www.jsqmd.com/news/1199405/

相关文章:

  • C++从零实现KNN分类器:核心原理、代码实现与性能优化
  • 学习记录10(类的封装)
  • Claude Code本地配置实战:四层架构与工程化接入指南
  • Edge开机自动启动怎么彻底关闭?从浏览器设置到系统启动项全排查
  • 劳力士宁波区售后网络核验|权威公告正规维修服务网点(2026年7月最新) - 劳力士中国服务中心
  • pacemaker-mgmt终极指南:从入门到精通的集群管理控制台全解析
  • optiland绘制离焦点列图
  • ByteTransformer:高性能Transformer推理库的优化实践
  • 多智能体协作系统:企业级AI应用的核心架构范式
  • 2026 重庆标杆高端腕表回收新开门店探店,全场景服务深度实测 - ys韩
  • 单片机硬件抗干扰设计实战指南
  • MCP4IFC: IFC-Based Building Design Using Large Language Models
  • GitHub中文化插件:让中文开发者告别英语困扰的终极解决方案
  • YOLOE-26技术解析:开放词汇分割的实时革命
  • Jetson Nano——Ubuntu环境下SD卡系统克隆与批量部署实战
  • RTKLIB 源码学习笔记四:单点定位之从 main 函数出发深入理解 rnx2rtkp
  • 2026北京爱马仕回收行业核验报告:5家正规商户专业度评级 - 生活时报
  • kylin-user-guide高级配置教程:终端个性化设置与快捷键详解
  • SAP ABAP 从一个程序调用另外一个程序的perform
  • Linux内核Lockup机制解析与实战排查
  • Lua调用C++函数实战:从虚拟栈原理到高性能插件开发
  • UE4 Pak文件分析利器:UnrealPakViewer图形化工具实战指南
  • GraphRAG:从向量检索到知识图谱增强的进化之路
  • 微软Modern OS核心技术解析与架构革新
  • AI系统中Multiple Tools架构设计与工程实践
  • 家用艾灸养生器具怎么提高转化?小程序商城运营思路参考,含零代码SAAS、源码定制交付
  • Linus Torvalds与AI编程:技术大牛的态度转变与实践
  • 深度学习迁移学习与微调技术详解
  • 2026广州黄金回收红黑榜,拒绝无资质流动回收 - 禹竞奢收行
  • 2026万博科技职业学院报考三件套:招生咨询电话、线上填报步骤、官方报考注意事项 - 最新资讯