【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?
欢迎来到 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 ,我们可以看到除了内容不一样以外,其余跟其他一样。
所以我们可以总结出输出重定向的作用
- 没有文件,创建文件
- 将本来应该输出到屏幕上的数据,输出到文件中
那它是否有清除文件内容的功能呢?
我们接着来验证一下:
这次我什么数据都没输入,发现文件中的内容清空了。因此我们可以得出下面三条结论。
- 没有文件,创建文件
- 可以清空文件内容
- 将本来应该输出到屏幕上的数据,输出到文件中
所以,我们除了可以使用 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理念后,我们继续讲解输出重定向中的东西。
追加重定向
追加重定向是输出重定向的一种特殊形式,它的作用是将数据追加到现有的文件末尾,而不是覆盖原有内容。
例如:
追加重定向的符号是 >>, 每次重定向都从该文件的结尾进行写入,这种叫追加重定向,每次不断往里新增加内容。
它的作用和输出重定向差不多,但是它没有覆盖原文件的内容。
- 没有文件,创建文件
- 追加文件内容
- 将本来应该输出到屏幕上的数据,输出到文件中
这一块和C语言的文件操作有点类似,感兴趣的朋友可以回顾一下往期
【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】_c语言二进制打开文件-CSDN博客https://blog.csdn.net/sobercq/article/details/136579259
在文件的末尾,我还放出了一个文件操作的表格,这个输出重定向和里面的 "w" 是相似的。
🛎️感谢各位同伴的支持,本期Linux一篇总结专题就讲解到这啦,下期我们将进入文件篇的指令讲解,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。
相关文章:
【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?
欢迎来到 CILMY23 的博客 🏆本篇主题为:一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向? 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Py…...
svn软件总成全内容
SVN软件总成 概述:本文为经验型文档 目录 D:\安装包\svn软件总成 的目录D:\安装包\svn软件总成\svn-base添加 的目录D:\安装包\svn软件总成\tools 的目录D:\安装包\svn软件总成\tools\sqlite-tools-win32-x86-3360000 的目录D:\安装包\svn软件总成\安装包-----bt lo…...
[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始
目录 一、电路的基本原理:电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…...
回测本身就是一种过度拟合?
这也许是一个絮絮叨叨的专题,跟大伙儿唠一唠量化相关的小问题,有感而发写到哪算哪,这是第一期,先唠个10块钱的~ 前段时间在某乎上看到这样一个问题『您怎么理解回测本身就是一种过度拟合?』 个人看来,回测本…...
什么是Arduino?
Arduino是一款便捷灵活、方便上手的开源电子原型平台,由欧洲的一个开发团队于2005年冬季开发。以下是关于Arduino的详细介绍: 一、基本概述 定义:Arduino是一个基于开放源代码的软硬件平台,它让电子设计更加简单快捷。通过Arduin…...
【机器学习基础】Scikit-learn主要用法
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…...
python-素数回文数的个数(赛氪OJ)
[题目描述] 求 11 到 n 之间(包括 n),既是素数又是回文数的整数有多少个。输入: 一个大于 11 小于 10000 的整数 n。输出: 11 到 n 之间的素数回文数个数。样例输入1 23 样例输出1 1 提示: 回文数指左右对…...
OCC 网格化(二)-网格划分算法
目录 一、概述 二、详解 1. 线性偏转 (Linear Deflection) 2. 角偏转 (Angular Deflection) 三、示例 3.1 示例1 3.2 示例2 一、概述 在 Open CASCADE Technology (OCC) 中默认的网格划分算法BRepMesh_IncrementalMesh有两个主要的选项来定义三角剖分—线性和角偏转。 …...
pyecharts模块
PyEcharts 一个基于ECharts库的Python封装库,它使得开发者可以方便地在Python环境中创建交互式的图表,包括折线图、柱状图、饼图、地图等多种可视化效果。 优点: 易用性:PyEcharts提供了简单易懂的API,通过链式调用…...
深⼊理解指针(3)
1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 ⼀般使⽤: char* 这两种方式都是把字符串中的首字符的地址赋值给pc。 在这串代码中 str1内容的地…...
黑马头条vue2.0项目实战(四)——首页—文章列表
目录 1. 头部导航栏 1.1 页面布局 1.2 样式调整中遇到的问题 2. 频道列表 2.1 页面布局 2.2 样式调整 2.3 展示频道列表 3. 文章列表 3.1 思路分析 3.2 使用 List 列表组件 3.3 加载文章列表数据 3.4 下拉刷新 3.5 设置上下padding固定头部和频道列表 3.6 记住列…...
UE5.4内容示例(4)UI_UMG - 学习笔记
https://www.unrealengine.com/marketplace/zh-CN/product/content-examples 《内容示例》是学习UE5的基础示例,可以用此熟悉一遍UE5的功能 UI示例 UI_UMG :基本UMGUI_CommonUI :UMG多层应用UI_SlatePostBuffer UI :FX的示例&…...
C#实现数据采集系统-配置文件化
系统优化-配置 配置信息ip端口,还有点位信息,什么的都是直接在代码里直接写死,添加点位,修改配置,比较麻烦,每次修改都需要重新生成打包。 所以将这些配置都改成配置文件,这样只需要修改配置文件,程序无须修改,即可更新。 配置代码: 如果我们有100个采集,一个个去…...
Java面试题 -- 为什么重写equals就一定要重写hashcode方法
在回答这个问题之前我们先要了解equals与hascode方法的本质是做什么的 1. equals方法 public boolean equals(Object obj) {return (this obj);}我们可以看到equals在不重写的情况下是使用判断地址值是否相同 所以默认的 equals 的逻辑就是判断的双方是否引用了一个对象&am…...
J031_使用TCP协议支持与多个客户端同时通信
一、需求文档 使用TCP协议支持与多个客户端同时通信。 1.1 Client package com.itheima.tcp2;import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner;public class Client {public static void main(String[] a…...
二分查找(精确查找、范围搜索)
目录 1. 二分查找概述2. 精确查找2.1 【left,right】2. 2 【left,right) 3. 范围查找总结 1. 二分查找概述 二分查找法,也称为二分搜索法或折半查找法,是一种在有序数组中查找特定元素的搜索算法。其基本思想是&#x…...
软件工程简记
文章目录 一、软件工程要点之软件设计二、UML(Unified Modeling Language,统一建模语言)(一)UML 的整体分类与部分功能(二)UML 各类图的具体内容三、开发模型(一)多种开发模型的特点与问题四、设计模式(一)设计模式的总体概念与原则(二)软件结构设计原则(三)常见…...
【深度学习】【语音TTS】OpenVoice v2,测评,中英文语料,Docker镜像,对比GPT-SoVITS、FishAudio、BertVITS2
https://github.com/myshell-ai/OpenVoice/blob/main/docs/USAGE.md 实际体验OpenVoice v2的TTS效果。 文章目录 环境启动 jupyter代码代码分析主要模块和功能测试一些别的中文和中英文混合总结优点缺点对比GPT-SoVITS、FishAudio、BertVITS2使用我的Docker镜像快速体验OpenVo…...
Kotlin OpenCV 图像图像50 Haar 级联分类器模型
Kotlin OpenCV 图像图像50 Haar 级联分类器模型 1 OpenCV Haar 级联分类器模型2 Kotlin OpenCV Haar 测试代码 1 OpenCV Haar 级联分类器模型 Haar级联分类器是一种用于对象检测(如人脸检测)的机器学习算法。它由Paul Viola和Michael Jones在2001年提出…...
嗖嗖移动业务大厅(Java版)
首先对此项目说明一下,我只完成了项目的基本需求,另外增加了一个用户反馈的功能,但是可能项目中间使用嗖嗖这个功能还有一些需要完善的地方,或者还有一些小bug,就当给大家参考一下了,希望谅解。代码我也上传…...
hcia复习笔记
一、OSI 七层模型 应用层:为应用程序提供服务,如文件传输、电子邮件等。 表示层:数据格式转换、加密解密、压缩解压缩。 会话层:建立、维护和管理会话。 传输层:提供端到端的可靠或不可靠的数据传输服务࿰…...
pycharm中安装、使用扩展工具,以QT Designer为例
pycharm中安装、使用扩展工具,以QT Designer为例 第一步,下载QT Designer安装包。找到QT Designer.exe所在位置,复制路径 第二步,打开Pycharm,选择Setting,找到扩展工具(External Tools…...
【Rust光年纪】Rust语言实用库汇总:从机器翻译到全文搜索引擎
优秀的Rust语言库探索:机器翻译、音频编解码和全文搜索引擎 前言 Rust语言在近年来迅速崛起,成为了一种备受欢迎的系统级编程语言。随着其生态系统的不断丰富,涌现出了许多优秀的库和工具。本文将重点介绍几个用于Rust语言的重要库…...
学习笔记 - 二极管的参数与选型
二极管 普通二极管: 1N4148(高频开关二极管) 整流二极管: 1N4007 1A 1000V1N5408 3A 1000V 肖特基二极管 (白线边为阴极) SS14 SS34 SS54 常见肖特基二极管参数 快恢复二极管 FR107 FR207 FR307 UF4007 可以用快恢复二…...
PMP--冲刺--易混概念
文章目录 十大知识领域一、整合管理项目管理计划与项目文件的区分: 二、范围管理三、进度管理赶工与快速跟进的区分:赶工增加资源,以最小的成本代价来压缩进度工期;快速跟进,将正常情况下按顺序进行的活动或阶段改为至…...
Resolving Maven dependencies
Maven是一种项目管理和构建工具,通常用于Java项目。这个过程包括下载项目所需的所有外部库和插件,并将它们添加到项目的构建路径中。具体来说,它正在处理名为“AAS_byBasyx”的项目或模块的依赖项。这种任务通常在你打开一个新的Maven项目或更…...
【Spring】SSM框架整合Spring和SpringMVC
目录 1.项目结构 2.项目的pom.xml文件 3.spring.xml和springMVC配置文件 4.database.properties和mybatis.xml配置文件 5. 代码编写 6.测试整合结果 1.项目结构 首先创建一个名为ssm_pro的Mavew项目,然后再在主目录和资源目录下,创建如下所示的结…...
优维2024年中思考:大模型赋予新一代运维的“非产品性”启示
近年来,人工智能在各个行业的应用大幅增加,人工智能技术取得重大进步的领域之一是IT运维。 去年四季度,优维科技敏锐地提出“新一代运维核心系统提供商”的战略新定位,决定将“DevOps及运维”回归到“运维”本身,但我…...
【中药网络药理学】筛选细胞衰老和预后相关基因(附分类代码和画图代码)
1、衰老相关基因 从HAGR和msigdb数据获取细胞衰老相关基因,将两者取交集后构建基因蛋白互作网络 HAGR数据库 该库本身提供了下载链接,我在下载后对其进行了清洗 msigdb数据库 以"aging"作为关键词,Search Filters中collection…...
华为的流程体系
缘由 2010年,华为销售额为1850亿元,其中国际市场占65%,净利润238亿元。当时,公司员工达11万人,公司处理合同达5万多个,290万个订单,大量的工作是手工处理,没有统一的流程支持&#…...
前端怎么做网站/怎么免费建个人网站
今天要和大家分享的是angular从1.2版本开始带来了新语法Controller as。再次之前我们对于angular在view上的绑定都必须使用直接的scope对象,对于controller来说我们也得必须注入$scope这个service。如下:angular.module("app",[]) .controller…...
贵州省建设厅网站查/醴陵网站制作
一、选择题:(1)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句 FILE fp; 定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(2)有以下程序#include main(){ FILE …...
比较好的外贸网站/google推广妙招
文章目录题一题目描述:题目分析:题二题目描述:题目分析:收获1.2.3.4.题一 题目描述: from Crypto.Util.number import * from string import digits, ascii_letters, punctuation from sympy import * from random i…...
宁波网络公司网站建设项目/百度指数怎么分析
linux 设备驱动之 8250 串口驱动------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言前一段时间自己实践了一下8250芯片串口驱动的编写。今天就在此基…...
网站怎么做h5支付宝支付接口/友情链接属于免费推广吗
2019独角兽企业重金招聘Python工程师标准>>> 1,首先进行一个ProxyTable的一个配置,如下图《正确的配置》 2、将这个配置的文件导入进config/index.js let proxyConfig require(./proxyConfig) proxyTable: proxyConfig.proxyList, 3、接口…...
英国人做愛无网站/百度知道客服电话人工服务
(文章出处不详,转自:http://blog.csdn.net/hairetz/article/details/4137000) C中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用…...