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~

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

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

相关文章

python树的孩子链存储结构

树的孩子链存储结构是一种树的存储方式&#xff0c;它使用孩子兄弟表示法来表示树的结构。在这种存储结构中&#xff0c;树的每个节点都有一个指向其第一个孩子的指针和一个指向其下一个兄弟的指针。这样&#xff0c;可以通过这些指针来表示树的层次结构和节点之间的关系。 具…

大公司为什么喜欢centos系统写爬虫?

CentOS是一个基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源代码构建的开源操作系统&#xff0c;它受到大企业喜欢大多数因为他系统的稳定性&#xff0c;安全性以及兼容性等。可以为企业提供更多的商业支持。以我个人为例&#xff0c;公司在做爬虫数据抓取多是采…

Vue 双向数据绑定

之前通过v-bind来完成的数据绑定&#xff0c;属性值和表达式进行绑定&#xff0c;表达式的值发生变化了属性值也跟着发生变化。 单向数据绑定&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>首页</titl…

信息素养大赛知识点

基础理论准备 开放存储期刊 开放存取期刊是一种免费的网络期刊&#xff0c;旨在使所有用户都可以通过因特网无限制地访问期刊论文全文。此种期刊一般采用作者付费出版、读者免费获得、无限制使用的运作模式&#xff0c;论文版权由作者保留。在论文质量控制方面&#xff0c;oa…

Couchdb 命令执行漏洞复现 (CVE-2017-12636)

Couchdb 命令执行漏洞复现 &#xff08;CVE-2017-12636&#xff09; 1、下载couchdb.py 2、修改目标和反弹地址 3、Python3调用执行即可 couchdb.py文件下载地址: https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py ‍ 在VULFocus上开启环境 …

虚拟内存的基本概念

文章目录 虚拟内存虚拟地址空间(其他 Unix 系统的设计也与此类似)。程序代码和数据堆共享库栈内核虚拟内存 参考 虚拟内存 虚拟内存是一个抽象概念&#xff0c;它为每个进程提供了一个假象&#xff0c;即每个进程都在独占地使用主存。每个进程看到的内存都是一致的&#xff0c…

城市安全守护者:分析无人机在交通领域的应用

随着科技的进步&#xff0c;无人机在交通领域的应用不断增加&#xff0c;为智慧交通管理提供了新便利。无人机凭借其灵活性&#xff0c;在违章取证、交通事故侦查、交通疏导等方面展现出巨大的应用潜力。无人机在交通领域的应用有哪些&#xff1f;跟着我们一探究竟。 1、违章取…

iOS移动应用程序的备案与SHA-1值查看

​ 目录 &#x1f4dd;iOS移动应用程序的备案与SHA-1值查看 引言 第一部分&#xff1a;App备案 第二部分&#xff1a;查看SHA-1值 引言 在开发和发布移动应用程序时&#xff0c;进行App备案是非常重要的一步&#xff0c;它是确保您的应用在合规性方面符合相关法规的过程。…

STM32入门

写在前面&#xff1a;本文是基于哔哩哔哩江协科技的STM32入门教程-2023版 细致讲解 中文字幕学习时写的笔记&#xff0c;复习查阅方便&#xff0c;如有侵权&#xff0c;联系删除。 另外本人也是初学者&#xff0c;有很多理解不透彻的或者错误的理解&#xff0c;希望大家多多批评…

JVM——垃圾回收算法(垃圾回收算法评价标准,四种垃圾回收算法)

目录 1.垃圾回收算法发展简介2.垃圾回收算法的评价标准1.吞吐量2.最大暂停时间3.堆使用效率 3.垃圾回收算法01-标记清除算法垃圾回收算法-标记清除算法的优缺点 4.垃圾回收算法02-复制算法垃圾回收算法-复制算法的优缺点 5.垃圾回收算法03-标记整理算法标记整理算法的优缺点 6.…

基于C#实现鸡尾酒排序(双向冒泡排序)

通俗易懂点的话&#xff0c;就叫“双向冒泡排序”。 冒泡是一个单向的从小到大或者从大到小的交换排序&#xff0c;而鸡尾酒排序是双向的&#xff0c;从一端进行从小到大排序&#xff0c;从另一端进行从大到小排序。 从图中可以看到&#xff0c;第一次正向比较&#xff0c;我们…

第二证券:煤炭板块震荡走高 潞安环能、晋控煤业涨超5%

证券时报网讯&#xff0c;煤炭板块27日盘中发力走高&#xff0c;到发稿&#xff0c;潞安环能、晋控煤业涨超5%&#xff0c;平煤股份、山西焦煤涨逾3%&#xff0c;恒源煤电、开滦股份等上扬。 职业方面&#xff0c;近期寒潮来袭&#xff0c;气温下降带动居民用电需求增加&#…

操作系统——解决了我的一些困惑

目录 1、电脑开机做了什么事情 2、真正实现并行的计算机 3、计算机中的淘汰算法 & 分配算法 & 调度算法 & 空间管理 4、什么是虚拟内存&#xff1f;为什么需要虚拟内存&#xff1f;最多可分配多少&#xff1f; 5、TLB&#xff08;快表&#xff09;、分页存储&…

TechSmith Camtasia2024中文版简单好用的视频处理软件

TechSmith Camtasia 2024中文版是由techsmith公司推出的一款简单好用的视频处理软件&#xff0c;它集视频录制与视频后期处理为一体&#xff0c;用户可以使用软件来进行屏幕录制&#xff0c;其中包括了影像、音效、鼠标移动的轨迹、解说声音等任何模式下的电脑屏幕状态&#xf…

【LeetCode:907. 子数组的最小值之和 | 贡献法 乘法原理 单调栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

王者荣耀小游戏

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.…

uni-app:心跳机制基础逻辑(定时器方法解决)

思路 1、在登录的时候&#xff0c;定义一个存储当前时间的全局变量&#xff0c;并且开始心跳请求 2、在全局中定义一个定时器&#xff0c;该定时器每秒都会执行一次&#xff0c;并获取当前的时间 3、将定时器每秒的获取的当前时间和全局变量获取的时间进行比较 4、指定一个…

ShardingSphere-JDBC 入门教程(v4.1.1)

框架介绍 ShardingSphere-JDBC 定位为轻量级 Java 框架&#xff0c;在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库&#xff0c;以 jar 包形式提供服务&#xff0c;无需额外部署和依赖&#xff0c;可理解为增强版的 JDBC 驱动&#xff0c;完全兼容 JDBC 和各种 OR…

SSRF漏洞防御:黑白名单的编写

SSRF漏洞防御:黑白名单的编写 以pikachu靶场中SSRF(crul)为例 我们可以看到未做任何防御 我们查看源代码 黑名单的制作 思路: 什么内容不能访问 构造代码 $xyarray("file" > "","http" > "","https" > …