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~
相关文章:

Linux的基本指令(三)
目录 前言 echo指令(简述) Linux的设计理念 输出重定向操作符 > 追加输出重定向操作符 >> 输入重定向操作符 < 补充知识 学前补充 more指令 less指令 head指令 tail指令 查看文件中间的内容 利用输出重定向实现 利用管道“ |…...

使用python 实现华为设备的SFTP文件传输
实验目的: 公司有一台CE12800的设备,管理地址位172.16.1.2,现在需要编写自动化脚本,通过SFTP实现简单的上传下载操作。 实验拓扑: 实验步骤: 步骤1:将本地电脑和ensp的设备进行桥接ÿ…...
高防cdn防护原理是什么,是否可以防护服务器吗
随着互联网业务的迅速发展,网络安全问题日益凸显。在这样的背景下,高防CDN作为一种有效的网络安全解决方案,受到了越来越多的关注。那么高防CDN的防护原理是什么呢?接下来就跟小德一起深入了解下吧! 1. 高防CDN的基本概念 我们要明确什么是…...
SELinux零知识学习三十五、SELinux策略语言之角色和用户(6)
接前一篇文章:SELinux零知识学习三十四、SELinux策略语言之角色和用户(5) 三、SELinux策略语言之角色和用户 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux…...
初学Flink 学后总结
最近开始学习Flink,一边学习一边记录,以下是基于【尚硅谷】Flink1.13实战教程总结的笔记,方便后面温习 目录 初始 Flink 一:基础概念 1.Flink是什么 2.Flink主要应用场景...
CSS新手入门笔记整理:CSS基本介绍
CSS,指的是“Cascading Style Sheet(层叠样式表)”,用于控制网页外观。 CSS引入方式 外部样式表 独立建立一个.CSS文件,在HTML中使用 link标签 来引用CSS文件。link标签放置在head标签内部。 语法 <link rel&qu…...
【华为OD】B\C卷真题 100%通过:需要打开多少监控器 C/C++实现
【华为OD】B\C卷真题 100%通过:需要打开多少监控器 C/C实现 目录 题目描述: 示例1 代码实现: 题目描述: 某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个…...

HarmonyOS开发(七):构建丰富页面
1、组件状态管理 1.1、概述 在应用中,界面一般都是动态的。界面会根据不同状态展示不一样的效果。 ArkUI作为一种声明式UI,具有状态驱动UI更新的特点,当用户进行界面交互或有外部事件引起状态改变时,状态的变会会触发组件的自动…...
LuatOS-SOC接口文档(air780E)--rsa - RSA加密解密
示例 -- 请在电脑上生成私钥和公钥, 当前最高支持4096bit, 一般来说2048bit就够用了 -- openssl genrsa -out privkey.pem 2048 -- openssl rsa -in privkey.pem -pubout -out public.pem -- privkey.pem 是私钥, public.pem 是公钥 -- 私钥用于 加密 和 签名, 通常保密, 放在…...

简易版王者荣耀
所有包和类 GameFrame类 package newKingOfHonor;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;im…...
功能测试进阶建议,学习思路讲解
1. 深入了解测试理论: 了解测试的原理、方法和最佳实践,包括黑盒测试、白盒测试、灰盒测试等。可以阅读相关的书籍或参加在线课程。 2. 学习相关测试工具: 掌握常用的测试工具,如缺陷发现工具、性能测试工具、安全测试工具等。可以…...
AI数字人与虚拟人:区别与应用场景
随着人工智能和虚拟技术的不断发展,AI数字人和虚拟人成为了数字世界中的两个重要概念。本文将介绍AI数字人和虚拟人的区别,并探讨它们在不同领域的应用场景。 一、AI数字人与虚拟人的区别 定义和概念: AI数字人:是利用人工智能技术…...

金蝶Apusic应用服务器 任意文件上传漏洞复现
0x01 产品简介 金蝶Apusic应用服务器(Apusic Application Server,AAS)是一款标准、安全、高效、集成并具丰富功能的企业级应用服务器软件,全面支持JakartaEE8/9的技术规范,提供满足该规范的Web容器、EJB容器以及WebSer…...

ElasticSearch学习笔记(狂神说)
ElasticSearch学习笔记(狂神说) 视频地址:https://www.bilibili.com/video/BV17a4y1x7zq 在学习ElasticSearch之前,先简单了解一下Lucene: Doug Cutting开发是apache软件基金会 jakarta项目组的一个子项目是一个开放…...

OpenMMlab导出yolox模型并用onnxruntime和tensorrt推理
导出onnx文件 直接使用脚本 import torch from mmdet.apis import init_detector, inference_detectorconfig_file ./configs/yolox/yolox_tiny_8xb8-300e_coco.py checkpoint_file yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth model init_detector(config_fi…...

CMake语法解读 | Qt6需要用到
CMake 入门CMakeLists.txtmain.cpp编译示例cmake常用参数入门 Hello CMake CMake 是一个用于配置跨平台源代码项目应该如何配置的工具建立在给定的平台上。 ├── CMakeLists.txt # 希望运行的 CMake命令 ├── main.cpp # 带有main 的源文件 ├── include # 头文件目录 …...

jenkins 参数构建
整体思路 依赖环境及工具 GitCentos7及以上GitlabJenkinsshellansible 创建一个jenkins项目 应用保存,测试构建 在gitlab创建新项目,编写index.html [rootjenkins-node1 .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in …...

DBT踩坑第二弹
总结下dbt-spark踩到的坑,连接方式采用的是thrift连接 Kerberos认证。考虑到开源组件Kyuubi也是基于Hiveserver2,使用的thrift协议,所以采用Kyuubi执行SparkSQL。 官方文档给出的Thrift方式连接示例真的是简单,但是真是用起来真是…...
elasticsearch Connection reset by peer如何处理
如何处理: 代码的心跳代码删除,服务linux内核参数修改 客户端时间要小于服务端时间#异常代码 public RestHighLevelClient elasticsearchClient() {// 初始化 RestClient, hostName 和 port 填写集群的内网 IP 地址与端口 // String[] hosts nod…...

IO和NIO的区别 BIO,NIO,AIO 有什么区别? Files的常用方法都有哪些?
文章目录 IO和NIO的区别BIO,NIO,AIO 有什么区别?Files的常用方法都有哪些? 今天来对java中的io, nio, bio, aio进行了解,有何区别。 IO和NIO的区别 NIO与IO区别 IO是面向流的,NIO是面向缓冲区的Java IO面向流意味着每次从流中读一个或多个字…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
【大厂机试题+算法可视化】最长的指定瑕疵度的元音子串
题目 开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如: “a” 、 “aa”是元音字符串,其瑕疵度都为0 “aiur”不是元音字符串(结尾不是元音字符) “…...
Amazon RDS on AWS Outposts:解锁本地化云数据库的混合云新体验
在混合云架构成为企业数字化转型标配的今天,如何在本地数据中心享受云数据库的强大能力,同时满足数据本地化、低延迟访问的严苛需求?Amazon RDS on AWS Outposts 给出了完美答案——将AWS完全托管的云数据库服务无缝延伸至您的机房࿰…...