从0开始linux(3)——如何读写文件

欢迎来到博主的专栏——从0开始linux
博主ID:代码小豪


文章目录

    • 创建普通文件
    • 用文本编辑器nano写入文件
    • 如何读取文件
      • cat命令
      • less命令
      • head和tail

我们前面已经了解和如何操作文件,但是目前认识的文件类型分为两类,一类是目录文件、另一类是普通文件。我们已经清楚了目录文件如何创建,删除。但是我们似乎还不太了解普通文件该如何操作。

创建普通文件

我们通常会用touch命令创建一个新的普通文件,但是touch命令实际上的作用远不止创建文件,touch命令的作用是修改文件时间或创建新文件。

而一个文件的时间可分为3种

  1. 修改时间(mtime) 最近该文件的文件内容修改的时间
  2. 状态时间(ctime) 当文件的状态变更时,就会更改这个时间
  3. 读取时间(atime) 上一次读取该文件的时间

我们可以通过一下指令来查看文件的某种时间

ls -l --time=atime #查看文件的读取实践
ls -l --time=ctime #查看文件的状态时间
ls -l #默认查看文件的修改时间

那么如果某些文件的时间错误了,那么我们就可以用touch将文件的时间修改过来。

touch [option] filename

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以发现touch将test的时间修改了。如果touch’要操作的文件不存在,那么就会创建一个新的空文件。

用文本编辑器nano写入文件

我们尝试用touch命令创建一个新的空文件test1。

现在我们尝试使用文本编辑器向test1写入数据。首先我们要下载一个nano。

yum -y install nano

nano的使用方式非常简单,我们直接用nano,再加上要编辑的文件名,就能打开这个文件进行编辑了。

nano filename

比如我们使用nano编辑test1,这次我们来向test1写入一句hello world。

nano test1

在这里插入图片描述
出编辑文本外。nano的操作是通过组合按键来进行的。nano常用的组合按键有以下几种

组合按键作用
ctrl+g查看在线文档
ctrl+x退出nano程序,并询问你是否保存文件
ctrl+O保存文件

当编辑好hello world后,我们按下ctrl+x退出文件,输入y确定保存

如何读取文件

我们前面已经用nano编辑好了一个文件,但是我们要如何才能读取这个文件呢?没关系,接下来介绍4个命令:(1)cat,(2)less,(3)head,(4)tail

cat命令

哟,原来linux还藏着一直猫猫啊。实际上是concatenate的缩写,主要功能是将文件中的信息一股脑的打印在屏幕上面,比如上面写好的test1文件,我们就可以用cat指令读取

cat [option] filename
#-n:列出行号
#-b:仅对非空白行列出行号

比如:打印test1,并列出行号

cat -n test1

如果说这个行号的效果不明显,我们可以在test1当中多输入一些文本信息。
在这里插入图片描述

[root@hecs-144165 test_05.19]$ cat -n test1#-n 会打印空白行号1	hello world2	3	aaaaaaaaa4	5	bbbbbbbbb
[root@hecs-144165 test_05.19]$ cat -b test1#-b则不会1	hello world2	aaaaaaaaa3	bbbbbbbbb

tac命令,tac命令与cat命令是倒着来的,实际上他们的作用的也是倒着来,不信?不行就用tac命令读取一下test1试试。

[root@hecs-144165 test_05.19]$ tac test1
bbbbbbbbbaaaaaaaaahello world

可以发现tac是倒着打印的。这里拿出一个很形象的图。

在这里插入图片描述

但是如果文件的内容非常多,超过50行,那么cat一次甩出这么输出信息肯定是看不过来的,因此我们下面介绍less来查看文件。

less命令

less命令可以控制屏幕上的输出信息,比如我们创建一个拥有1w多行文本信息的文件text。下面请大家输入这行指令。

cnt=1; while [ $cnt -le 10000 ] ; do echo "hello $cnt">>text; let cnt++;done

我在本博客中不解释这行命令的原理,此命令会在text文件当中写10000行文本信息,我们先用cat查看一下

cat -n text

可以发现,这个文本信息在屏幕上的滚动速度太快了,我们很难看到前面写了什么信息,因此cat确实不适合读取较多信息的文件。我们使用less可以让控制文件的输出信息,控制读取的速度。

less filename

[root@hecs-144165 test_05.19]# less texthello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
hello 10
hello 11
hello 12
hello 13
hello 14
hello 15
hello 16
hello 17
hello 18
hello 19
hello 20
hello 21
hello 22
hello 23
hello 24
hello 25
hello 26
hello 27
hello 28
hello 29
hello 30
hello 31
hello 32
hello 33
hello 34
hello 35
hello 36
hello 37
hello 38
: #less会在这里等待你输入命令

less可以执行的命令有

按键执行效果
空格键向下翻动一页
[pagedown]向下翻动一页
[pageup]向上翻动一页
enter向下查看一行
/string查找关键字
q离开less这个程序

head和tail

如果我们只想读取文件开头的几行信息或者只想读取末尾的几行信息该怎么办呢?此时我们就需要用到head和tail命令了

head命令。

head [-nnumber] filename

head命令默认读取文件的前10行信息。head命令的选项只有-n,因此我就不用option代替了。
-n后面接数字,表示想要读取头n行的文件,当然,head还允许我们忽略n,直接使用数字

head text #默认读取前10行的信息
head -n20 text#读取前20行的信息
head -20 text#省略n

tail命令

tail [-n number] filename

tail默认读取文件的末尾10行信息。-n和-number的用法可以参考上面的head

tail text #默认读取末尾10行的信息
tail -n20 text#读取末尾20行的信息
tail -20 text#省略n

ok,现在来说说这么一个高端点的用法。我们不想要看前面的信息,我也不想看后面的信息,我想看5000,-5020行之间的信息,请问我该如何操作?

这个操作并不麻烦,如果我们想要看第5000-5020行的信息,那么首先我们先用head查看前5020行的信息,然后再用tail查看后21行的信息。这样子我们就能看到5000-5020行之间的信息了。

嘶,这个操作似乎有点合理,但是我不知道什么选项可以做到这种效果啊。当然了,我们不需要什么选项,我们只需要用到一个特殊的东西,管道(|)。

管道(|),这个符号代表的意思是:将前面命令输出的信息,通过管道,交给后面的命令处理,因此,我们应该写出这样的命令。

[root@hecs-144165 test_05.19]# head -5020 text | tail -21

所以,head -5020 text会将前5020行的信息取出来,然后通过管道交给后面tail处理,而tail选择将这段信息的末尾21行打印出来,于是就打印出了第5000-5020行的信息。
在这里插入图片描述

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

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

相关文章

【C#上位机应用开发实战】—— 通信模块的基础与实践

🚀 引言 在工业自动化、设备监控、物联网(IoT)等领域,上位机软件扮演着至关重要的角色。作为连接人与设备的桥梁,上位机软件不仅需要提供友好的用户界面,更需要具备高效、稳定的通信能力。今天&#xff0c…

ASP+ACCESS教师档案管理系统

3.1 系统功能模块图 3.2 E-R模型图 3.3 系统使用流程图 3.4 各个模块功能简介: 本系统分为五个功能模块,它们分别是教师信息录入模块、教师信息修改模块、教师信息查询模块、教师信息打印模块。 下面分别介绍各个模块的功能用途&#x…

第 398 场 LeetCode 周赛题解

A 特殊数组 I 模拟&#xff1a;遍历数组判断是否是一个特殊数组 class Solution { public:bool isArraySpecial(vector<int>& nums) {int r 0;while (r 1 < nums.size() && nums[r 1] % 2 ! nums[r] % 2)r;return r nums.size() - 1;} };B 特殊数组 I…

计网(部分在session学习章)

TCP/UDP TCP:面向连接,先三次握手建立连接,可靠传输。 UDP:无连接,不可靠,传递的快。 TCP可靠传输 1.分块编号传输; 2.校验和,校验首部和数据的检验和,检测数据在传输中的变化; 3.丢弃重复数据; 4.流量控制,TCP 利⽤滑动窗⼝实现流量控制。TCP的拥塞控制采⽤…

基于Matlab卷积神经网络人脸识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 人脸识别作为计算机视觉领域的关键技术之一&#xff0c;具有广泛的应用前景&#xff0c;如安全…

Add object from object library 从对象库中添加内置器件

Add object from object library 从对象库中添加内置器件 正文正文 对于 Lumerical,有些时候我们在使用中,可能需要从 Object library 中添加器件,通常我们的做法是手动添加。如下图所示,我们添加一个 Directional Coupler 到我们的工程文件中: 但是这种操作方式不够智能…

基于HTML5和CSS3搭建一个Web网页(二)

倘若代码中有任何问题或疑问&#xff0c;欢迎留言交流~ 网页描述 创建一个包含导航栏、主内容区域和页脚的响应式网页。 需求: 导航栏: 在页面顶部创建一个导航栏&#xff0c;包含首页、关于我们、服务和联系我们等链接。 设置导航栏样式&#xff0c;包括字体、颜色和背景颜…

上门服务系统开发|东邻到家系统|上门服务系统开发流程

上门服务小程序的开发流程是一个复杂且精细的过程&#xff0c;涉及到需求分析、设计规划、开发实施、测试验收以及上线运营等多个环节。下面将详细介绍上门服务小程序的开发流程&#xff0c;帮助读者全面了解并掌握其中的关键步骤。 一、需求分析 在开发上门服务小程序之前&am…

API攻击呈指数级增长,如何保障API安全?

从远程医疗、共享汽车到在线银行&#xff0c;实时API是构建数字业务的基础。然而&#xff0c;目前超过90%的基于Web的网络攻击都以API端点为目标&#xff0c;试图利用更新且较少为人所知的漏洞&#xff0c;而这些漏洞通常是由安全团队未主动监控的API所暴露&#xff0c;致使API…

24款奔驰GLE350升级原厂环视全景360影像 抬头显示HUD

奔驰GLE350原厂360全景影像的清晰度通常取决于车辆的具体型号和年份&#xff0c;以及安装的摄像头和显示屏质量。一般来说&#xff0c;原厂360全景影像系统会提供高清的影像&#xff0c;让驾驶者能够清晰地看到车辆周围的环境&#xff0c;帮助进行停车和转弯等操作抬头显示&…

AOP编程

AOP编程 AOP&#xff0c;面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构。 OOP&#xff0c;面向对象编程&#xff0c;一种编程思想。 AOP&#xff0c;提供了一种机制,可以将一些横切系统中多个模块的共同逻辑(如日志记录、事务管理、安全控制等…

WordPress搭建流程

1. 简介 WordPress 是一个 PHP 编写的网站制作平台。WordPress 本身免费,并且拥有众多的主题可以使用,适合用于搭建个人博客、公司官网、独立站等。 2. 环境准备 2.1 WordPress 下载 WordPress 可以在 Worpress中文官网 下载(如果后续要将后台调成中文的话,一定要从中文…

定时器

文章目录 11.11.21.31.41.5 22.12.2 基本定时器 框图2.32.42.4.12.4.22.4.32.4.42.4.52.4.6 2.5 定时器 溢出时间计算方法2.6 定时器 中断 实验配置步骤2.72.7.12.7.2 和42.7.32.7.52.7.6 33.13.23.2.1 时钟源3.2.23.2.43.2.6 3.33.43.4.13.4.23.4.33.4.43.4.53.4.5.13.4.5.23.…

机器学习实验------Adaboost算法

第1关:什么是集成学习 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 第2关: Boosting 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 第3关:Adaboost算法流程 任务描述 本关任务:用Python实现Adaboost,并通过鸢尾花数据集…

捕食者优化算法,原理详解,MATLAB代码免费获取

捕食者优化算法&#xff08;Hunter–prey optimization&#xff0c;HPO&#xff09;是一种受自然启发的群智能优化算法。该算法的灵感来自于捕食动物(如狮子、豹和狼)以及猎物(如雄鹿和瞪羚)的行为。动物狩猎行为有很多场景&#xff0c;其中一些场景已经转化为优化算法。本文使…

如何选择一款安全高效的数据自动同步工具?

随着科技的不断发展&#xff0c;企业处理的数据量愈发庞大。数字化浪潮的涌现使得数据在业务活动和决策中的角色变得日益重要&#xff0c;然而这些数据往往分布在不同的位置&#xff0c;需要进行同步和分类&#xff0c;以便更有效地利用。以下是一些常见的数据自动同步场景&…

UE5 像素流web 交互2

进来点个关注不迷路谢谢&#xff01; ue 像素流交互多参数匹配 主要运用像素流的解析json 状态&#xff1a; 测试结果&#xff1a; 浏览器控制台&#xff1a; 接下来编写事件传递 关注下吧&#xff01;

模板编译之入口分析

Vue 是一个渐进式 JavaScript 框架&#xff0c;提供了简单易用的模板语法&#xff0c;帮助开发者以声明式的方式构建用户界面。Vue 的模板编译原理是其核心之一&#xff0c;它将模板字符串编译成渲染函数&#xff0c;并在运行时高效地更新 DOM。本文将深入探讨 Vue 模板编译的原…

【机器学习300问】96、怎么理解卷积神经网络CNN中的卷积操作?

卷积操作是卷积神经网络&#xff08;CNN&#xff09;中的一种核心组件。要讲清楚卷积操作&#xff0c;我们只需要回答以下四个问题&#xff1a;什么是卷积核&#xff1f;卷积运算的规则是什么&#xff1f;padding是什么&#xff1f;stride是什么&#xff1f; 下面让我以图像处理…

27寸2K显示器 - HKC G27H2

HKC G27H2是一款面向电竞市场的高性能显示器&#xff0c;以其2K分辨率和180Hz的刷新率作为主要卖点&#xff0c;旨在为玩家提供流畅而清晰的视觉体验。配备HDR 400技术和95% DCI-P3色域覆盖&#xff0c;这款显示器还支持升降旋转支架&#xff0c;为用户提供了高度的人体工程学适…