linux-28 文本管理(一)文本查看,cat,tac,more,less,head,tail

    之前提到过linux的几个重要哲学思想,使用纯文本文件保存软件的配置信息是其中之一,所以大多数情况下,我们对整个系统的操作,都是通过编辑它的配置文件来完成,那也就意味着,处理文本文件是我们作为系统管理员一个重要的基本要求,那因此,我们必须要掌握常见的文本处理工具来实现对于配置文件的管理或者对文本文件的管理。文件文本管理来讲,大多数只包含这样几个操作查看,编辑,这样两种操作,主要就是查看和编辑,因为删除那些之前已经讲过了,那我们先来看看怎么去查看文本的,我们linux提供了众多工具来查看文本,比方说,cat,比方说more,cat还可以反过来写,叫tac,完全反过来,然后有less,head,tail,这几个主要是用来也是用的最多的,用于实现文本查看类的命令。一定要记得他们是用来查看文本的,千万不要试图用它来打开一个二进制格式的文件,要记得这一点,先看第一个命令叫做cat,cat其实也是个简写concatenate,意思就是叫连接并显示的意思,那所以cat的主要作用,它能够实现,将通过参数给的几个文本文件的内容,一个一个的完全显示出来,所以这叫连接并显示,就这意思,连接并显示,当然,如果我们只给了一个文本文件,它就直接显示了,各位来看,举个简单例子,比如我们看一下/etc/issue,注意这些文件,经常给些路径,不是随便给的,因为这些路径,这些文件的内容,将来可能需要去操作它的,cat /etc/issue,有这样三行内容,再 cat /etc/fstab,有这样几行内容,如下图,

就是两个文件,我把这两个文件顺便都给出来,cat /etc/issue /etc/fstab,如下图,

会发现逐个显示完全倾倒到屏幕上来,所以叫连接并显示,就这么简单,那我们man一下cat过来看,man cat ,如下图,

叫做concatenate并显示出来的,显示到标准输出上来,开头用法也很简单,使用选项,可以接多个文件,常见选项,有这样几个,第一个-n,-n在显示的时候,它可以显示行号的,比如cat /etc/issue,显示没有第几行,但加上杠n选项,自动给你编号一二三四,cat -n /etc/issue,如下图,

要记得这个行号不是文件的内容,只是显示的号码而已,跟文件内容分行没有关系,要记得,这是-n显示行号,或者就是在显示的时候对每一行进行编号,这样可能更容易更容易理解,第二个选项-E, --show-ends
              display $ at end of each line,尾行结束的意思,所以-E就是叫show ends,显示每一行的行结束符的,再来看使用-E,cat -E /etc/issue,如下图,

每一行里面有个$符,就连空白行它也有个$,这个$是表示LF,LF的ASCII值是10,所以用$来代替表示LF,但因为Windows的行结束符是回车符CR加上换行符LF,也就是\r\n,所以你会发现把文本文件从linux复制到Windows里面,用记事本打开,统统显示为一行,为什么呢?因为它的每一行行结束后,只有LF没有换行,明白这意思吧,没有回车,所以对Windows而言,它理解这就是一行而已,那因此要明白,这一行一行为什么会显示成不同的行,后面就算还有空格,这些内容都没有显示,为什么会自动换一行来显示呢?它是一个控制符号来定义的,只不过这个控制符号在Windows中和linux中是不一样的。所以我们在Windows中编辑的文本拿到linux里边来,你会发现linux可能识别不了,或者识别的时候总是会报错,那是因为它多了个回车符,但是有些专业级的文本编辑器在Windows当中,它可以实现仅使用LF,比如像我用这个工具,notepad++,如下图,

为什么要各位用这个工具,就是这个道理,我们有很多在linux里边编辑的脚本,下载到本地直接使用的时候,你会发现如果使用文本文件打开,那绝对都是一行,使用记事本打开是一行,只有使用这种工具,打开的时候它才能识别这些不同的接束符,当然我们后面会讲到一些文本处理工具,我们也可以手动使用命令来处理这些符号,这是-E这个选项。

事实上,对于我们linux而言,或者对于文本文件而言,它有很多其他的控制符,你比如说-T,可以显示什么?可以显示制表符的,制表符是一种控制符,它会显示控制符号的。而使用-v则可以显示其他的非打印字符,比方说回车符,托字符,就是行首控制符等等,这些对我们都不是特别关键,知道使用-E就行了,而要想显示所有内容,无论是非显示符就是控制符或者其他的符号,使用-A,show all,所有都能显示出来。cat的命令对我们而言,大多数时候的用法都很简单,
我们常用的无非就是-E和-n,我们使用命令显示内容的时候,它的内容是从首部向尾部进行显示的,而cat反过来,这就是tac,tac /etc/issue,如下图,

有些时候,当我们特殊处理文本的时候,是有这种需要的,当然,有时候可能遇到过这样的困境,尝试使用cat命令的时候,一不小心,忘了加参数了,回车了,一回车退不出来了,你输入ls,输入cd,你看输入什么abcd,它都得再显示一遍,如下图,

就是cat的默认作用,它从标准输入读取内容,并显示到标准输出上来,这时候我们要想退出,就必须要终止当前命令,对于大多数命令而言,我们都有一个终止服务叫做ctrl+c键,这实际上就是我发起了一个控制命令,或者向我们进程发出了一个控制符号或者是发起了一个控制信号,它称为叫做interrupt,叫打断、中断的信号,或叫终止信号。注意,你不是输入ctrl+c,是按着ctrl键再摁c键,这要注意,按照ctrl键,再用c键,就结束了,如下图,

其实不但可以这样ctrl+c,很多时候我们可能都有这种需要,比如说我们输入一个命令,比如说,我输入命令输入到一半了,我突然间想起来,唉,我还有个别的命令没执行,于是开始按着删除键,按着删除键往前删删删到头,然后再继续重新写另外一个命令,注意,这种情况下是完全没有必要的,命令我写了一半了,或者甚至写完了,我不想执行,ctrl+c即可,如下图,

这时候ctrl+c就取消了,直接给你打一个新的命令提示符,继续输入别的命令即可,这就是我们的常用技巧。这是我们ctrl+c,这样一个控制组合键,同时,我们讲了cat和tac这个命令。

    有没有发现开了命令有个坏处?比如说如果这个文件非常长的话,会有什么结果呢?举个例子,cat -n /etc/rc.d/rc.sysinit,如下图,

翻屏而过,很多行,想看到前面内容怎么办?往前翻,这是可以翻的,如果在终端上呢?就看不到了,所以需要注意,其实这些闪过去的内容,在我的内存当中,它会有一个缓存区域给我们保存下来的,真正想往前看的话,是可以翻回去的,但是那个内存区域有限,所以你翻过去的是五十屏,内存只能给你缓存20屏,就算可以往前翻,也只能翻20屏而已,前面30都没了,怎么翻屏,很简单,按着shift+PageUp和shift+PageDown键就可以实现了,但是你能翻的是有限的,未必能翻到文件首部,那所以对于这种情况来讲就比较难受了,cat整个的把所有内容直接倾倒到屏幕上来,倾倒完了它就退出了,它也不管你接下来能不能看到,那因此有些时候我们可能需要能够分屏查看文件内容,我们一页一页去看,那接下来我们就讲两个分页查看命令,或者叫分屏查看命令,就是more和less的作用了,more它的用法跟cat几乎是类似的,但是它可以让我们去从前向后一页一页的手动去翻屏查看文件内容,比如,还以刚才这个文件为例,more /etc/rc.d/rc.sysinit,如下图,

这是第一屏,它说2%,我们一共才显示2%,此时,我们要想向后看,它的用法跟那个man差不多,敲空格键,向后翻一屏,敲b键,往前翻一屏,敲回车键,一行一行向后翻,敲k键不支持,因为它不支持,其实more默认情况下只支持向后翻,不支持向前翻的,你要翻到文件尾部就退出了,所以它是这意思,翻到文件尾部以后就退出,不再等待你可以往前翻了。所以一般来讲more向后翻,支持向后翻不支持向前翻的。当然,前提是要想向前翻,前提是你没有翻到文件尾部的前提下,直接翻翻到最后退出了,再向前翻怎么翻?没有了,明白了吗?如下图,

这就是冒命令,很简单,当然冒也有很多选项,man more,如下图,

有很多选项,当然这个大多数选项对我们而言用处都不大,它还有很多内部的控制命令,像space怎么翻屏的什么之类的,这对我们来讲,用的都不是特别多,所以你甭管它了,只需要知道more怎么用,简单的用法就可以,事实上,对我们而言,最长用的反而是另外一个东西叫做less,less的用法说白了就是man,因为man本身就是使用less命令打开文件并查看的,所以在man里边,我们所能够用的这些都支持,比方说space向后翻,k能够一行一行向前翻,还够使用斜线问号查找文本,等等等都支持,那我们没必要再讲一遍了,而且less翻到最后,它是不会退出的,只有我们敲q命令它才会退出,那因此,我们向前翻,始终支持。less /etc/rc.d/rc.sysinit,如下图,

就算我们翻到最后,它也不会退出,只是告诉你到了END,结束了再敲空格键,它也不会退出的,这时候敲b键继续往前翻,无论在什么地方,敲q键就可以退出。这就我们的less命令。

    在很多时候我们可能还有这样一种需求,我们只想查看一个文件的前几行或者后几行就够了,不是查看整个文件的全部内容,所以这有了另外两个命令的意义,一个叫head,从名字能看得出来什么意思,那tail就是尾巴尾部的意思,那因此head命令这是查看文件的前n行,tail命令是查看后n行,默认n是10,n默认是十,他们都支持一个选项,叫做-n,可以指定显示多少行?比如都来看,head /etc/inittab,如下图,

一共显示前十行,看到了吗?我要显示第一行,那怎么办?-n 1是不是即可?head -n 1 /etc/inittab,如下图,

就显示第一行,-n 2不是第二行是前两行,如下图,

很简单,当然事实上,我们head在linux中还支持这样的用法,在unix中可能不支持,在linux中还支持这样的用法,直接-2就行,前两行,不用写-n 2了,直接-2即可,如下图,

tail的用法是一样的,比如我们要想看后五行,就-5,tail -5 /etc/inittab 即可,如下图,

这是后五行,不加任何选项,默认是十,刚才说过,注意空白行也是一行,我们的tail命令还有一个特殊的选项,tail命令还有一个专用选项叫-f,f表示follow的意思,它查看一个文件之后并不退出,而是等待其他进程向里边儿继续输入新内容,并且立即运行显示的,什么意思呢?我先举例子,你先看到效果就明白了,比如,我现在找一个文件,我大家一定要记得,不要在etc下直接编辑文件,我复制一个文件,复制etc下的inittab到tmp下去,cp /etc/inittab /tmp/ ,然后我们使用tail -f看tmp下这个inittab,tail -f /tmp/inittab,然后看完以后,注意,发现它把这个整个文件翻过去,翻后十行,注意啊,默认值是后十行,显示完之后没退出,如下图,

发现了吗?要想退出怎么办?ctrl+c是吧?注意这里又没退出,那没退出有什么意义呢?你使用nano,再打开一个终端,使用 nano /tmp/initab,然后切换到最后一行,把它新增一行,保存一下,如下图,

你看这边显示出来没有?如下图,

看到了吗?所以这就是-f的意义,其他任何进程,只要向我们打开这个文件的尾部写了新内容,它都会立即予以显示的,这有用吗?对我们来讲不但有用而且相当有用,将来我们需要监控一个服务运行的时候,每一个服务在运行当中都会生成日志文件的,而一般情况下,比如说我的web服务器,一个用户登录进来,一个用户访问一下我的web,可能都会生成很多访问日志,明白这意思吗?使用tail就可以监控这个日志,随时看到有多少个用户正在访问哪个网页,随时可以查看,所以这个命令是非常有用的,要记得tail -f,查看文件尾部,然后不退出,而是随后等着显示新增进来的追加进来的后续内容,注意,我这里用的追加这个词儿,附加进来的东西。这就是我们的tail命令,所以其实每一个命令,选项都有很多,而对我们来讲,常用的并不是特别多,所以对于这些基本的大家一定要记住。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM面试相关

JVM组成 什么是程序计数器 详细介绍Java堆 什么是虚拟机栈 能不能解释一下方法区? 直接内存相关 类加载器 什么是类加载器,类加载器有哪些 什么是双亲委派模型 类加载过程 垃圾回收 对象什么时候可以被垃圾回收器回收 JVM垃圾回收算法有那些 JVM的分代…

【Unity3D】利用IJob、Burst优化处理切割物体

参考文章: 【Unity】切割网格 【Unity3D】ECS入门学习(一)导入及基础学习_unity ecs教程-CSDN博客 【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor_unity ijobparallelfor-CSDN博客 工程资源地址&…

Armv8/Armv9架构从入门到精通-介绍

CSDN学院课程连接:https://edu.csdn.net/course/detail/39573 1 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够…

Cesium小知识:pointPrimitive collection 详解

Cesium.PointPrimitiveCollection 是 Cesium 中用于高效管理和渲染大量点(points)的一个类。它允许你创建和管理大量的 PointPrimitive 实例,这些实例可以用来表示地理空间中的点数据,如传感器位置、车辆位置、兴趣点等。与直接使用 Cesium.Entity 相比,PointPrimitiveCol…

Threejs实现 区块链网络效应

大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…

GitCode G-Star 光引计划终审前十名获奖项目公示

在技术的浩瀚星空中,GitCode 平台上的 G-Star 项目熠熠生辉。如今,“光引计划” 已圆满落幕,众多 G-Star 项目作者,一同分享项目在 GitCode 平台托管的宝贵体验,并深入挖掘平台的多样玩法。 众多投稿纷至沓来&#xf…

VRRP技术

堆叠 堆叠指将支持堆叠特性的交换机通过堆叠线缆连接到一起,解决交换机问题 (物理多台交换机变成逻辑上的一台交换机 去进行一个数据转发)聚合解决链路问题在不同的厂商中堆叠的技术: 思科:stackwise 思科智能堆叠VSS Virt…

primitive 的 Appearance编写着色器材质

import { nextTick, onMounted, ref } from vue import * as Cesium from cesium import gsap from gsaponMounted(() > { ... })// 1、创建矩形几何体,Cesium.RectangleGeometry:几何体,Rectangle:矩形 let rectGeometry new…

31_搭建Redis分片集群

Redis的主从复制模式和哨兵模式可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题、高并发写的问题。由于数据量过大,单个master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Red…

快速上手 INFINI Console 的 TopN 指标功能

背景 在分布式搜索引擎系统(如 Easysearch、Elasticsearch 和 OpenSearch)中,性能监控至关重要。为了确保系统的高效运行和资源的合理分配,我们通常需要关注一段时间内关键资源的使用情况,特别是索引、节点和分片的内…

风水算命系统架构与功能分析

系统架构 服务端:Java(最低JDK1.8,支持JDK11以及JDK17)数据库:MySQL数据库(标配5.7版本,支持MySQL8)ORM框架:Mybatis(集成通用tk-mapper,支持myb…

探索AGI:智能助手与自我赋能的新时代

目录 1 AGI1.1 DeepMind Levels(2023年11月)1.2 OpenAI Levels(2024年7月)1.3 对比与总结1.4 AGI可能诞生哪里 2 基于AI的智能自动化助手2.1 通用型大模型2.2 专业的Agent和模型工具开发框架2.3 编程与代码生成助手2.4 视频和多模态生成2.5 商…

工具推荐:PDFgear——免费且强大的PDF编辑工具 v2.1.12

PDFgear——免费且强大的PDF编辑工具 v2.1.12 软件简介 PDFgear 是一款 完全免费的 PDF 软件,支持 阅读、编辑、转换、合并 以及 跨设备签署 PDF 文件,无需注册即可使用。它提供了丰富的 PDF 处理功能,极大提升了 PDF 文件管理的便捷性和效…

【机器学习】L1正则化与L2正则化

L1,L2正则化解决过拟合问题 目录 过拟合的原因 正则化的目标 L1,L2正则化 L1正则化 L2正则化 从概率的角度来看 L1 正则化与拉普拉斯分布 L2 正则化与高斯分布 过拟合的原因 过拟合发生时,模型学习到了训练数据中的噪声或细节&am…

【PyQt】如何在mainwindow中添加菜单栏

[toc]如何在mainwindow中添加菜单栏 如何在mainwindow中添加菜单栏 主要有两种方法: 1.直接创建mainwindow进行添加 2.使用ui文件加载添加 第二种方法更为常见,可以应用到实际 1.直接创建mainwindow进行添加 import sysfrom PyQt5.QtWidgets import …

1.组件的三大组成部分注意点(结构/样式/逻辑)scoped解决样式冲突/data是一个函数2.组件通信组件通信语法父传子子传父

学习目标 1.组件的三大组成部分注意点(结构/样式/逻辑) scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法 父传子 子传父 非父子通信(扩展) 3.综合案例:小黑记事本(组件版) …

Sqoop1.4.7安装

环境说明 准备三台服务器,分别为:bigdata141(hadoop 主节点)、bigdata142、bigdata143确保 hadoop 集群先启动好,hadoop 版本为 3.2.0如果只安装不使用的话,以上可以暂时不用管另准备一台服务器&#xff0…

Oracle重启后业务连接大量library cache lock

一、现象 数据库和前段应用重启后,出现大量library cache lock等待事件。 二、分析解决 本次异常原因是:原因定位3: 库缓存对象无效 Library cache object Invalidations 三、各类情况具体分析如下 原因定位1:由于文字导致的非…

Demo15:DS1302涓流充电时钟芯片

一、实验现象 通过DS1302 涓流充电时钟芯片,在数码管上显示电子时钟时分秒,格式为“XX-XX-XX” 二、核心知识点 - DS1302时序 三、项目结构 main.c /************************************************************************************** 实验名称…

HTB:Bastion[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用enum4linux…