【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?

news2024/9/26 1:26:54

  欢迎来到 CILMY23 的博客

🏆本篇主题为:一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?

🏆个人主页:CILMY23-CSDN博客

🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营

🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注


前言:

本期是Linux的番外第二篇,主要讲述Linux中重定向的概念,我们会从输出重定向详细介绍,最后进行总结。


重定向

在了解重定向之前,我们先了解一个指令 ------ echo

echo 是一个非常基础且常用的 Linux 命令,它的作用是将文本内容输出到终端。

💫💫指令:echo

💫💫功能:将文本内容输出到终端

我们举个例子就明白了:

在终端上,我输入echo,可以将我后面的字符串打印到屏幕上。

 echo 最经常使用的就是输出命令。

那我们看下面一段指令:

利用 cat 输出我们的 aaa.txt 

我们可以发现 hello Ubuntu 被放到文件中了。

实际上:我们把一个指令,接内容加大于号,的这个操作叫做输出重定向

什么是重定向?

在 Linux 系统中,重定向是一种强大的工具,它允许你控制命令的输入和输出数据流,将数据从一个地方转移到另一个地方,从而实现更灵活的操作。

说白了,重定向就是改变了数据的方向

标准输入、标准输出和标准错误:数据流的源头和目的地

在 Linux 中,每个程序都有三个默认的标准文件流:

  • 标准输入 (stdin):默认情况下,程序从键盘接收输入。你可以想象它像一个打开的管道,程序通过这个管道接收用户的输入。
  • 标准输出 (stdout):默认情况下,程序将输出显示到终端。它就像另一个管道,程序将处理结果通过这个管道输出到屏幕上。
  • 标准错误 (stderr):默认情况下,程序将错误信息显示到终端。它是一个专门用于输出错误信息的管道,方便用户排查问题。

重定向符号:改变数据流的方向

Linux 提供了一系列重定向符号,让你可以改变数据流的方向,将数据从一个地方转移到另一个地方。

符号描述示例
>将标准输出重定向到文件ls >log.txt (将 ls 命令的输出写入 file.txt 文件) 
>>将标准输出追加到文件cat myfile.txt >> file.txt (将 myfile.txt 的内容追加到 file.txt 文件) 
<将标准输入重定向到文件sort < file.txt (从 file.txt 文件读取内容作为 sort 命令的输入)
2>将标准错误重定向到文件ls -l non-existent-file 2> error.log (将 ls 命令的错误信息写入 error.log 文件)
2>>将标准错误追加到文件command 2>> error.log (将 command 命令的错误信息追加到 error.log 文件)
&>将标准输出和标准错误重定向到同一个文件ls -l &> output.log (将 ls 命令的正常输出和错误信息都写入 output.log 文件)
&>>将标准输出和标准错误追加到同一个文件command &>> output.log (将 command 命令的正常输出和错误信息都追加到 output.log 文件)

输出重定向

我们重点先关注第一个,输出重定向 

我们重新写一个例子感受一下输出重定向 > 的作用

 首先我利用 pwd,查看我们当前所处目录,这里我忘记用 ls 打印当前文件了,不过这里是没有 aa.txt 的,然后我们使用了输出重定向来,把本应该输出到屏幕上的 hello world 输出到了 aa.txt 文件,接着我们可以看到目录下多了一个 aa.txt ,并且里面的内容还多了 hello world 。

然后我再重复同样操作,但是这次的字符串变成了 hello cilmy23 ,我们可以看到除了内容不一样以外,其余跟其他一样。

所以我们可以总结出输出重定向的作用

  1.  没有文件,创建文件
  2. 将本来应该输出到屏幕上的数据,输出到文件中

那它是否有清除文件内容的功能呢? 

我们接着来验证一下:

这次我什么数据都没输入,发现文件中的内容清空了。因此我们可以得出下面三条结论。

  1. 没有文件,创建文件
  2. 可以清空文件内容
  3. 将本来应该输出到屏幕上的数据,输出到文件中

所以,我们除了可以使用 touch 来创建文件,也可以利用输出重定向 > 来创建文件。 

Linux理念 

再了解完输出重定向后,我们再来了解一个Linux理念:---- Linux中一切皆文件

什么叫一切皆文件呢?

一切皆文件,是Linux的核心哲学在 Linux 中,几乎所有东西都被抽象成文件,包括:

  • 硬件设备: 键盘、鼠标、硬盘、网卡、打印机等等,都被抽象成特殊类型的文件,例如 /dev/tty 代表终端设备,/dev/sda 代表第一个硬盘。
  • 进程: 每个运行的程序都被视为一个文件,例如 /proc/1234 代表进程 ID 为 1234 的进程。
  • 网络连接: 网络连接也被抽象成文件,例如 /dev/tcp/192.168.1.10/80 代表与 IP 地址为 192.168.1.10 的服务器建立的 80 端口连接。
  • 系统信息: 系统信息,例如系统日志、系统状态、硬件信息等等,也都以文件的形式存储。

这种“一切皆文件” 的理念带来了许多优势

  • 统一性:所有事物都被统一地抽象成文件,简化了操作,使用户可以以相同的方式访问和操作各种资源
  • 灵活性: 通过操作文件,可以对系统或者系统文件进行灵活的配置和管理
  • 可扩展性: 由于所有事物都被抽象成文件,因此可以方便地添加新的设备、进程或其他资源,而无需修改内核代码。
  • 安全性: 通过文件权限控制,可以有效地管理系统资源的访问权限,提高系统安全性。

Linux也就是可以把硬件啊什么的都抽象成文件。这些是Windows系统没有的。它不想让系统变复杂,所以在这些我们大概了解一下,我们后期再补充。

那在这种理念下,显示器算不算文件呢?

答:算的,普通文件和显示器,都可以看作文件。对于任何的文件来讲,最常见的方法就是读文件和写文件

拿键盘举例,我们的键盘,可以看作一个文件,这个文件有两种常用的方法,一个是读方法,一个是写方法,我们可以从键盘中读取我们所需要的内容,说白了就是我们可以通过键盘输入到我们的电脑上,但是我们无法写入到键盘上,所以它的读方法是有的,写方法是没的。

如图所示: 

所以显示器的读方法,和写方法。也可以按照同样的方式去理解,我们无法读取显示器上的东西,但是我们可以向显示器中写入,所以,显示器的读方法视为空,写方法是有具体对应的方法。

总结: 

 

所以上一个知识点的操作,就是把本来应该输出到显示器文件上的数据,改变到磁盘文件中去了。又因为是输出数据,所以是输出重定向。重定向就是重新改变了数据的方向,这就叫做重定向。

补充完Linux理念后,我们继续讲解输出重定向中的东西。

追加重定向

追加重定向是输出重定向的一种特殊形式,它的作用是将数据追加到现有的文件末尾,而不是覆盖原有内容。

例如:

 追加重定向的符号是  >>, 每次重定向都从该文件的结尾进行写入,这种叫追加重定向,每次不断往里新增加内容。

它的作用和输出重定向差不多,但是它没有覆盖原文件的内容。

  1. 没有文件,创建文件
  2. 追加文件内容
  3. 将本来应该输出到屏幕上的数据,输出到文件中

这一块和C语言的文件操作有点类似,感兴趣的朋友可以回顾一下往期

【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】_c语言二进制打开文件-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/sobercq/article/details/136579259

 在文件的末尾,我还放出了一个文件操作的表格,这个输出重定向和里面的 "w" 是相似的。


🛎️感谢各位同伴的支持,本期Linux一篇总结专题就讲解到这啦,下期我们将进入文件篇的指令讲解,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。     

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

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

相关文章

绘制图层的图形全部都在geojson图层之下会被覆盖,同步graphic类型使用说明

### 绘制图层js const graphicLayer new mars3d.layer.GraphicLayer({zIndex: 1000000000000000000000000,hasEdit: false,isAutoEditing: false, // 绘制完成后是否自动激活编辑// addHeight: 1,allowDrillPick: false, }) 绘制方法js graphicLayer.startDraw({type: type,st…

一款免费的Windows 11/10系统常见问题修复工具

FixWin是一款功能强大的Windows系统修复工具&#xff0c;免费便携&#xff0c;无需安装即可使用。FixWin旨在帮助用户解决各种常见的Windows问题。它提供了多种修复选项和故障排除功能&#xff0c;适用于 Windows 11/10。 FixWin 主要功能&#xff1a; 系统文件检查器&#x…

深⼊理解指针(3)

1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 ⼀般使⽤: char* 这两种方式都是把字符串中的首字符的地址赋值给pc。 在这串代码中 str1内容的地…

JVM高级特性

JVM高级特性 内存管理 jvm是自动内存管理的 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些…

基于STM32的智能仓储管理系统教程

目录 引言环境准备智能仓储管理系统基础代码实现&#xff1a;实现智能仓储管理系统 物品识别与追踪模块环境监控模块数据处理与存储模块用户界面与远程管理应用场景&#xff1a;仓储管理与优化常见问题与解决方案收尾与总结 引言 随着电子商务和物流行业的快速发展&#xff…

C++手撕简易vector

提前准备工作 由于vector跟string不同&#xff0c;vector是可以存储不同类型的变量的容器&#xff0c;因此实现类模板是肯定的 在原本的STL的vector容器中&#xff0c;主要成员变量有&#xff0c;start&#xff0c;finish&#xff0c;和 end_of_storage 所以 template<cl…

leetcode 2415.反转二叉树的奇数层

1.题目要求: 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。例如&#xff0c;假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &#xff0c;那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后&#xff0c;返回树的根节点。完美 二叉…

SolverLearner:提升大模型在高度归纳推理的复杂任务性能,使其能够在较少的人为干预下自主学习和适应

SolverLearner&#xff1a;提升大模型在高度归纳推理的复杂任务性能&#xff0c;使其能够在较少的人为干预下自主学习和适应 提出背景归纳推理&#xff08;Inductive Reasoning&#xff09;演绎推理&#xff08;Deductive Reasoning&#xff09;反事实推理&#xff08;Counterf…

npm ERR! missing script: serve

报错原因&#xff1a;我这里是因为跑错命令了&#xff0c;我用的npm run serve 解决办法&#xff1a;去package.json文件里面找到对应的serve命令运行即可&#xff0c;每个系统都不太一样&#xff0c;如果还不行可以看看是不是项目终端搞错了&#xff0c;比如我这个项目有两个前…

行为型设计模式3:模板方法/备忘录/解释器/迭代器

设计模式&#xff1a;模板方法/备忘录/解释器/迭代器 (qq.com)

无需提示的思考链推理:深度探索大型语言模型的内在能力

人工智能咨询培训老师叶梓 转载标明出处 在人工智能领域&#xff0c;提升大模型&#xff08;LLMs&#xff09;的推理能力一直是研究的重点。传统的方法主要依赖于特定的提示技术&#xff0c;例如少量样本或零样本的思考链&#xff08;CoT&#xff09;提示。这些方法虽然有效&am…

力扣爆刷第169天之TOP200五连刷111-115(课程表、单词搜索、归并)

力扣爆刷第169天之TOP200五连刷111-115&#xff08;课程表、单词搜索、归并&#xff09; 文章目录 力扣爆刷第169天之TOP200五连刷111-115&#xff08;课程表、单词搜索、归并&#xff09;一、207. 课程表二、LCR 125. 图书整理 II三、402. 移掉 K 位数字四、79. 单词搜索五、9…

Python自动化办公2.0:重塑工作效率的未来

在现代办公环境中&#xff0c;自动化技术和数据分析已经成为提升工作效率和决策质量的关键。随着Python编程语言的发展&#xff0c;我们迎来了“Python自动化办公2.0”时代&#xff0c;这一时代不仅包括强大的数据分析工具&#xff0c;还涵盖了酷炫的可视化技术和前沿的机器学习…

【卷积神经网络】卷积层详解【数学+python代码】

1、简介 学习目标&#xff1a; 掌握卷积计算过程掌握特征图大小计算方法掌握PyTorch卷积层API 基本概念&#xff1a; ①在计算机视觉领域&#xff0c;往往我们输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高。 另外图像也很 难保留原有的特征 &am…

科技赋能生活——便携气象站

传统气象站往往庞大而复杂&#xff0c;需要专业人员维护&#xff0c;它小巧玲珑&#xff0c;设计精致&#xff0c;可以轻松放入背包或口袋&#xff0c;随身携带&#xff0c;不占空间。无论是城市白领穿梭于高楼大厦间&#xff0c;还是户外爱好者深入山林湖海&#xff0c;都能随…

numpy如何按等长分割数组

numpy如何按等长分割数组 1、效果 2、流程 1、分割数组 2、转列表3、代码 # -*- coding: utf-8 -*-""" @contact: 微---信 1257309054 @file: test.py @time: 2024/8/03 19:46 @author: LDC """ import numpy as np# 假设arr是需要分割的nump…

virtualbox7安装centos7.9配置静态ip

1.背景 我大概在一年之前安装virtualbox7centos7.9的环境&#xff0c;但看视频说用vagrant启动的窗口可以不用第三方工具(比如xshell、secure等)连接centos7.9&#xff0c;于是尝鲜试了下还可以&#xff0c;导致系统文件格式是vmdk了&#xff08;网上有vmdk转vdi的方法&#xf…

ChatGLM3-6B模型部署微调实战

准备 教程 视频教程 https://www.bilibili.com/video/BV1ce411J7nZ?p14&vd_source165c419c549bc8d0c2d71be2d7b93ccc 视频对应的资料 https://pan.baidu.com/wap/init?surlAjPi7naUMcI3OGG9lDpnpQ&pwdvai2#/home/%2FB%E7%AB%99%E5%85%AC%E5%BC%80%E8%AF%BE%E3%8…

Keil5.40因为Jlink驱动闪退问题

现象 Cannot load driver ‘C:\Keil_v5\ARM\Segger\JL2CM3.dll 原因 由于Jlink为盗版&#xff0c;导致闪退。 具体为JLinkARM.dll这个插件搞鬼。 这个插件的来源为 也就是我们装Jlink驱动的时候&#xff0c;勾选了这个选项&#xff0c;而导致这个毒瘤插件进入Keil&#xff…

代码题-01_顺序表_基础知识

线性表 线性表&#xff08;list&#xff09;:零个或多个相同数据元素的有限序列 线性表是逻辑结构&#xff08;元素之间一对一相邻关系&#xff09;按存储方式分为 顺序表链表 顺序表 顺序表的定义 静态分配&#xff08;使用数组存数据&#xff09; 有溢出风险 typedef…