Shell重定向输入输出

我的后端学习大纲

我的Linux学习大纲


重定向介绍

标准输入介绍

从键盘读取用户输入的数据,然后再把数据拿到Shell程序中使用;

标准输出介绍

Shell程序产生的数据,这些数据一般都是呈现到显示器上供用户浏览查看;

默认输入输出文件

每个 Unix/Linux 命令运行时都会打开三个文件, 文件如下

文件名类型文件描述符(file description, fd)功能
stdin(standard input)
标准输入文件
0获取键盘的输入数据
stdout(standard output)
标准输出文件
1将正确数据输出到显示器上
stderr(standard error)
标准错误输出文件
2将错误信息输出到显示器上

每个文件都有一个唯一的 文件描述符fd, 后面会通过唯一 文件描述符fd 操作对应的信息

Shell程序操作输入输出时用到这3个文件

  1. Shell程序默认会从stdin文件中读取输入数据
  2. Shell程序默认会向stdout文件输出正确数据
  3. Shell程序默认会项stderr文件中输出错误信息

这3个文件用于临时传输数据使用

重定向输入输出介绍

  1. 标准输入是数据默认从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。

  2. 标准输出是数据默认从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向。

    Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向;

重定向的作用

输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。

重定向语法

命令说明
命令 > file将正确数据重定向输出到 file 文件中, 覆盖方式
命令 < file将输入重定向从 file 文件中读取数据
命令 >> file将正确数据重定向输出到 file 文件中, 追加方式
命令 < file1 > file2从file文件读取数据, 输出数据到file2文件中
命令 fd> file根据指定的文件描述符fd 将数据重定向输出到 file 文件中, 覆盖方式
命令 fd>> file根据指定的文件描述符fd 将数据重定向输出到 file 文件中, 追加方式
命令 > file fd1>& fd2将 fd1 和 fd2 文件描述符合并 输出到文件。
fd1<& fd2将 fd1 和 fd2 文件描述符合并 从文件读取输入.
<< tag读取终端输入数据, 将开始标记 tag 和结束标记 tag 之间的内容作为输入。
标记名tag可以任意

在输出重定向中,>代表的是覆盖输出,>>代表的是追加输出。

fd是文件描述符

​ 0 通常是标准输入(STDIN),

​ 1 是标准输出(STDOUT),

​ 2 是标准错误输出(STDERR)。

fd> 或 fd>> 中间不可以有空格

输出示例:正确信息重定向输出

创建文件redirect1.txt

touch redirect1.txt

执行who命令重定向输出到redirect1.txt文件中

echo "itheima" >> redirect1.txt

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输出示例:错误信息重定向输出

预览错误消息

ls java

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

没有java目录所以报错

将错误消息输出到error.log文件中

ls java 2> redirect2.txt

2 是标准错误输出(STDERR), 注意

> 覆盖方式输出

2> 注意fd与>符号之间不能有空格

运行效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输出示例:正确和错误信息同时输出

将正确信息与错误信息都保存到一个文件中

echo "itcast" > redirect2.txt 2>&1

数字 1 代表正确输出的结果输出到文件中
数字 2 代表错误结果输出到文件中

2>& 1 将正确和错误都输出到文件中. 2>& 中间不能有空格, 写法有2种

​ 合并第一种写法: 2>& 1

​ 合并第二种写法: 2>&1

运行效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入示例:统计文件数据行数

wc命令介绍

Linux wc 命令可以用来对文本进行统计,包括单词个数、行数、字节数

wc命令语法

wc  [options]  [文件名]

options有如下:

选项含义
-ccharacter, 统计字节数
-wword, 统计单词数
-lline, 统计行数

演示

统计文件redirect2.txt中数据行数

wc -l < redirect2.txt

运行效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入示例:逐行读取文件数据

循环读取文件每一行数据

while read str; do echo $str; done < redirect2.txt

运行效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入示例:读取终端输入数据的行数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

小结

  1. Shell重定向的含义

    改变标准数据流动的方向,

    a.可以将数据输出到文件中, 叫重定向输出

    b.可以读取文件中的数据作为输入, 叫重定向输入

  2. 使用重定向输出数据到文件中保存

    命令 > file

    命令 >> file

    命令 2 >> file

    命令 > file 2&>1

  3. 使用重定向从文件中读取输入数据

    命令 < file

    命令 < file1 > file2

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

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

相关文章

QT的文件操作类 QFile

QFile 是 Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能&#xff0c;支持文本和二进制文 件。 QFile 继承自 QIODevice &#xff0c;因此它可以像其他IO设备一样使用。 主要功能 文件读写&#xff1a; QFile 支持打开文件进行读取或写入操作文件信息&#x…

neutron组件

1.实现虚拟交换机有两种方式 2.HCS网络节点 华为 HCS 将网络节点单独部署&#xff0c;且部署两台(主备部署) 两张万兆网卡&#xff0c;否则检测无法通过 L3 agent 部署在哪个节点&#xff0c;哪个节点就是网络节点 DHCP agent metadata agent 3.neutron概念 3.1Neutron支持…

人工智能 | 阿里通义千问大模型

简介 通义千问系列模型为阿里云研发的大语言模型。千问模型基于 Transformer 架构&#xff0c;在超大规模的预训练数据上进行训练得到。预训练数据类型多样&#xff0c;覆盖广泛&#xff0c;包括大量网络文本、专业书籍、代码等。同时&#xff0c;在预训练模型的基础之上&…

整理一下实际开发和工作中Git工具的使用 (持续更新中)

介绍一下Git 在实际开发和工作中&#xff0c;Git工具的使用可以说是至关重要的&#xff0c;它不仅提高了团队协作的效率&#xff0c;还帮助开发者有效地管理代码版本。以下是对Git工具使用的扩展描述&#xff1a; 版本控制&#xff1a;Git能够跟踪代码的每一个修改记录&#x…

YOLO目标检测

文章目录 一、含义二、与传统检测对比1.one-stage的优缺点2.two-stage的优缺点 三、MAP指标1.基本概念2.计算方法3.指标意义 一、含义 YOLO&#xff08;You Only Look Once&#xff09;是一种基于深度学习的目标检测算法&#xff0c;由Joseph Redmon等人于2016年提出。它的核心…

力扣 困难 52.N皇后II

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;返回51题N皇后List的长度 法二&#xff1a; class Solution {private int n, ans;private boolean[] onPath, diag1, diag2;public int totalNQueens(int n) {this.n n;onPath new boolean[n];diag1 new boolean[n * …

秃姐学AI系列之:语义分割 + 数据集 | 转置卷积 + 代码

语义分割 语义分割将图片中的每个像素分类到对应的类别 通常来说现在的会议软件的背景虚化这个功能用的就是语义分割技术 无人车进行路面识别也是语义分割技术 语义分割 vs 实例分割 语义分割将图像划分为若干组成区域&#xff0c;这类问题的方法通常利用图像中像素之间的相关…

1 -《本地部署开源大模型》如何选择合适的硬件配置

如何选择合适的硬件配置 为了在本地有效部署和使用开源大模型&#xff0c;深入理解硬件与软件的需求至关重要。在硬件需求方面&#xff0c;关键是配置一台或多台高性能的个人计算机系统或租用配备了先进GPU的在线服务器&#xff0c;确保有足够的内存和存储空间来处理大数据和复…

html+css+js实现Notification 通知

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Notif…

【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?

环境变量表具有全局性的原因&#xff1a; 环境变量表之所以具有全局性的特征&#xff0c;主要是因为它们是在进程上下文中维护的&#xff0c;并且在大多数操作系统中&#xff0c;当一个进程创建另一个进程&#xff08;即父进程创建子进程&#xff09;时&#xff0c;子进程会继承…

SAP 批量复制角色处理办法

SAP 批量复制角色处理办法 1. 定义2. 功能3. 应用场景4. 操作步骤5. 注意事项6.业务场景7.操作步骤(1)导出旧角色(2)导出文件数据修改(3)上传修改好的角色(4)生成角色参数文件(5) 调用函数批量创建角色(6)关于权限常用功能 SAP 批量复制角色&#xff08;Batch Role Copy&#x…

【系统规划与管理师】历年各章节分值汇总(论文)

【移动端浏览】☞【系统规划与管理师】历年各章节分值汇总&#xff08;论文&#xff09; 第4章 IT服务规划设计 第5章 IT服务部署实施 第6章 IT服务运营管理 第7章 IT服务持续改进 第8章 监督管理 第9章 IT服务营销 第10章 团队建设与管理

【二】企业级JavaScript开发之代码编辑器

代码编辑器 程序员接触时间最长的就是代码编辑器。 代码编辑器主要分两种&#xff1a;IDE&#xff08;集成开发环境&#xff09;和轻量编辑器。很多人喜欢这两种各选一个。 当然还有很多其他很好的编辑器&#xff0c;你可以选择一个你最喜欢的。 选择编辑器就像选择其他工具…

开源OpenStack

1.查询HCS基于OpenStack哪个版本开发 2.九大核心组件 OpenStack可以对接FC也可以对接KVM主机&#xff1b;&#xff08;OpenStack 对接华为FusionCompute&#xff0c;一个集群对应 openstack 一台计算主机&#xff09;-引申出nova compute 2.1nova nova两个核心组件nova contro…

马拉车算法(C/C++)

#1024程序员节 | 征文# 马拉车算法&#xff08;Manachers Algorithm&#xff09;是一种用于在字符串中查找最长回文子串的线性时间复杂度算法。该算法由Udi Manacher在1980年代提出&#xff0c;因此得名。它的核心思想是利用已知的回文信息来减少不必要的比较&#xff0c;从而提…

【Linux】-权限

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;深入代码世界&#xff0c;了解掌握 Linux 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ​ 一、权限的概念 在Linux 中&…

软件测试与软件缺陷的基础知识

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

技术面没过,竟然是因为我没用过Pytest框架?

想象一下&#xff0c;你在一次技术面试中满怀信心&#xff0c;答完所有问题&#xff0c;结果却被告知没通过&#xff0c;原因竟然是——你没用过Pytest框架&#xff01;是的&#xff0c;在当今软件测试的世界里&#xff0c;Pytest已经成为了许多公司的“必备”技能。 那么问题…

数据库表的创建

运用的环境是pychram python3.11.4 创建一个表需要用到以下语法 注释已经写清楚各种语法的含义&#xff0c;记住缩进是你程序运行的关键&#xff0c;因为程序是看你的缩进来判断你的运行逻辑&#xff0c;像我这个就是缩进不合理导致的报错 那么今天分享就到这里&#xff0c;谢…

QScrollBar滑动条控件

人机验证简化版案例 //设置垂直滑动条的范围是0-100ui->verticalScrollBar->setRange(0,100);ui->horizontalScrollBar->setRange(0,100);//设置初始数值ui->verticalScrollBar->setValue(50);//void valueChanged(int value);connect(ui->verticalScroll…