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命令,所以其实每一个命令,选项都有很多,而对我们来讲,常用的并不是特别多,所以对于这些基本的大家一定要记住。

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

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

相关文章

基于Piquasso的光量子计算机的模拟与编程

一、引言 在科技飞速发展的当下,量子计算作为前沿领域,正以前所未有的态势蓬勃崛起。它凭借独特的量子力学原理,为解决诸多经典计算难以攻克的复杂问题提供了全新路径。从优化物流配送网络,以实现资源高效调配,到药物分子结构的精准模拟,加速新药研发进程;从金融风险的…

该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。

问题已解决 问题回顾: 解决方法一(大部分都是这个原因): 首先先检查是否打开了多个VMware应用程序,如果打开了关掉所有vm重开即可,如果不确定后台是否多开可以去任务管理器查看关闭 解决方法二(…

计算机网络 —— 网络编程(TCP)

计算机网络 —— 网络编程(TCP) TCP和UDP的区别TCP (Transmission Control Protocol)UDP (User Datagram Protocol) 前期准备listen (服务端)函数原型返回值使用示例注意事项 accpect (服务端)函数原型返回…

Elasticsearch学习(2) :DSL和RestClient实现搜索文档

之前的学习中——Elasticsearch学习(1) ,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以这篇我们研究下elasticsearch的数据搜索功能。我们分别使用DSL(Domain Specif…

备战蓝桥杯:树的存储与遍历(dfs和bfs)

树的概念 树的逻辑结构是树形结构,和我们之前的线性结构又不太一样了,是一种一对多的关系 树的结点分为根节点,叶子结点(没有分支的结点) 以及分支结点 从上往下看,每个结点都有0个或多个后继 从下往上…

欧拉公式和傅里叶变换

注:英文引文机翻,未校。 如有内容异常,请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos ⁡ x i sin ⁡ x e^{ix} \cos{x} i \sin{x} eixcosxisinx. When…

《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题

《零基础Go语言算法实战》 【题目 2-22】Go 调度器优先调度问题 下面代码的输出是什么?请说明原因。 package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) wg : sync.WaitGroup{} wg.Add(10)…

解读若依微服务架构图:架构总览、核心模块解析、消息与任务处理、数据存储与缓存、监控与日志

文章目录 1. 引言2. 架构总览3. 核心模块解析3.1 服务注册与配置中心Nacos:微服务的中枢 3.2 网关层ruoyi-gateway:服务的统一入口 3.3 核心业务服务3.4 认证服务ruoyi-auth:认证与授权的守护者 3.5 异构服务整合Sidecar:连接异构…

Rank-Analysis——LOL 排位战绩查询分析器

项目地址: https://github.com/wnzzer/lol-rank-record-analysis 项目采用 Golang electron lol 战绩查询,一键查询你的混子队友! 很早以前就想做这个,最近学了学前端的内容,就拿这个练练手,后端也是新学…

el-table自定义按钮控制扩展expand

需求:自定义按钮实现表格扩展内容的展开和收起,实现如下: 将type“expand”的表格列的宽度设置为width"1",让该操作列不展示出来,然后通过ref动态调用组件的内部方法toggleRowExpansion(row, row.expanded)控…

FFmpeg入门

在音视频处理领域,有一款神器级的工具横扫开发者圈,那就是 FFmpeg。它被誉为“音视频处理的瑞士军刀”,凭借强大的功能和开源的特性成为众多开发者和媒体从业者的首选。今天,我们就来聊聊 FFmpeg 的入门使用,带你轻松开…

计算机网络 网络层 2

IP协议: Ip数据报的格式: 首部:分为固定部分 和 可变部分 固定部分是20B 版本:表明了是IPV4还是IPV6 首部长度:单位是 4B,表示的范围是(5~15)*4B 填充:全0,,让首部变…

【Java计算机毕业设计】基于SSM旅游景区网络购票系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

后端技术选型 sa-token校验学习 中 文档学习

目录 依赖 配置文件 登录验证 登录与注销 Cookie 自动注入 前后端分离(无 Cookie 模式) 何为 Cookie 何为无 Cookie 模式? 解决方案 1、后端将 token 返回到前端 2、前端将 token 提交到后端 其它解决方案? 自定义 Token 前缀 [ 记住我 ] 模式 前后端…

量子计算:从薛定谔的猫到你的生活

文章背景 说到量子计算,不少人觉得它神秘又遥不可及。其实,它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”,这些听上去像科幻小说的概念,却为计算世界开辟了一片全新的天地。如果经典计算是“…

TPS61022 PFM的机制以及TPS61xxx转换器的PFM与PWM之间的负载阈值

引言 TI 的大多数 TPS61xxx 低压升压转换器都配备了 PSM(省电模式),以帮助提高轻负载效率。但是,当它处于重负载状态时,输出纹波通常会高于 PWM。此外,PSM 和 PWM 之间的负载电流阈值不会直观地写入数据表中…

vue使用自动化导入api插件unplugin-auto-import,避免频繁手动导入

‌unplugin-auto-import‌是一个现代的自动导入插件,旨在简化前端开发中的导入过程,减少手动导入的繁琐工作,提升开发效率。它支持多种构建工具,包括Vite、Webpack、Rollup和esbuild,并且可以与TypeScript配合使用&…

电力场景红外测温图像均压环下的避雷器识别分割数据集labelme格式2436张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2436 标注数量(json文件个数):2436 标注类别数:1 标注类别名称:["arrester"] 每个类别标注的框数&am…

利用 NATIVE SQL 实现不区分供应商名字大小写进行模糊查询

公司有个需求 ,当按用英文名字来进行查询时,可以实现不区分供应商名字大小写进行模糊查询。 例如:如果用户输入‘br’ 那么可以查出名字含有 ‘BR’、‘bR’、‘Br’ 、‘br’ 的供应商来。利用SAP 常规的 Open SQL 是实现不了的。 只能利用…

lobechat搭建本地知识库

本文中,我们提供了完全基于开源自建服务的 Docker Compose 配置,你可以直接使用这份配置文件来启动 LobeChat 数据库版本,也可以对之进行修改以适应你的需求。 我们默认使用 MinIO 作为本地 S3 对象存储服务,使用 Casdoor 作为本…