Linux文件描述符和重定向

news2024/11/24 5:36:07

介绍

文件描述符是与文件输入、输出相关联的整数,在编写脚本时会经常使用标准的文件描述符来将内容重定向输出,0、1、2是文件描述符(分别对应stdin、stdout、stderr),< 、>, >>叫做操作符。

概念

stdin(0):标准输入,这个概念有点不太容易理解比如:1.使用<从文件中读取内容,2.当前命令将内容通过管道传输给下一个命令而下一个命令,而实际内容是传输给了stdin所以下一个命令也是从stdin中读取内容。

stdout(1):标准输出;这是默认选项。使用方法:1>等价于>  或者 1>>等价于>>,;如果想使用其它文件描述符,必须将文件描述符放在操作符之前。

stderr(2):标准错误,使用方法2>或者2>>,标准错误可以将错误信息插入到文件而不在终端显示  。

<:从文件中读取内容。

>:将内容插入到文件,每次插入前都会清空文件内容。

>>:将内容插入到文件, 将内容追加到现有文件的末尾。

实例

 生成测试数据

echo "hello word" > test1

cp test1 test2

chmod 000 test2

stdin(0)

1.从文本中读取内容

cat <test1

2.将读取到的内容通过管道传输给下一个命令

cat test1 |tr -t 'a-z' 'A-Z' >test1.new

stdin(1) 

将内容重定向到文件

echo "this is stdout 1" >std1

追加内容到文件

stderr(2)

遇到报错的时候终端会显示错误,可以将将错误信息写入文件不让终端显示

同时将stderr和stdout信息都插入到文件,使用&

将错误信息定向标准输出

echo "name" 2>&1 >> a
或者
echo "name" >> a 2>&1

重定向脚本内部文本块,cat <<EOF>>log.txt EOF

自定义文件描述符

自定义文件描述符也需要用到exec;< ,>,>>意思和前面解释的一样,当调用自定义的描述符时需要在自定义的描述符前加上&。

1.自定义stdin,将3定义为stdin从文件中读取内容,然后就可以调用3了,调用3和直接调用文件结果是一样的,有点类似赋值。

exec 3<test1

2.自定义stdout,测试结果发现在自定义描述符中使用>往文件中重复写数据并不会清空之前的内容,但是在标准的描述符中是会清空再写入的。

总结

 文件描述符在脚本中使用的非常频繁,常用的使用方法就是标准输出和标准错误。
个人搜集整理的学习路线及笔记icon-default.png?t=N3I4https://mp.weixin.qq.com/s/KQx_eIwdjCj3QdErxKb7ZQ

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

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

相关文章

《走进对象村7》之内部类基地

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f341;内部类匿名内部类匿名内部类的定义匿名内部类访问内部类的特点 &#x1f341;实例内部类实例内部类的定义实例内部类的如何实例化对象实例内部类访问情况 &#x1f341;静态内部类&#x1f341;局部内部类内部…

谈谈中台建设

大家好&#xff0c;我是易安&#xff01; 中台是数字化转型中备受关注的话题。今天&#xff0c;我们将重点探讨业务中台和数据中台。同时&#xff0c;作为企业数字化中台转型的整体&#xff0c;我们也会探讨前台和后台的设计思路。 平台与中台 中台这一概念源于阿里巴巴&#…

命题逻辑与推理

推理理论(假设前提条件为真推出的结论) 真值表法 直接证明法 常用推理规则—倒着看&#xff0c;推理整理过程 P规则(前提引入) T规则(结论引入) ** 常用推理公式 ** 名称内容附加率 A ⇒ ( A ∨ B ) A ⇒ A → B B ⇒ A → B A\Rightarrow(A\lor B)\qquad\\\neg A\Rightarro…

软件工程开发文档写作教程(10)—需求分析书的适用范围

本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;电子工业出版社《软件文档写作教程》 马平&#xff0c;黄冬梅编著 需求分析书的适用范围 软件项目一旦被确定要实施之后&#xff0c;撇开项目的立项投标不谈&a…

Java每日一练(20230515) 阶乘后的零、矩阵置零、两数相除

目录 1. 阶乘后的零 &#x1f31f; 2. 矩阵置零 &#x1f31f;&#x1f31f; 3. 两数相除 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 阶乘后的零 …

基于PyQt5的图形化界面开发——PyQt示例_计算器

基于PyQt5的图形化界面开发——PyQt示例_计算器 前言1. caculator.py2. MainWindow.py3. 运行你的项目4. 其他 PyQt 文章 前言 本节学习 PyQt5示例 &#xff0c;制作一个图形化界面 计算器 操作系统&#xff1a;Windows10 专业版 开发环境&#xff1a;Pycahrm Comunity 2022…

2023 年 Pycharm 常用插件推荐

1. Key Promoter X 如果让我给新手推荐一个 PyCharm 必装插件&#xff0c;那一定是 Key Promoter X 。 它就相当于一个快捷键管理大师&#xff0c;它时刻地在&#xff1a; 教导你&#xff0c;当下你的这个操作&#xff0c;应该使用哪个快捷操作来提高效率&#xff1f;提醒你…

Nginx之正向代理与反向代理进阶(支持https)

在【Nginx之正向代理与反向代理】一文中我们实现了将Nginx服务器作为正向代理服务器和反向代理服务器&#xff0c;但美中不足的是仅支持http协议&#xff0c;不支持https协议。 我们先看看看http和https的区别&#xff1a; http协议&#xff1a;协议以明文方式发送数据&#…

django ORM框架(操作数据库)【正在更新中...】

一、ORM框架介绍 ORM框架&#xff0c;把类和数据进行映射&#xff0c;通过类和对象操作它对应表格中的数据&#xff0c;进行增删改查&#xff08;CRUD) ORM框架中 数据库&#xff1a;需要提前手动创建数据库 数据表&#xff1a;与OMR框架中的模型类对应 字段&#xff1a;模…

C++基础STL-deque容器

双端数组&#xff0c;可以对头端进行插入删除操作 deque 容器和 vecotr 容器有很多相似之处&#xff0c;比如&#xff1a; deque 容器也擅长在序列尾部添加或删除元素&#xff08;时间复杂度为O(1)&#xff09;&#xff0c;而不擅长在序列中间添加或删除元素。deque 容器也可…

图解LeetCode——240. 搜索二维矩阵 II

一、题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 二、示例 2.1> 示例 1&#xff1a; 【输入】matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,1…

软件工程开发文档写作教程(08)—需求分析书的编制目标

本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;电子工业出版社《软件文档写作教程》 马平&#xff0c;黄冬梅编著 需求分析定义 需求分析的基本任务是要准确地定义新系统的目标&#xff0c;为了满足用户需求…

seleniumplaywright获取网站Authorization鉴权实现伪装requests请求

文章目录 selenium&playwright获取网站Authorization鉴权实现伪装requests请求需求背景知识点&#xff1a;selenium获取已登录网站的用户鉴权信息知识点&#xff1a;playwright获取cookie知识点&#xff1a;playwright获取storage_state提取cookie秃发状况windows禁止chrom…

OpenCV实现提取水平线和垂直线,提取验证码

1.提取水平线和垂直线 在之前的博客中&#xff0c;我们介绍了很多形态学操作。其中&#xff0c;膨胀与腐蚀操作可以使用任意的结构元素&#xff0c;例如矩形、圆、直线等各种自定义形状。 提取水平线和垂直线的具体步骤见下&#xff1a; 1.1.步骤一&#xff1a;读入原始图像…

提速YOLOv7:用MobileNetV3更换骨干网络加速目标检测

目录 前言一、MobileNetV3的介绍1、MobileNetV3的原理和特点2、MobileNetV3的结构 二、YOLOv7的介绍1、YOLOv7的结构和流程2、YOLOv7的性能指标 三、MobileNetV3替换YOLOv7的骨干网络1、替换骨干网络2、修改neck部分3、微调模型 四、实验结果与分析1、数据集和实验设置2、实验结…

【Prompting】ChatGPT Prompt Engineering开发指南(3)

ChatGPT Prompt Engineering开发指南3 总结文字使用单词/句子/字符限制进行总结以运输和交付为重点进行总结以价格和价值为重点进行总结 尝试“extract”而不是“summarize”总结多个产品评论内容来源 本文承接上文&#xff1a;ChatGPT Prompt Engineering开发指南2&#xff0c…

RK3588平台开发系列讲解(进程篇)图解linux netlink

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、netlink协议簇二、netlink初始化沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 netlink 协议是一种进程间通信(Inter Process Communication,IPC)机制,为的用户空间和内核空间以及内核的某些部分之间…

解决FTD2000 麒麟系统下计算机属性中显示的内存比实际内存少

FTD2000 麒麟系统下计算机属性中显示的内存比实际内存少,首先确认问题点,判断是飞腾D2000的bios问题,还是麒麟系统问题 可以用如下方式做出判断 1、D2000 log打印进入shell 后 exit 在弹出来的界面中选 bios set 选项、进入bios 设置界面,如下图 可以看到 bios 下,Tota…

总结851

每周小结 英语背了3篇文章 高数一直刷关于一元积分的题目&#xff0c;一共150道左右&#xff0c;平均一天20道左右&#xff0c;强化课看到第2讲数列。 每日必复习&#xff08;5分钟&#xff09; 线性代数 向量组 学习内容&#xff1a; 暴力英语&#xff1a;继续背诵《The kin…

YOLOv5:解读yolo.py

YOLOv5&#xff1a;解读yolo.py 前言前提条件相关介绍yolo.pyparse_model()函数Detect类Model类 参考 前言 记录一下自己阅读yolo.py代码的一些重要点&#xff0c;方便自己查阅。特别感谢&#xff0c;在参考里&#xff0c;列举的博文链接&#xff0c;写得很好&#xff0c;对本人…