当前位置: 首页 > news >正文

【Linux】Linux重定向指南:探索输出重定向与追加重定向的奥秘!

  欢迎来到 CILMY23 的博客

🏆本篇主题为:Linux重定向指南:探索输出重定向与追加重定向的奥秘!

🏆个人主页: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一篇总结专题就讲解到这啦,下期我们将进入文件篇的指令讲解,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。     

相关文章:

【Linux】Linux重定向指南:探索输出重定向与追加重定向的奥秘!

欢迎来到 CILMY23 的博客 &#x1f3c6;本篇主题为&#xff1a;Linux重定向指南&#xff1a;探索输出重定向与追加重定向的奥秘&#xff01; &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪…...

Spring AI -快速开发ChatGPT应用

Spring AI介绍 Spring AI是AI工程师的一个应用框架&#xff0c;它提供了一个友好的API和开发AI应用的抽象&#xff0c;旨在简化AI应用的开发工序&#xff0c;例如开发一款基于ChatGPT的对话、图片、音频等应用程序。 Spring AI已经集成了OpenAI的API&#xff0c;因此我们不需…...

Modern C++ 智能指针

Why&#xff1f; 原始指针存在缺陷&#xff0c;不符合现代编程语言的需要。 原始指针的缺陷&#xff1a; 指针指向一片内存&#xff0c;使用者无法得知到底是指向了什么&#xff0c;是数组还是对象&#xff1f;使用完指针是否需要销毁&#xff1f;什么时候销毁&#xff1f;如…...

Python的100道经典练习题,每日一练,必成大神!!!

Python的100道经典练习题是一个广泛而深入的学习资源&#xff0c;可以帮助Python初学者和进阶者巩固和提升编程技能 完整的100多道练习题可在下面图片免沸获取哦~ 整理了100道Python的题目&#xff0c;如果你是一位初学者&#xff0c;这一百多道题可以 帮助你轻松的使用Python…...

代码回滚命令

定位到当前分支 git branch回滚到指定的commit git reset --hard 85da0cb8322accad143cpush到远程分支 git push --force...

[ASIS 2019]Unicorn shop1

打开题目 随便输入信息看一下 操作失败&#xff0c;只让输入一个字符 不妨抓包看一下&#xff0c;信息&#xff0c;发现 从中可以发现源代码是如何处理price的 使用的是unicodedata.numeric() 但我们查看页面源码时&#xff0c;看到源码处理方式是utf-8 所以&#xff0c;前…...

LangChain与泛型编程:探索代码生成的新维度

LangChain与泛型编程&#xff1a;探索代码生成的新维度 在软件开发领域&#xff0c;泛型编程是一种允许创建可重用组件的技术&#xff0c;这些组件可以在多种数据类型上工作的编程范式。LangChain作为一个假设的编程辅助工具&#xff0c;如果存在&#xff0c;它可能会支持泛型…...

day25

一、进程间通信&#xff08;IPC&#xff09; 1.1 进程间通信的引入 1> 对于多个线程之间通信&#xff0c;我们可以使用临界资源来完成&#xff0c;通过一个线程任务对临界资源进行修改&#xff0c;另一个线程也可以使用已经修改过的临界资源&#xff0c;但是要注意使用…...

红黑树的概念和模拟实现[C++]

文章目录 红黑树的概念一、红黑树的性质红黑树原理二、红黑树的优势和比较 红黑树的模拟实现构建红黑树的数据结构定义节点的基本结构和初始化方式插入新节点插入新节点的颜色调整颜色和结构以满足红黑树性质 红黑树的应用场景 红黑树的概念 一、红黑树的性质 红黑树是一种自平…...

网络安全应急响应概述

前言 在网络安全领域&#xff0c;有一句广为人知的话&#xff1a;“没有绝对的安全”。这意味着任何系统都有可能被攻破。安全攻击的发生并不可怕&#xff0c;可怕的是从头到尾都毫无察觉。当系统遭遇攻击时&#xff0c;企业的安全人员需要立即进行应急响应&#xff0c;以将影响…...

【C++】链表操作技巧综合:重排链表(带你理顺链表的做题思路)

1.题目 2.算法思路 这是一道关于链表的综合题&#xff0c;一共涉及到三个步骤&#xff0c;其中每个步骤单拎出来就可以当一道单独的题目。所以需要大家对链表的操作十分熟悉&#xff0c;否则可能需要大量的时间做这道题目&#xff0c;而且还要很多的bug。 第一个步骤&#xf…...

行为型设计模式2:观察者/职责链/中介者/访问者

设计模式&#xff1a;观察者/职责链/中介者/访问者 (qq.com)...

叛逆,批判

1、对以往说法的批判之一&#xff08;第一次这么公开批判是2004-2005年&#xff09;&#xff1a; 这部英文版的《数学百科全书》似乎是从俄语版翻译过来的&#xff1f;我查了三本引用的图书文献&#xff0c;都没有关于“nonsingular”和“singular”的类似下面的说法&#xff…...

Linux 命令,mkdir说明与使用

1&#xff1a;mkdir命令功用&#xff1a; 用于创建一个或多个目录&#xff0c;创建目录&#xff0c;必须在父目录中写上权限。 新目录的默认模式为0777&#xff0c;可以由系统或用的umask来修改。 2&#xff1a;命令构件: mkdir [options] directories 3:参数选项: -m&#x…...

24. 两两交换链表中的节点(Java)

目录 题目描述&#xff1a;示例 &#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&am…...

linux虚拟机设置固定ip

修改/etc/sysconfig/network-scripts目录下ifcfg-eth0文件&#xff0c;各虚拟机这个文件名不一致&#xff0c;ifcfg-XX格式 vim /etc/sysconfig/network-scripts/ifcfg-eth0BOOTPROTO设置为static&#xff0c;然后在最后添加固定IP地址和默认网关、DNS等配置&#xff0c;IP地址…...

mysql问题解决

1.etl数据同步时&#xff0c;发现连接不上要同步的数据库 解决方法&#xff1a;关闭mysql的ssl&#xff0c;步骤如下&#xff1a; 在MySQL中禁用SSL连接涉及修改服务器的配置文件&#xff08;通常是my.cnf或my.ini&#xff0c;取决于你的操作系统和MySQL版本&#xff09;。以…...

类和对象(下)C++

1.初始化列表 1.为什么有初始化列表&#xff0c;它的作用&#xff1f; ->初始化列表&#xff0c;是构造函数初始化的另一种形式。 ->在语法上面理解&#xff0c;初始化列表可以认定为是每个成员变量定义初始化的地方. ->引用成员变量&#xff0c;const成员变量&am…...

常用在线 Webshell 查杀工具推荐

一、简介 这篇文章将介绍几款常用的在线 Webshell 查杀工具&#xff0c;包括长亭牧云、微步在线云沙箱、河马和VirusTotal。每个工具都有其独特的特点和优势&#xff0c;用于帮助用户有效检测和清除各类恶意 Webshell&#xff0c;保障网站和服务器的安全。文章将深入探讨它们的…...

RPC远程调用框架Dubbo

一、分布式服务调用_什么是RPC RPC(Remote Procedure Call)远程过程调用&#xff0c;它是一种通过网络从远程计算机程序上请求服务。 大白话理解就是&#xff1a;RPC让你用别人家的东西就像自己家的一样。 RPC两个作用&#xff1a; 屏蔽远程调用跟本地调用的区别&#xff0c…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...