【Linux】文件内容查看命令——cat,tac,more,less,head,tail,od

        如果我们要查看一个文件的内容时,该如何是好?

这里有相当多有趣的命令可以来分享一下:最常使用的显示文件内容的命令可以说是cat与more及less了。

此外,如果我们要查看一个很大的文件(好几百MB时),但是我们只需要后面的几行字而已,那么该如何是好?

呵呵,用tail呀。此外,tac这个命令也可以达到这个目的。好了,说说各个命令的用途。

  1. cat :由第一行开始显示文件内容。
  2. tac:从最后一行开始显示,可以看出tac是cat的倒着写、
  3. nl:显示的时候,同时输出行号。
  4. more:一页一页地显示文件内容。
  5. less:与more类似,但是比more更好的是,它可以往前翻页。
  6. head:只看前面几行。
  7. tail :只看后面几行。
  8. od :以二进制的方式读取文件内容。

1.直接查看文件内容

直接查看一个文件的内容可以使用cat/tac/nl这几个命令。

1.1.cat ( concatenate)

选项与参数:

  • -A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已;
  • -b:列出行号,仅针对非空白行做行号显示,空白行不标行号;
  • -E:将结尾的换行符S显示出来;
  • -n:打印出行号,连同空白行也会有行号,与-b的选项不同;
  • -T:将[tab]按键以^I(大写的i)显示出来;
  • -v :列出一些看不出来的特殊字符;

范例一:查看/etc/issue 这个文件的内容

范例二:承上题,如果还要打印行号?

所以这个文件有三行,看到了吧!可以列出行号。这对于大文件要找某个特定的行时,有点用处.

#如果不想要显示空白行的行号,可以使用【cat -b /etc/issue 】,自己测试看看。


范例三:将/etc/man db.conf的内容完整的显示出来(包含特殊字符)。



……(下面省略)…….

上面的结果限于篇幅,我删除掉了很多数据。另外,输出的结果并不会有特殊字体,

上面的特殊字体是要让您发现差异点在哪里,

基本上,在一般的环境中,使用[tab]与空格键的效果差不多,都是一堆空白。我们无法知道两者的差别。 此时使用cat -A就能够发现那些空白的地方是啥鬼东西了。

[tab]会以^I表示,换行符则是以表示$表示

所以你可以发现每一行后面都是$,不过换行符在Windows/Linux则不太相同,Windows的换行符是^M$.

        嘿嘿,Linux里面有“猫”命令?不是的,cat是Concatenate(串联)的简写,主要的功能是将一个文件的内容连续打印在屏幕上面。例如上面的例子中,我们将/etc/issue打印出来,如果加上-n或-b的话,则每一行前面还会加上行号。

        个人比较少用cat。毕竟当你的文件内容的行数超过40行以上,根本来不及在屏幕上看到结果。所以,配合等一下要介绍的more或是 less来执行比较好。

        此外,如果是一般的DOS文件时,就需要特别留意一些奇怪的符号了,例如换行与[Tab]等要显示出来,就得加入-A之类的选项。

1.2.tac(反向列示)

与刚刚上面的范例一比较,是由最后一行先显示。

        tac 这个好玩了。怎么说?详细看一下,cat与tac,有没有发现?

对,tac 刚好是将cat反写动来,所以它的功能就跟cat相反,cat 是由第一行到最后一行连续显示在屏幕上,而tac则是由最尽一行到第一行反向在屏幕上显示出来,很好玩吧!

1.3.nl(添加行号打印)

选项与参数

-b:指定行号指定的方式,主要有两种

  • -b a:表示不论是否为空行,也同样列出行号(类似cat -n);
  • -b  t:如果有空行,空的那一行不要列出行号(默认值);

-n:列出行号表示的方法,主要有三种:

  • -n 1n:行号在屏幕的最左方显示;
  • -n rn:行号在自己栏位的最右方显示,且不加0;
  • -n rz:行号在自己栏位的最右方显示,且加0;行号栏位的占用的字符数。

-w:行号栏位占用的字符数

范例一:用nl列出/etc/issue的内容.

注意看,这个文件其实有三行,第三行为空白(没有任何字符),
因为它是空白行,所以nl不会加上行号,如果确定要加上行号,可以这样做。

#呵呵,行号加上来,那么如果要让行号前面自动补上0?可以这样。

嘿嘿,自动在自己栏位的地方补上0了,默认栏位是六位数,如果想要改成3位数?

nl 可以将输出的文件内容自动地加上行号,其默认的结果与cat-n有点不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等的功能。

有的复杂啊!!!不过别担心,这个基本不用的

2.可翻页查看

nl与cat、tac等,都是一次性地将数据一口气显示到屏幕上面,那有没有可以进行一页一页翻动的命令?

让我们可以一页一页的观察,才不会前面的数据看不到。有,那就是more与less。

2.1.more(一页一页翻动)

这样子 文件里的内容就一页一页的展示给我们了

重点在最后一行,你的光标也会在这里等待你的命令

        仔细地给它看到上面的范例,如果more后面接的文件内容行数大于屏幕输出的行数时,就会出现类似上面的图例。重点在最后一行,最后一行会显示出目前显示的百分比,而且还可以在最后一行输入一些有用的命令。

在more 这个程序的运行过程中,你有几个按键可以使用:

  1. 空格键(space):代表向下翻一页;
  2. Enter:代表向下翻一行;
  3. /字符串:代表在这个显示的内容当中,向下查找字符串这个关键词;
  4. :f:立刻显示出文件名以及目前显示的行数;
  5. q:代表立刻离开more,不再显示该文件内容;
  6. b或[ctrl]-b:代表往回翻页,不过这操作只对文件有用,对管道无用。

要离开more 这个命令的显示工作,可以按下q就能够离开。而要向下翻页,使用空格键即可。

比较有用的是查找字符串的功能,

举例来说,我们使用more /etc/man_db.conf来观察该文件,若想要在该文件内查找MANPATH这个字符串时,可以在底行处输入/MANPATH

输入了/之后,光标就会自动跑到最下面一行等待输入

如同上面的说明,输入了/之后,光标就会跑到最下面一行,并且等待你的输入,你输入了字符串并按下[enter]之后,more就会开始向下查找该字符串,而重复查找同一个字符串,可以直接按下n即可。最后,不想要看了,就按下q即可离开more。

more的缺点就是只能往后翻!!!!!

2.2.less(一页一页翻动)

我们先看例子

和more好像差不多?

        less的用法比起more又更加有弹性,在more的时候,我们并没有办法向前面翻,只能往后面看,但若使用了less 时,就可以使用【pageup]、[pagedown]等按键的功能来往前往后翻看文件,你看是不是更容易观看一个文件的内容了。

除此之外,在less 里面可以拥有更多的查找功能。不止可以向下查找,也可以向上查找,实在是很不错,基本上,可以输入的命令有:

  1. 空格键:向下翻动一页;
  2. [pagedown]:向下翻动一页;
  3. [pageup]:向上翻动一页;
  4. /字符串:向下查找字符串的功能;
  5. ?字符串:向上查找字符串的功能;
  6. n:重复前一个查找(与/或?有关);
  7. N:反向的重复前一个查找(与/或?有关);
  8. g:前进到这个数据的第一行;
  9. G:前进到这个数据的最后一行去(注意大小写);
  10. q:离开less这个程序。

查看文件内容还可以进行查找的操作,看,less是否很不错?其实less还有很多的功能,详细的你是否会觉得 less 使用的画面与环境与man page非常类似?

        没错,因为man这个命令就是询用less来显示说明文件的内容,现在你是否觉得less很重要?
使用方式请使用man less查询一下。

3.数据截取

我们可以将输出的数据作一个最简单的截取,那就是取出文件前面几行(head)或取出后面几行(tail)文字的功能。

不过,要注意的是head与tail都是以“行”为单位来进行数据截取的。

3.1.head(取出前面几行)

  • head [-n number]文件

选项与参数:

  • -n:后面接数字,代表显示几行的意思。


 默认的情况中,显示前面十行,若要显示前 20行,就得要这样。

范例:如果后面 100行的数据都不打印,只打印/etc/man_db.conf的前面几行,该如何是好?

        head的英文意思就是“头”,那么这个东西的用法自然就是显示出一个文件的前几行,没错,就是这样。

若没有加上-n这个选项时,默认只显示十行,若只要一行?那就加入“head-n 1 filename”即可。

        另外那个-n选项后面的参数较有趣,如果接的是负数,例如上面范例的-n -100时,代表列出前面所有行数,但不包括后面 100行。举例来说CentOS 7.1的 /etc/man_db.conf 共有131行,则上述的命令“head-n-100 /etc/man_db.conf”就会列出前面31行,后面100行不会打印出来了。这样说,比较容易懂了吧?

3.1.tail(取出后面几行)

选项与参数:

  • -n:后面接数字,代表显示几行的意思。
  • -f:表示持续刷新显示后面所接文件中的内容,要等到按下[ctrl]-c才会结束

默认的情况中,显示最后的十行。若要显示最后的20行,就得要这样:

范例一:如果不知道/etc/man db,conf有几行,却只想列出100行以后的数据时?

范例二:持续检测/var/log/messages的内容

要等到输入[crtl]-c之后才会结束执行tail这个命令.

        有head自然就有tail(尾巴),没错,这个tail的用法跟head的用法类似,只是显示的是后面
几行。默认也是显示十行,若要显示非十行,就加-n number的选项即可。

        范例一的内容就有趣啦,其实与head-n-xx有异曲同工之妙。当执行 tail -n +100 /etc/man db.conf 代表该文件从100行以后都会被列出来,同样,在man_db.conf共有131行,因此第100-131行就会被列出来,前面的99行都不会被显示出来。

        至于范例二中,由于/var/log/messages随时会有数据写入,你想要让该文件有数据写入时就立刻显示到屏幕上,就利用-f这个选项,它可以一直刷新显示/var/log/messages这个文件,新加入的数据都会被显示到屏幕上,直到你按下[crtl]-c才会结束 tail 这个命令的执行,由于messages必须要 root权限才能看,所以该范例得要使用root来查询。

例题

假如我想要显示/etc/man_db.conf的第11到第20行?

        答:这个应该不算难,想一想,在第11到第20行,那么我取前20行,再取后十行,所以结果就是:【head -n 20 /etc/man_db.conf | tail -n 10】,这样就可以得到第11到第20行之间的内容了。

        这两个命令中间有个管道(|)的符号存在,这个管道的意思是:前面的命令所输出的信息,通过管道交由后续的命令继续使用。所以,head-n20/etc/man_db.conf会将文件内的20行取出来,但不输出到屏幕上,而是转交给后续的tai 命令继续处理。因此 tal不需要接文件名,因为tai 所需要的数据是来自于head处理后的结果

例题
        承上一题,那如果我想要列出正确的行号?就是屏幕上仅列出letc/man_db.conf的第11到第20行,且有行号存在?

        答:我们可以通过 cat-n来显示出行号,然后再通过head/tail 来截取数据即可,所以就变成了如下的模样:【cat -n /etc/man db.conf | head -n 20 | tail -n 10】

有没有头晕呢?

4.非纯文本文件:od

我们上面提到的都是在查看纯文本文件的内容。那么万一我们想要查看非文本文件呢??

举例来说,例如/usr/bin/passwd这个执行文件的内容时,又该如何去读出信息呢?

        事实上,由于执行文件通常是二进制文件(binary file),使用上面提到的命令来读取它的内容时,确实会产生类似乱码的数据。那怎么办?

没关系,我们可以利用od 这个命令来读取。

  • od[-t TYPE]文件

选项或参数:

-t:后面可以接各种【类型(TYPE)】的输出,例如:

  • a :利用默认的字符来输出;
  • c  :使用ASCII字符来输出;
  • d[size]:利用十进制(decimal)来输出数据,每个整数占用size Bytes;
  • f[sizel:利用浮点数值(floating)来输出数据,每个数占用size Bytes;
  • o[size]:利用八进制(octa1)来输出数据,每个整数占用 size Bytes;
  • x[size]:利用十六进制(hexadecimal)来输出数据,每个整数占用size Bytes;


范例一:请将/usr/bin/passwd的内容使用ASCII方式来显示。

 ……(后面省略)……

最左边第一列是以八进制来表示Bytes数.

以上面范例来说,第二栏0000020代表开头是第16个byte(2x8)的内容之意。

范例二:请将/etc/issue这个文件的内容以八进制列出存储值与ASCII的对照表。


如上所示,可以发现每个字符可以对应到的数值是什么。

要注意的是,该数值是八进制.例如S对应的记录数值为123,转成十进制:1x8^2+2x8+3=83.

        利用这个命令,可以将数据文件(data file)或是二进制文件(binary file)的内容数据读出来虽然读出来的数值默认是使用非文本文件,亦即是十六进制的数值来显示,不过,我们还是可以通过-t c的选项与参数来将数据内的字符以ASCII类型的字符来显示,虽然对于一般用户来说,这个命令的用处可能不大,但是对于工程师来说,这个命令可以将二进制文件(binary file)的内容作一个大致的输出,他们可以看得出其中的意义。
        如果对纯文本文件使用这个命令,你甚至可以发现ASCII与字符的对照表,非常有趣,例如上述的范例二,你可以发现到每个英文字S对照到的数字都是123,转成十进制你就能够发现那是83。

        如果你有任何程序语言的书,拿出来对照一下ASCII的对照表,就能够发现真是正确。

我不想查Google,想要立刻找到password 这几个字的ASCI对照,该如何通过od来判断?
        答:其实可以通过刚刚上一个小节谈到的管道命令来处理。如下所示:
【echo password | od -t oCc】
echo可以在屏幕上面显示任何信息,而这个信息不由屏幕输出,而是传给od去继续处理,就可以得到ASCIl code对照。

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

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

相关文章

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

目录 使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集,以下是设计和实现这些网络的步骤: 1.数据准备: 1.1 首先,需要加载Indian Pines数据集。 1.2 将数据集转换为PyTorch张量&#x…

LLM推理引擎怎么选?TensorRT vs vLLM vs LMDeploy vs MLC-LLM

LLM擅长文本生成应用程序,如聊天和代码完成模型,能够高度理解和流畅。但是它们的大尺寸也给推理带来了挑战。有很多个框架和包可以优化LLM推理和服务,所以在本文中我将整理一些常用的推理引擎并进行比较。 TensorRT-LLM TensorRT-LLM是NV发布…

imazing电脑怎么下载 imazing怎么下载软件 使用iMazing下载和卸载Apple设备上的应用程序

iMazing官方版是一款管理苹果设备的软件,是一款帮助用户管理 iOS手机的PC端应用程序,能力远超 iTunes 提供的终极 iOS 设备管理器。在iMazing官方版上与苹果设备连接后,可以轻松传输文件,浏览保存信息等,功能比iTunes更…

泛微开发修炼之旅--35关于基于页面扩展和自定义按钮实现与后端交互调用的方法

文章链接:35关于基于页面扩展和自定义按钮实现与后端交互调用的方法

vue3中使用 tilwindcss报错 Unknown at rule @tailwindcss

解决方法: vscode中安装插件 Tailwind CSS IntelliSense 在项目中的 .vscode中 settings.json添加 "files.associations": {"*.css": "tailwindcss"}

基于YOLOv9的脑肿瘤区域检测

数据集 脑肿瘤区域检测,我们直接采用kaggle公开数据集,Br35H 数据中已对医学图像中脑肿瘤位置进行标注 数据集我已经按照YOLO格式配置好,数据内容如下 数据集中共包含700张图像,其中训练集500张,验证集200张 模型训…

AI绘画:艺术与科技的交融,创新浪潮与无限可能

在科技日新月异的当下,AI 绘画作为人工智能领域的一颗璀璨新星,正以惊人的速度在国内崭露头角,引发了艺术与技术交融的全新变革。随着人工智能技术的飞速发展,AI绘画已成为艺术与科技交融的新宠。2024年,AI绘画行业在国…

Autogen智能体实战-Autogen框架介绍

文章目录 一,Autogen简介二,Autogen原理1,Autogen原理图解2,拆解Autogen是如何完成绘制特斯拉股票趋势图的 这篇文章介绍一个开源的Agent框架-微软的Autogen。 一,Autogen简介 官网:https://microsoft.github.io/aut…

在idea中查看某个接口的所有实现类图

一、选中某个接口右键 ---> Diagrams ---> show Diagrams,然后就会进入一个新的 tab 页; 二、然后在出来的图上选中某个接口右键 ---> show Implementations,就会显示选中接口的所有实现类列表; 三、最后 ctrl A 全部选…

uniapp父页面调用子页面 组件方法记录

文章目录 导文如何点击父页面,触发子页面函数先写一个子页面的基础内容父元素 如何点击父页面,修改子页面的值先写一个子页面的基础内容父元素 导文 如何点击父页面,触发子页面函数? 如何点击父页面,修改子页面的值&am…

英区PayPal账号3分钟绑定WISE英镑的银行收款账户

正文开始,我们先登录英区PayPal账号后 有很多银行给我们选择,但是没有WISE的选项,所以我们手动输入“WISE”,然后如下图所示点击“Enter Your Bank Detailds”输入银行详细信息按钮。 然后输入我们的WISE英镑账户的收款银行信息&a…

Advanced Electronic Materials:磁性智能皮肤作为人机界面

近年来,电子可穿戴设备的普及率迅速上升,柔性可穿戴设备因其高生物相容性、功能性、适应性和低成本而在人机界面上引起了极大的关注。柔性磁性智能皮肤是这一快速发展的柔性可穿戴电子领域的一部分,为人类感知发展开辟了一条新的道路。磁感是…

SpringCloud第一篇Docker基础

文章目录 一、常见命令二、数据卷三、数据挂载四、自定义镜像五、网络 一、常见命令 Docker最常见的命令就是操作镜像、容器的命令,详见官方文档: https://docs.docker.com/ 需求: 在DockerHub中搜索Nginx镜像,查看镜像的名称 …

k8s集群如kubeadm init和kube-flannel.yam问题

查看k8s中角色内容kubectl get all (显示pod和server以及delment) 删除应用资源选择删除先删除部署查看部署和pod没了服务还在,但资源和功能以及删除,删除服务kubectl delete 服务名(部署名),get pods 获取默认空间的容…

从资金到未来:技术融资如何重塑IT顾问在AI与网络安全的角色?

一方面是人工智能 (AI) 和机器学习 (ML) 的双引擎,另一方面是网络安全和数据泄露威胁中不断变化的威胁形势,IT 格局正在经历翻天覆地的变化。这场数字革命对 IT 顾问来说既是挑战也是机遇,但要成…

解决计算机中mfc140u.dll没有被指定在windows上运行

在打开电脑软件时候出现mfc140u.dll丢失或找不到mfc140u.dll怎么办?遇到这个问题相当困扰,mfc140u.dll到底是什么?为什么会出现这个情况,相信很多人都不知道,今天我给大家详细介绍一下mfc140u.dll是什么,为…

【C++修行之道】string类的使用

目录 一.C语言中的字符串 二、标准库中的string类 (了解) 2.1 string类(了解) 2.2 帮助文档阅读 三、 string类的常用接口说明 3.1 string类对象的常见构造 3.2 string类对象的容量操作 3.3 string类对象的访问及遍历操作 字符串类的简单实现 3.4 string类对象的修改…

【论文阅读笔记】ASPS: Augmented Segment Anything Model for Polyp Segmentation

1.论文介绍 ASPS: Augmented Segment Anything Model for Polyp Segmentation ASPS:用于息肉分割的扩展SAM模型 2024年 arxiv Paper Code 2.摘要 息肉分割在结直肠癌诊断中起着至关重要的作用。最近,Segment Anything Model(SAM)的出现利用其在大规模…

视频压缩软件哪个压缩最小,视频用什么软件压缩最小

在数字媒体时代,视频内容的生产与分享已成为生活常态。但随之而来的问题就是,大视频文件占用过多存储空间,上传和分享也变得不便。本文将为你揭示如何将视频压缩到最小,同时保持画质清晰。让我们一起探索吧! 下载并文件…

剪辑抽帧技巧有哪些 剪辑抽帧怎么做视频 剪辑抽帧补帧怎么操作 剪辑抽帧有什么用 视频剪辑哪个软件好用在哪里学

打破视频节奏,让作品告别平庸。抽帧剪辑可以改变视频叙事节奏,人为制造冲突、转折、卡顿的效果。这种剪辑方式,不仅可以推进剧情发展,还能吸引观众的注意力,有效防止观影疲劳。有关剪辑抽帧技巧有哪些,剪辑…