Linux的基本指令(三)

news2024/11/25 16:52:19

目录

前言

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.coloradmin.cn/o/1255425.html

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

相关文章

在Linux环境如何启动和redis数据库?

Linux中连接redis数据库&#xff1a; 前台启动&#xff1a; 第一步&#xff1a;redis-server:服务器启动命令 当我们启动改窗口后&#xff0c;出现如下所示&#xff1a; 该窗口就不能关闭&#xff0c;否则会出现redis无法使用的情况&#xff0c;重新打开一个窗口&#xff0c…

每日一题2023.11.26——打印沙漏【PTA】

题目要求&#xff1a; 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符号数差2&#xff1b;…

数据结构—树

文章目录 9.树(1).树的基本概念#1.基本定义#2.树的广义表表示法#3.基本术语 (2).树的存储结构#1.标准形式(常用)#2.逆存储形式#3.孩子兄弟存储法 (3).并查集#1.我们到底想解决什么问题#2.并查集结点#2.Find(查)#3.Union(并)#4.例子 (4).树的遍历#1.前序遍历#2.后序遍历#3.遍历的…

[Linux]进程等待

文章目录 3.进程等待3.1什么是进程等待3.2为什么要进程等待3.3如何进行进程等待?1.wait2.waitpid2.1函数的讲解2.2status的理解2.3代码理解 3.4学后而思1.直接用全局变量获取子进程退出码可以吗?如下2.进程具有独立性 退出码是子进程的数据 父进程是如何拿到退出码的3.对内存…

3DCAT为华东师大设计学院打造元宇宙数字虚拟学院

6月11日&#xff0c;华东师范大学设计学院在chi K11美术馆举办了一场别开生面的 2023 年本科毕业设计暨项目实践教学现场演示展。其中&#xff0c;元宇宙数字虚拟学院&#xff08;一期&#xff09;的现场发布会引起了现场震撼&#xff0c;吸引了众多观众的目光和参与。 该元宇宙…

CSS清除浮动的八种方法

我们为什么需要清除浮动&#xff0c;如果我们不清除浮动会发生什么呢&#xff1f; 基础样式&#xff0c;没清除浮动之前代码&#xff1a; 可复制也可以自己手动布局&#xff0c;后可尝试使用下面介绍的方法练习清除浮动 <!DOCTYPE html> <html lang"en">…

Python中的下划线使用教程:单下划线、双下划线和头尾双下划线详解

概要 Python是一种简单、易学、功能强大的编程语言&#xff0c;被广泛应用于各种领域。在Python中&#xff0c;下划线的使用有其特殊的含义和用途。本文将详细介绍Python中的单下划线、双下划线和头尾双下划线的使用教程&#xff0c;帮助读者更好地理解和应用这些特性。 一、单…

如何在Ubuntu系统上安装YApi

简单介绍 YApi是高效、易用、功能强大的api管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护API&#xff0c;YApi还为用户提供了优秀的交互体验&#xff0c;开发人员只需利用平台提供的接口数据写入工具以及简单的…

会声会影2024中文旗舰版配置最低要求及会声会影2024旗舰版新增哪些新功能?

会声会影&#xff08;Corel VideoStudio&#xff09;2024旗舰版为加拿大Corel公司发布的一款功能丰富的视频编辑软件。会声会影2024简单易用&#xff0c;具有史无前例的强大功能&#xff0c;拖放式标题、转场、覆叠和滤镜&#xff0c;色彩分级、动态分屏视频和新增强的遮罩创建…

什么是客户自助服务?综合指南献上~

《哈佛商业评论》曾报道过&#xff0c;81%的消费者在找客服之前会自己先去找办法解决。 如今&#xff0c;客户希望得到更快的响应。他们不想排队去等信息。他们想要的只是一个更快、更可靠的自助服务解决方案。作为企业&#xff0c;应该注意到他们的期望。企业需要做的就是通过…

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

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

Gee教程2.上下文Context

先来看看Gin框架的简单例子 func main() {engine : gin.Default()engine.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "hello World!")})//监听并启动服务&#xff0c;默认 http://localhost:8080/engine.Run() }//我们自己写的 func main()…

PRD学习

产品经理零基础入门&#xff08;五&#xff09;产品需求文档PRD&#xff08;全16集&#xff09;_哔哩哔哩_bilibili 1. PRD的2种表现形式 ① RP格式 &#xff08;1&#xff09;全局说明 ② 文档格式 2. 交互说明撰写 ① 维度 ② 步骤 ③ 规则 &#xff08;1&#xff09;单位…

通达信视频教程的下载地址

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/12yNV62ROERRzmyqm9u22aQ?pwdgmdx

Leetcode 1727. 具有重排的最大子矩阵

题目要求&#xff1a; 给定一个大小为 m x n 的二进制矩阵&#xff0c;并且允许您以任意顺序重新排列矩阵的列。 对列进行最佳重新排序后&#xff0c;返回矩阵中每个元素都为 1 的最大子矩阵的面积。 输入&#xff1a;矩阵 [[0,0,1],[1,1,1],[1,0,1]] 输出&#xff1a;4 说明…

2017年五一杯数学建模B题自媒体时代的消息传播问题解题全过程文档及程序

2017年五一杯数学建模 B题 自媒体时代的消息传播问题 原题再现 电视剧《人民的名义》中人物侯亮平说&#xff1a;“现在是自媒体时代&#xff0c;任何突发性事件几分钟就传播到全世界。”相对于传统媒体&#xff0c;以互联网技术为基础的自媒体以其信息传播的即时性、交往方式…

x大网校登录接口js逆向分析

网站&#xff1a; import base64 # 解码 result base64.b64decode(aHR0cHM6Ly91c2VyLndhbmd4aWFvLmNuL2xvZ2lu.encode(utf-8)) websiteresult.decode(utf-8) # print(result) print(website)思路&#xff1a; 模拟登录&#xff0c;得到token值&#xff0c;才能对内部数据进行…

【YOLOv5入门】目标检测

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍YOLOv5入门-目标检测的任务、性能指标、yolo算法基本思想、yolov5网络架构图。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下吧】 上一篇…

利用 LD_PRELOAD 环境变量

文章目录 原理LD_PRELOAD介绍如何上传.so文件 例题 [虎符CTF 2022]ezphp 原理 LD_PRELOAD介绍 LD_PRELOAD是Linux系统的一个环境变量&#xff0c;它可以影响程序的运行时的链接&#xff08;Runtime linker&#xff09;&#xff0c;它允许你定义在程序运行前优先加载的动态链接…

系列十九、Spring实例化bean的方式

一、概述 所谓实例化bean&#xff0c;大白话讲就是Spring如何把这一个个的普通的Java对象创建为Spring bean的。 二、方式 Spring中实例化bean常用的有以下四种&#xff0c;即&#xff1a; ① 构造器方式&#xff1b; ② 静态工厂方式&#xff1b; ③ 实例工厂方式&#xff1b;…