Linux中的输入输出

写在前面:因个人学习使用为RHEL8的版本,所以仅供相应的版本对应学习使用。

一、预备知识

1. 输入输出

stdin      [标准输入流] 系统外接传输方式:键盘,鼠标,输入命令
stdout   [标准正确输入] 命令输入后执行的正确结果,正确代码为:1
 stderr  [标准错误输出] 命令输入后执行的错误结果,正确代码为:2


2. 字符设备

I/O传输过程中以字符为单位的传输设备,例如键盘,打印机等;但其是一个虚拟设备,可在procs/进程编号中查看。

二、重定向输出

2.1 基本重定向

> 重定向正确的操作;会覆盖原有的内容
2> 重定向错误的操作;会覆盖原有的内容
&> 重定向所有的操作;会覆盖原有的内容

【注】这里为了得到正确与错误结果,我们采用在student用户下查找passwd文档:find /etc -name passwd

图 1

在实验过程中我们分别把正确结果,错误结果,全部结果分别重定向到file.r;file.e;file.all。

正确定向:

图 2

错误定向:

图 3

全部定向:

图 4

 这里给大家提出个小问题,欢迎大家评论留言:如何快速清空一个文件中的内容呢?(提示:上述知识就可解答。)


 2.2 输出追加定向

这里的追加是对已有文件内容并不进行覆盖而是写入

>> 将正确结果追加在文后,追加的对象只能是语句
2>> 将错误结果追加在文后
&>> 将所有结果追加在文后
图 5
图 6

【注】1、这里所说的追加是不覆盖原文件,可理解为文后的”连接“。
           2、echo  (可理解为C语言中的printf)

2.3 管道符

|     管道操作,将输入改变为输出;只能通过正确结果
2>&1      将错误文件转化为正确进行管道输入
tee file   将输入过程中的数据生成文件

 正确结果通过:

图 7

 错误结果转化后通过:

图 8

在上诉转化中,无论是正确结果,亦或是错误结果均会直接作为wc的输入,直接将结果作为输出,均不产生文件,若我们在输出文件的同时,也想产生相应的文件,则入图:


管道操作的意义:将所要输出的文件结果,作为另一个操作的输入极大提高了命令执行的效率。(关于这里的效率测定,因为不是本篇文章的重点,所以感兴趣者可读下一篇《管道番外篇~》。)

三、输入重定向

< 可导入文件的输入定向
<< 逐行的输入定向,这里需要使用标识符,标记输入的开

 文件作为内容,进行输入定向(其中“hello WORLD”为所建文件素材)

图 9

 标识标记,逐行直接输入;要注意标识符要相同

图 10

意义:这里直接将文件写入执行的程序,减少了人为的操作过程,提高了程序运行的效率,有利于自动化部署。

例:这里用了bash运行我们如下所写的一个脚本文件,若该过程需要人为导入编写,很明显是比较麻烦的,而输入重定向就解决了这个问题,提高了运行效率。

图 11

【注】为了实验结果清晰,这里进行如下命令说明

                1、tr 'a-z' 'A-Z' < file(或者根据管道符接内容直接进行操作显示),将a-z转化为A-Z;

                 2、bash file.sh   用bash编译文件。这里和给出文件内容:

                    date

                    passwd << EOF

                    lee

                    lee

                    EOF

                    tr 'a-z' 'A-Z' < file   ##file 文件内容同上

上述即为Linux中输入输出的学习,若有问题,欢迎大家指出;若上述内容还有所不懂,欢迎留言,会在第一时间给尽自己所能,给大家解决。愿上述内容有所用!

发布了20 篇原创文章 · 获赞 0 · 访问量 612

猜你喜欢

转载自blog.csdn.net/qq_41056224/article/details/103886890