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.hqwc.cn/news/221282.html

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

相关文章

Linux进程管理,用户管理,文件压缩命令

gcc与g区别(补充了解): 比如有两个文件:main.c,mainc.cpp(分别用C语言和C语言写的)如果要用gcc编译呢? gcc -o mainc main.c gcc -o mainc mainc.cpp -lstdc 指明用c的标准库; 区别一: gcc默认只链接C库,并不会链接C的库;g会默认链接c标准库. 区别二: gcc编译.c文件,则按照C语…

防火墙命令行基础配置实验(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求3. 当前配置3.1 PC配置3.2 FW配置&#xff08;防火墙&#xff09;[^7][^8]3.2.1 FW1配置3.2.2 FW2配置 3.3 R配置3.3.1 R1配置3.3.2 R2配置 3.4 SW配置3.4.1 SW1配置3.4.2 SW2配置3.4.3 SW3配置…

【Python】使用globals()函数成功解决tkinter多个新窗口问题

我在近期的一个项目&#xff08;tkinter复刻记事本&#xff09;里遇到一个棘手的问题&#xff1a;如何在创建多个新窗口后&#xff0c;每个窗口还能独立运行。当时我尝试如何去解决&#xff0c;但是无果&#xff0c;于是觉得非要使用线程不可&#xff0c;便留了一个坑。直到今天…

从0开始学习JavaScript--JavaScript中的对象原型

JavaScript中的对象原型是理解该语言核心概念的关键之一。本文将深入探讨JavaScript对象原型的作用、使用方法以及与继承相关的重要概念。通过详细的示例代码和全面的讲解&#xff0c;将能够更好地理解和运用JavaScript对象原型&#xff0c;提高代码的可维护性和扩展性。 Java…

rust tokio select!宏详解

rust tokio select!宏详解 简介 本文介绍Tokio中select!的用法&#xff0c;重点是使用过程中可能遇到的问题&#xff0c;比如阻塞问题、优先级问题、cancel safe问题。在Tokio 中&#xff0c;select! 是一个宏&#xff0c;用于同时等待多个异步任务&#xff0c;并在其中任意一…

一、Lua基础

文章目录 一、Lua是什么二、Lua特性&#xff08;一&#xff09;轻量级&#xff08;二&#xff09;可扩展&#xff08;三&#xff09;其它特性 三、Lua安装四、Lua应用 看到评论说&#xff0c;C让我见识了语言的严谨与缜密&#xff0c;lua让我见识到了语言的精巧与创新&#xff…

最新AI创作系统ChatGPT系统运营源码+DALL-E3文生图+支持OpenAI-GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

C语言实现万年历(附代码) 小白完成的第一个C语言程序,希望大家多多关注,点赞

C语言实现万年历 前言&#xff1a;本文章向大家介绍如何使用C语言代码实现万年历使用实例&#xff0c;讲解编写万年历的方法&#xff0c;教你轻松学会写出万年历。这个小程序算是我自己写的第一个比较完整的小程序&#xff0c;算是对大一上学期学习的C语言程序设计基础的一个总…

Flask学习二:项目拆分、请求与响应、cookie

教程 教程地址&#xff1a; 千锋教育Flask2框架从入门到精通&#xff0c;Python全栈开发必备教程 老师讲的很好&#xff0c;可以看一下。 项目拆分 项目结构 在项目根目录下&#xff0c;创建一个App目录&#xff0c;这是项目下的一个应用&#xff0c;应该类似于后端的微服…

一般将来时

一般将来时 概念 表示将要发生的动作或打算、计划准备做某事 时间 tomorrow 明天 the day after tomorrow 后天 next week 下周 next weekend 下周末 next month 下个月 next year 明年 ...句子结构 主语 be&#xff08;am/is/are&#xff09;going to do … 计划,…

类与对象(下)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX&#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&a…

windows下docker环境搭建与运行实战

背景 学习docker使用&#xff0c;需要环境&#xff0c;今天主要的目标是在windows环境下安装docker环境。 为什么要这么搞&#xff0c;主要是企业内部服务器&#xff0c;都是跟公网隔离的&#xff0c;没有访问公网权限&#xff0c;所以镜像什么的&#xff0c;从公网拉取完全没…