写在前面:因个人学习使用为RHEL8的版本,所以仅供相应的版本对应学习使用。
一、预备知识
1. 输入输出
stdin [标准输入流] 系统外接传输方式:键盘,鼠标,输入命令 stdout [标准正确输入] 命令输入后执行的正确结果,正确代码为:1 stderr [标准错误输出] 命令输入后执行的错误结果,正确代码为:2
2. 字符设备I/O传输过程中以字符为单位的传输设备,例如键盘,打印机等;但其是一个虚拟设备,可在procs/进程编号中查看。
二、重定向输出
2.1 基本重定向
> 重定向正确的操作;会覆盖原有的内容 2> 重定向错误的操作;会覆盖原有的内容 &> 重定向所有的操作;会覆盖原有的内容 【注】这里为了得到正确与错误结果,我们采用在student用户下查找passwd文档:find /etc -name passwd
在实验过程中我们分别把正确结果,错误结果,全部结果分别重定向到file.r;file.e;file.all。
正确定向:
错误定向:
全部定向:
这里给大家提出个小问题,欢迎大家评论留言:如何快速清空一个文件中的内容呢?(提示:上述知识就可解答。)
2.2 输出追加定向这里的追加是对已有文件内容并不进行覆盖而是写入
>> 将正确结果追加在文后,追加的对象只能是语句 2>> 将错误结果追加在文后 &>> 将所有结果追加在文后 【注】1、这里所说的追加是不覆盖原文件,可理解为文后的”连接“。
2、echo (可理解为C语言中的printf)2.3 管道符
| 管道操作,将输入改变为输出;只能通过正确结果 2>&1 将错误文件转化为正确进行管道输入 tee file 将输入过程中的数据生成文件 正确结果通过:
错误结果转化后通过:
在上诉转化中,无论是正确结果,亦或是错误结果均会直接作为wc的输入,直接将结果作为输出,均不产生文件,若我们在输出文件的同时,也想产生相应的文件,则入图:
管道操作的意义:将所要输出的文件结果,作为另一个操作的输入极大提高了命令执行的效率。(关于这里的效率测定,因为不是本篇文章的重点,所以感兴趣者可读下一篇《管道番外篇~》。)
三、输入重定向
< 可导入文件的输入定向 << 逐行的输入定向,这里需要使用标识符,标记输入的开 文件作为内容,进行输入定向(其中“hello WORLD”为所建文件素材)
标识标记,逐行直接输入;要注意标识符要相同
意义:这里直接将文件写入执行的程序,减少了人为的操作过程,提高了程序运行的效率,有利于自动化部署。
例:这里用了bash运行我们如下所写的一个脚本文件,若该过程需要人为导入编写,很明显是比较麻烦的,而输入重定向就解决了这个问题,提高了运行效率。
【注】为了实验结果清晰,这里进行如下命令说明
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中输入输出的学习,若有问题,欢迎大家指出;若上述内容还有所不懂,欢迎留言,会在第一时间给尽自己所能,给大家解决。愿上述内容有所用!