从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 world
     2	
     3	aaaaaaaaa
     4	
     5	bbbbbbbbb
[root@hecs-144165 test_05.19]$ cat -b test1#-b则不会
     1	hello world

     2	aaaaaaaaa

     3	bbbbbbbbb

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

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

aaaaaaaaa

hello 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 text


hello 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行的信息。
在这里插入图片描述

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

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

相关文章

【数据结构】数据结构中的隐藏玩法——栈与队列

前言: 哈喽大家好,我是野生的编程萌新,首先感谢大家的观看。数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累。我…

UE5 像素流web 交互2

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

webshell工具-冰蝎流量特征和加密方式

一、冰蝎原理 1.1 简介 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端,由于通信流量被加密,传统的WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密,且加密密钥是由随…

【颜色】windows自带画图中的颜色编辑

结论:颜色编辑中的色调、饱和度和亮度,是与HSL颜色空间保持一致。 如下图所示,他有色调、饱和度和亮度,其数值范围均为[0,240]。 首先我使用HSV进行模拟,发现效果和数值对不上。 因此改换HSL进行模拟,其数…

NodeJS安装并生成Vue脚手架(保姆级)

文章目录 NodeJS下载配置环境变量Vue脚手架生成Vue脚手架创建项目Vue项目绑定git 更多相关内容可查看 NodeJS下载 下载地址:https://nodejs.org/en 下载的速度应该很快,下载完可以无脑安装,以下记得勾选即可 注意要记住自己的安装路径&…

每日AIGC最新进展(10):符号音乐生成SYMPLEX、新型图像编辑数据集ReasonPix2Pix、角色一致性插画生成、高级的风格个性化扩散模型

Diffusion Models专栏文章汇总:入门与实战 SYMPLEX: Controllable Symbolic Music Generation using Simplex Diffusion with Vocabulary Priors http://arxiv.org/abs/2405.12666v1 本文介绍了一种新的符号音乐生成方法,名为SYMPLEX,它基于…

台湾省军事演习路径规划:A*算法在复杂地形中的应用

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

在MySQL中,Linux表同步到Windows,有大小写的就没同步的详细解决方案

在 Linux 系统上,文件名是区分大小写的,而在 Windows 系统上,文件名通常不区分大小写。导致在从 Linux 同步文件到 Windows 时,有些文件因为名称冲突而无法同步。为了有效解决这个问题,可以采取以下方法: …

1098: 堆的判断

解法&#xff1a; 堆是完全二叉树 用数组来存储 然后用定义判定 #include<iostream> #include<vector> using namespace std; int main() {int n;cin >> n;vector<int> vec(n);for (int i 0; i < n; i) cin >> vec[i];for (int i 0; i &…

【Linux】关于获取进程退出状态中的core dump标志补充

通过 wait/waitpid 可以获取子进程的退出状态, 从而判断其退出结果. 记录退出状态的 int 变量 status 的使用情况如下图所示: 如果是收到信号终止的话, 低 7 位为收到的终止信号, 而低第 8 位为 core dump 标志, core dump 标志有什么用呢? core dump 标志只存 0/1, 表示是否…

c#自动生成缺陷图像-添加新功能(可从xml直接提取目标数据,然后进行数据离线增强)--20240524

在进行深度学习时,数据集十分重要,尤其是负样本数据。 故设计该软件进行深度学习数据预处理,最大可能性获取较多的模拟工业现场负样本数据集。 该软件基于VS2015、.NETFrameWork4.7.2、OpenCvSharp1.0.0.0、netstandard2.0.0.0、SunnyUI3.2.9.0、SunnyUI.Common3.2.9.0及Ope…

ClickHouse实战处理(一):MergeTree表引擎

MergeTree作为家族系列最基础的表引擎&#xff0c;主要有以下特点&#xff1a; 存储的数据按照主键排序&#xff1a;创建稀疏索引加快数据查询速度。支持数据分区&#xff0c;可以通过PARTITION BY语句指定分区字段。支持数据副本。支持数据采样。 一、MergeTree分类和建表参…

python水果分类字典构建指南

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、理解需求 三、构建字典 1. 数据结构选择 2. 代码实现 3. 结果展示 四、总…

C++实现基础二叉搜索树(并不是AVL和红黑树)

本次实现的二叉搜索树并不是AVL数和红黑树&#xff0c;只是了解流程和细节。 目录 二叉搜索树的概念K模型二叉搜索树的实现二叉搜索树的架构insert插入find 查找中序遍历Inorder删除earse替换法的思路情况一 &#xff1a;假如要删除节点左边是空的。在左边时在右边时 情况二&a…

JavaScript-数组的增删改查

数组的操作一共有四种&#xff1a; 查询数组数据修改数组中元素的值数组添加新的数据删除数组中的元素 数组的初始化 有些编程语言的数组初始化是用{}包着的&#xff0c;而JS的数组初始化用[] let num[2,6,1,77,52,25,7]; 数组的查询 想要具体查询数组中的某个元素 可以用数…

【Spring Cloud】全面解析服务容错中间件 Sentinel 持久化两种模式

文章目录 推送模式本地文件持久化&#xff08;拉模式&#xff09;配置yml编写处理类添加配置演示 配置中心持久化&#xff08;推模式&#xff09;修改nacos在sentinel中生效引入依赖配置文件 修改sentinel在nacos中生效下载源码更改代码演示 总结 推送模式 Sentinel 规则的推送…

【JavaEE 初阶(十)】JVM

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多进阶知识 目录 1.前言2.JVM内存区域划分3.类加载3.1双亲委派模型 4.垃圾回收&#xff08;GC&#xff0…

结构体变量的创建和初始化以及内存对齐

前言 嗨&#xff0c;我是firdawn&#xff0c;在本章中我们将介绍&#xff0c;结构体变量的创建和初始化&#xff0c;结构成员访问操作符以及结构体的内存对齐&#xff0c;下面是本章的思维导图&#xff0c;接下来&#xff0c;让我们开始今天的学习吧&#xff01; 一&#xf…

下载CentOS系统或者下载Ubuntu系统去哪下?

因为Centos官网是挂在国外的服务器上&#xff0c;下载镜像时相比于国内的下载速度会慢很多&#xff0c;分享国内的镜像站去阿里巴巴下载Centos镜像。 首先分享两种下载方式&#xff0c;如果只想下载Centos那么就访问方式一的下载地址即可&#xff0c;如果还想下载其他的系统&a…

AI大模型探索之路-实战篇5: Open Interpreter开放代码解释器调研实践

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;DB-GPT数据应用开发框架调研实践 目录 系列篇章&#x1f4a5;前言一、何为Open Interpreter&#xff1f;二、与 ChatGPT 的代码解释器比较三、 Open Interpreter的特性1、强大的本地计算能力2、丰富的功能3、高度的…