Linux的基本指令(三)

目录

前言

echo指令(简述)

Linux的设计理念

输出重定向操作符 >

追加输出重定向操作符 >>

输入重定向操作符 <

补充知识

学前补充

more指令

less指令

head指令

tail指令

查看文件中间的内容

利用输出重定向实现

利用管道“ | ”实现

wc指令

一种特殊机制:管道 |


前言

这应该是Linux基本指令倒数第二篇了,加油再多学一点~


echo指令(简述)

语法:echo [选项] 打印信息

功能:输出文本或变量的值。它通常被用于脚本编程、调试和打印信息

常见使用方式:

1、echo 打印信息,将要打印的信息显示在屏幕上:

2、echo 打印信息 > 文件名,将打印信息写入文件中,若该文件不存在则先创建后打印:


Linux的设计理念

        "一切皆文件" 是 Linux 的一个重要设计理念之一。在 Linux 中,几乎所有的设备、文件和资源都被视为文件。那么我们的显示器也就是屏幕作为一个输出设备,也可以被视为一个文件,利用echo打印在屏幕上的信息就可以理解为向屏幕文件中写入一个该信息,而我们利用重定向操作符>实现了将本该写在屏幕文件中的信息写在了log.txt文件中,这个过程就叫做“输出重定向”


输出重定向操作符 >

语法:> 文件名

功能:向文件中写入信息,写入时覆盖原来内容

常见使用方式:

1、在上面的例子中,我们利用echo和>的配合,成功的将打印信息写入了文件中,同时由于没有对应的文件,所以系统创建了一个新的名叫log.txt的文件,那么如果我们想不为文件中写入信息就想直接创建一个新的文件,是不是可以直接>呢?答案是肯定的:

因此,我们除了利用touch 文件名的形式创建新文件,还可以用> 文件名也可以创建新文件

2、若我们想为包含“hello linux”信息的log.txt文件中继续追加信息时,我们会发现新追加的信息会覆盖掉原来的信息

如果我们将一个空的信息传入log.txt文件呢?

我们发现文件貌似已经被置空了,但是文件实际的大小仍为1,这个1代表文件的换行符,所以即使是传入一个空的信息该文件依然不为空,所以我们该怎么办?

我们可以利用重复使用 > 文件名的方式来清空一个文件,此时文件的实际大小变为0


追加输出重定向操作符 >>

语法:>> 文件名

功能:向文件结尾处写入信息,只追加不覆盖

这两个操作符,在c语言中其实就是两种不同的文件操作方式

>操作符,它对应的C语言代码是:

以只写w的方式(覆盖写入)打开log.txt文件,然后利用fputs函数向文件中写入字符串"hello c"(图中一些内容懒得更改了懂得大致意思即可)

对于>>操作符,它对应的C语言代码是:

以追加a的方式(只追加不覆盖)打开log.txt文件,然后利用fputs函数向文件中追加写入字符串"hello c"(图中的hello 111懒得改成c了🤡)

关于C语言中的文件操作方法,可以查看我的这篇文章:文件操作函数---C语言版本

有了输出重定向操作符就会有输入重定向操作符😍


输入重定向操作符 <

语法:< 文件名

功能:将原本默认从键盘文件中读取信息并打印在显示器上的道路,切换至从指定文件中读取信息并打印在显示器上

一些解释:

1、关于输入重定向的解释        

        直接使用cat指令就会默认从键盘文件中读取信息,即我们在键盘中输入一个值1,屏幕上就会将我们输入的内容打印出来:

        

        而cat < 文件名 指令就会使原来默认从键盘文件中读取信息打印在显示器上,转变为从我们指定的文件中读取信息并打印在显示器上:

2、关于cat < 文件名 与cat 文件名的解释:

虽然cat < 文件名 cat 文件名 所显示的内容是一样的

但是两者在功能和行为上有所不同(cat < 文件名指令会更加复杂且有用)

1.cat 文件名用于将指定文件的内容输出到终端(标准输出),不修改原始文件,只是将其内容显示出来。

2.cat  < 文件名用于将指定文件作为输入,并将其内容传递给另一个命令或程序。这种方式称为输入重定向。通过 < 操作符,可以从指定的文件中读取数据并传递给后续处理。

        

        假设你有一个可执行程序 "a.out" 接受从标准输入读取数据并进行处理。现在你想使用 "input.txt" 中的数据作为程序的输入,可以使用以下命令:

cat < input.txt | ./a.out

        "input.txt" 文件中可以包含任意文本内容,它可以是纯文本、代码、配置文件等等。这个文件的内容取决于你想要在程序或命令中使用的数据,下面是一些示例:

1. 纯文本:
 

This is a sample text file.
It can contain multiple lines of text.

2. 代码:

#include <stdio.h>
int main() {printf("Hello, World!\n");return 0;}

3. 配置文件(例如 JSON 或 XML):
 

{"name": "John Doe","age": 25,"city": "New York"
}

4. 数据集合(例如 CSV 格式):
 

Name,Age,City
John Doe,25,New York
Jane Smith,30,San Francisco

        在一个名为 "input.txt" 的文件中,你可以放置任何类型的文本内容,具体取决于你程序或命令需要处理的数据类型。如果需要对该数据进行进一步处理,还可以将其传递给其他命令或程序。

总结:

  • cat 文件名:用于显示文件的内容到终端,不修改原始文件。
  • cat > 文件名:用于将指定文件的内容作为输入,并传递给后续处理(命令或程序)。

对于<操作符,它对应的C语言代码是:

以只读r的方式(读取字符)打开log.txt文件,然后利用fgets函数将文件中的字符逐个的打印在显示器上


补充知识

        在上面我们提到了Linux中一条重要的设计理念:一切皆文件。基于这条设计理念,Linux就可以以统一的方式来进行文件/设备(键盘,显示器,磁盘、终端等)的访问。

        对于文件的访问我们可以理解,但是设备除了键盘外,显示器甚至是磁盘终端这些都可以被视为文件吗?

        我们都知道,我们在使用Linux的时候的大黑框称为终端,而且我们可以创建多个终端,而每次的创建终端都会在伪终端文件夹中创建一个新以0 1 2 3 这些数字为名字的终端文件(默认有0和1终端):

如果你还不确定,那么请看下面这张图: 

        

        可以发现,我们可以利用echo 打印信息 > 目录/文件 的形式向另外两个终端中打印信息,所以终端也可以被视为一个文件,这也就是Linux一切皆文件理念的体现。

        也因此,如果你学会了在Linux中操作文件,你也就相当于学会了对于硬件的操作,这也是为什么在嵌入式学习中我们选取的操作系统是Linux操作系统。


学前补充

我们在学习more、less、head、tail指令之前先创建一个文本大文件,具体指令如下:

i=1; while [$i -le 10000]; do echo "hello linux $i"; let i++; done

        这么做的原因是因为cat指令只方便用于查看小文本文件若是文本文件过大,比如指令中的十万行句子cat指令会将这十万行句子全部打印当我们想要向上翻找时就会显得很麻烦,所以就需要使用more、less、head、tail这个指令来方便我们查看大文本文件的信息,我们在学习前先创建一个文本大文件是为了方便后面的举例😁,我们再将这些信息存入output.txt文件中,文件大小从0变为1788895:


more指令

语法:more [选项][文件]

功能 打满一屏幕就停下,用户可以使用回车逐行向下查看
常用选项
  • -n:显示行号(但一般都是会自动显示)
  • q 退出

注意事项:

打满一个屏幕就停下,用户可以使用回车逐行向下查看剩余信息:

        但是,如果我们想要查看第9999行的信息,也要按好久的回车且不能使用上下箭头来回上下翻看,所以我们并不推荐使用more指令来查看大文本文件,我们更推荐使用less指令来查看大文本文件 


less指令

语法:less [选项][文件]

功能 打满一屏幕就停下,用户可以使用箭头上下来回翻看
常用选项
  • -i:忽略搜索时的大小写
  • -N/n:显示每行的行号
  • /字符串:向下搜索字符串的功能
  • ?字符串:向上搜索字符串的功能
  • n:重复前一个搜索(与 /  ? 有关)
  • N:反向重复前一个搜索(与 /  ? 有关)
  • q:退出

实际效果与选项内容不再展示,可以自行实践


head指令

语法:head [-参数] [文件]

功能默认查看文本文件的前十行内容,可以通过调整参数来扩大或缩小查看范围

常用选项:

  • -n<行数显示行数

注意事项:

1、参数前记得加上-


tail指令

语法:tail [-参数] [选项] [文件]

功能 默认查看文本文件的后十行内容,可以通过调整参数来扩大或缩小查看范围
常用选项:
  • -f 循环读取
  • -n<行数显示行数
注意事项:
1、参数前记得加上-

那么如何查看文件的中间内容呢?🙄


查看文件中间的内容

利用输出重定向实现

1、将文件前五万行信息输出至新建的临时文件new.txt

2、利用tail读取new.txt中倒数后十行的内容

缺点:需要创建临时文件

利用管道“ | ”实现

wc指令

语法:wc [选项] 文件名

功能:统计文件或标准输入中的字节数、单词数和行数

常用选项:

  • -l:只显示行数
  • -w:只显示单词数
  • -c:只显示字节数

常见的使用方式:

1、wc -l 文件名,查看当前文件的行数

2、wc -w 文件名,查看当前文件的单词数

3、wc -c 文件名:查看当前文件的字节数

一种特殊机制:管道 |

语法:命令1 | 命令2 | ...

功能:将一个命令的输出结果直接传递给另一个命令作为输入

常见使用方式:

1、与wc -l 文件名指令配合查找文件的中间部分内容

2、Linux中多条指令可以利用管道进行级联

3、查看文本文件末尾与less指令级联

4、级联(Cascading)是指将多个操作或组件连接在一起形成一个连续的序列,使得每个操作的输出作为下一个操作的输入。这种连接可以形成复杂而强大的功能和流程。

~over~

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

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

相关文章

大数据基础设施搭建 - Hive

文章目录 一、上传压缩包二、解压压缩包三、配置环境变量四、初始化元数据库4.1 配置MySQL地址4.2 拷贝MySQL驱动4.3 初始化元数据库4.3.1 创建数据库4.3.2 初始化元数据库 五、启动元数据服务metastore5.1 修改配置文件5.2 启动/关闭metastore服务 六、启动hiveserver2服务6.1…

Docker搭建个人网盘NextCloud并接入雨云对象存储的教程

雨云服务器使用Docker搭建私有云盘NextCloud并接入雨云对象存储ROS的教程。 NextCloud简介 NextCloud由原ownCloud联合创始人Frank Karlitschek创建的&#xff0c;继承原ownCloud的核心技术又有不少的创新。在功能上NextCloud和ownCloud差不多&#xff0c;甚至还要丰富一些&a…

从微软Cosmos DB浅谈一致性模型

最近回顾了微软的Cosmos DB的提供一致性级别&#xff0c;重新整理下一致性模型的相关内容。 0. Cosmos DB Cosmos DB&#xff08;Azure Cosmos DB&#xff09;是由微软推出的一个支持多模型、多 API 的全球分布式数据库服务。它旨在提供高度可扩展性、低延迟、强一致性和全球…

Vite -构建优化 - 分包策略 + 打包压缩

什么是分包策略 分包策略 就是把不会常规更新的文件&#xff0c;单独打包处理。问 &#xff1a;什么是不会常规更新的文件&#xff1f; 答 &#xff1a; 就是基本上不会改的文件&#xff0c;比如我们引入的第三方的依赖包&#xff0c;例如 lodash工具包&#xff0c;这些工具包…

AI算法中的模型量化岗是做什么的

今天介绍一个在 AI 算法领域比较常见而且很重要的岗位——模型量化岗。 按惯例&#xff0c;先从某聘上截图一个量化工程师的招聘信息。 只看与量化相关的词&#xff0c;基本涉及到了量化精度、模型结构、算法这些关键词&#xff0c;下面来介绍一下这个岗位。 1、先看下什么是模…

An example of a function uniformly continuous on R but not Lipschitz continuous

See https://math.stackexchange.com/questions/69457/an-example-of-a-function-uniformly-continuous-on-mathbbr-but-not-lipschitz?noredirect1

五大自动化测试的 Python 框架

1、Selenium: Selenium 是一个广泛使用的自动化测试框架&#xff0c;用于测试Web应用程序。它支持多种浏览器&#xff0c;并通过模拟用户在浏览器中的操作来进行测试。Selenium 的 Python 客户端库是 Selenium WebDriver&#xff0c;它提供了一组API来编写测试脚本&#xff0c…

ElasticSearch02

ElasticSearch客户端操作 ElasticSearch 版本&#xff1a;7.8 学习视频&#xff1a;尚硅谷 笔记&#xff1a;https://zgtsky.top/ 实际开发中&#xff0c;主要有三种方式可以作为elasticsearch服务的客户端&#xff1a; 第一种&#xff0c;使用elasticsearch提供的Restful接口…

前端学习--React(4)路由

一、认识ReactRouter 一个路径path对应一个组件component&#xff0c;当我们在浏览器中访问一个path&#xff0c;对应的组件会在页面进行渲染 创建路由项目 // 创建项目 npx create router-demo// 安装路由依赖包 npm i react-router-dom// 启动项目 npm run start 简单的路…

小程序项目:springboot+vue基本微信小程序的电子书阅读器小程序

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

ArcGIS制作广场游客聚集状态及密度图

文章目录 一、加载实验数据二、平均最近邻法介绍1. 平均最近邻工具2. 广场游客聚集状态3. 结果分析三、游客密度制图一、加载实验数据 二、平均最近邻法介绍 1. 平均最近邻工具 “平均最近邻”工具将返回五个值:“平均观测距离”、“预期平均距离”、“最近邻指数”、z 得分和…

黑马点评Redis笔记

黑马点评Redis笔记 Redis基础篇&#xff1a;https://cyborg2077.github.io/2022/10/21/RedisBasic/ Redis实战篇&#xff1a;https://cyborg2077.github.io/2022/10/22/RedisPractice/ 一、手机号验证码注册登录 RandomUtil 生成定长随机数列 String code RandomUtil.ran…

4.一维数组——用数组处理求Fibonacci数列前20项

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、结果显示 前言 本系列为一维数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 用数组处理求Fibonacci数列前20项 二、题目分析 前两项&#xff1a;f[20]{1,1} 后18项&#xff1a;for(…

2022年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2022 年全国硕士研究生入学统一考试管理类专业学位联考数学试题一、问题求解&#xff1a;第 1∼15 小题&#xff0c;每小题 3 分&#xff0c;共 45 分。下列每题给出的 A、B、C、D、E 五个选项中&#xff0c;只有一项是符合试题要求的&#xff0c;请在答&#xff0e;题…

1panel在应用商店里面安装jenkins

文章目录 目录 文章目录 前言 一、使用步骤 1.1 填写安装参数 1.2 在界面中进入容器拿到自动生成的jenkins密码 前言 一、使用步骤 1.1 填写安装参数 在应用商店里面搜索jenkins,然后点击安装 填写参数 1.2 在界面中进入容器拿到自动生成的jenkins密码 命令 cat /var/jenki…

Go 本地搭建playground

搭建go playground 的步骤 1、安装docker 如果你使用的Ubuntu&#xff0c;docker的安装步骤可以参见这里&#xff0c;这是我之前写的在Ubuntu18.04下安装fabric&#xff0c;其中有docker的安装步骤&#xff0c;这里就不再赘述了。 CentOS下安装docker的&#xff0c;可以参见…

《数据结构、算法与应用C++语言描述》-二叉树与其他树-二叉树的C++实现-设置信号放大器与并查集问题

二叉树和其他树 可编译运行程序见&#xff1a;Github::Jasmine-up/Data-Structures-Algorithms-and-Applications/_23BinaryTree 定义 树 定义 11-1 一棵树 t是一个非空的有限元素的集合&#xff0c;其中一个元素为根&#xff08;root&#xff09;&#xff0c;其余的元素&a…

04_MySQL备份与恢复

任务背景 一、真实案例 某天&#xff0c;公司领导安排刚入职不久的小冯同学将生产环境中的数据(MySQL数据库)全部导入到测试环境给测试人员使用。当小冯去拿备份数据时发现&#xff0c;备份数据是1个礼拜之前的。原因是之前运维同事通过脚本每天对数据库进行备份&#xff0c;…

51单片机蜂鸣器发出悦耳的声音

51单片机蜂鸣器发出悦耳的声音 1.概述 这篇文章介绍单片机控制蜂鸣器入门小实验&#xff0c;通过该实验掌握蜂鸣器发声的原理&#xff0c;控制声音发出我们想听的音乐。 2.蜂鸣器发声 2.1.硬件原理 1.蜂鸣器正极接单片机20号引脚VCC&#xff0c;负极接19号引脚P1.7 2.20MH…

【数据处理】 -- 【两分钟】了解【最好】的方式 -- 【正则表达式】

直接匹配&#xff1b; 普通字符 元匹配&#xff1a; . 任意单字符 r’表示单引号里字符为其特殊含义&#xff0c;比如.不是句号是匹配符的意思 *任意次数&#xff08;换行结束&#xff09; 一次及以上 {3,4}指定次数,至少3次&#xff0c;最多4次|{3}固定4次 [\d.]单个任意…