Linux中的输入输出管理

  • 1. 输入输出的定义
    • 1.1 字符设备
    • 1.2 标准输入(stdin)
    • 1.3 标准正确输出(stdout)
    • 1.4 标准错误输出(stderr)
  • 2. 如何管理输入
    • 2.1 ‘<’ 输入重定向
    • 2.2 ‘<<’ 多行录入
  • 3. 如何管理系统输出
    • 3.1 输出重定向
    • 3.2 追加
    • 3.3 管道 ‘ | ’
  • 4. 小练习

1. 输入输出的定义

1.1 字符设备

字符设备就是显示字符到屏幕上的设备文件;即是在输入输出过程中以字符为单位进行传输的设备,例如键盘,打印机等。
注意:字符设备是内存中开启的虚拟设备,键盘录入的信息会被 /dev/pts/0 这个目录所捕捉,当按下回车时,该目录会将所捕捉的字符交给cpu,cpu会调用所键盘输入的指令,再产生输出,产生的输出会返回给该目录,而后显示出来。(这个目录就是所说的字符设备,其作用是捕捉,最后显示)最终的结果会表示成0,1,2编号,但这些编号实际上都是在/dev/pts/0(字符设备)里。

1.2 标准输入(stdin)

输入是指系统外界向系统中传递的信息;其在字符设备中的编号为0;外界向系统传递数据的方式:键盘、鼠标、输入命令等。

1.3 标准正确输出(stdout)

在命令顺利执行完成后产生的字符串;其在字符设备中的编号为1。

1.4 标准错误输出(stderr)

在名命令失败执行完成后产生的字符串;其在字符设备中的编号为2。
注意: 不是所有的指令都有输出。

2. 如何管理输入

2.1 ‘<’ 输入重定向

1) 使用方法:
tr ‘a-z’ ‘A-Z’ < test ##把test文件中的内容定向到tr程序中。
2)如下图所示:
[root@westoslinux Desktop]# tr ‘a-z’ ‘A-Z’ < file.sh ##使用‘<’进行输入重定向,把file中的内容定向到tr这个命令中,tr将内容作了大小写转化 。
[root@westoslinux Desktop]# wc -l < file.sh##使用‘<’进行输入重定向,把file中的内容定向到wc这个命令中,wc显示了该文件的行数。
注意:.sh代表一个脚本名称 ,后缀也可以写.exe

2.2 ‘<<’ 多行录入

1)使用方法:
tr ‘a-z’ ‘A-Z’ <<EOF(字符任意)
test##此处的test不能表示为文件名称只表示test字符
test1
EOF(当首字母再次出现表示录入结束)
2) 如下图所示
file.sh文件内输入了‘Date’和‘passwd’两条命令。
[root@westoslinux Desktop]# vim file.sh ##把输入的命令放到file.sh文件里 ,里面输入date和passwd命令,然后保存。
[root@westoslinux Desktop]# bash file.sh ##使用bash命令执行文件,则会自动执行文件内的命令,从上到下,依次执行。
Fri Jan 22 10:22:28 CST 2021 ##显示时间
Changing password for user root. ##修改密码
New password: ##输入新密码。


若不想手动键入密码,可以在 file.sh文件里把密码也输入,即对passwd进行输入重定向,也就是告诉passwd从哪里开始到哪里结束在是它的范围。此时file.sh里的内容改为:
date
passwd <<EOF
lee
lee
EOF ##file.sh中的内容,输入重定向的起始标志是‘<<EOF’,当该符号再次出现时,表示结束(也叫多行录入结束)。如下图所示,表示修改密码成功。

注意:单个‘<’叫单次重定向,两个叫多次重定向,也叫多行录入。

3. 如何管理系统输出

3.1 输出重定向

使用方法:
‘>’
‘2>’
‘&>’
find /etc -name passwd > westos.out##重定向正确输出
find /etc -name passwd 2> westos.out##重定向错误输出
find /etc -name passwd &> westos.out##重定向所有输出

注意:本来不管是正确还是错误输出,都放在字符设备里,但是通过输出重定向,我们可以自己确定输出情况,即不将正确的输出放到字符设备里,放到自己指定的位置
[westos@westoslinux Desktop]$ find /etc/ -name passwd 2>westos.error
表示,寻找这个地址下名字为westos.error的文件,找到后,把错误的输出放到到westos.error文件中,正确的输出仍在字符设备中,最终显示出来。
注意:重定向管理输出后会覆盖原文件内容。

3.2 追加

使用方法:
‘>>’
‘2>>’
‘&>>’
find /etc -name passwd >> westos.out##追加正确输出
find /etc -name passwd 2>> westos.out##追加错误输出
find /etc -name passwd &>> westos.out##追加所有输出


注意:追加和重定向功能类似,但是不会覆盖原文件内容

3.3 管道 ‘ | ’

1)作用:把前一条命令的输出变成输入传递到下一条命令进行操作。
2)示例
如下图所示,最后一行出现的2,表示正确的输出被管道处理了,输出2,错误的输出被管道忽略,表明管道只处理正确输出。


如下图所示,想用管道同时处理正确和错误的输出时,需要把错误的输出定向到正确的里面,此时可以用命令:2>&1(把2放到1里,然后再经过管道处理),最终正确和错误的输出都被 wc -l 处理,结果为17。

经过管道处理之后,想要保存到文件里时,可以使用tee file命令(复制输出命令),复制输出到指定位置。

注意:
‘2>&1’表示把编号为2的输入转换到编号为1的输出中;
‘tee file’ 复制输出到指定位置;
管道在一条命令中可以使用多次;

4. 小练习

在普通用户下执行命令完成以下操作:
1)查找/etc/下的passwd文件屏蔽错误输出

2)查找/etc/下的passwd文件正确输出保存到/tmp目录中的westos.out中,错误输出保存到/tmp/目录中的westos.err中


3)查找/etc/下的passwd文件保存所有输出到/tmp目录中的westos.all中并统计输入的行数

4)查找/etc/下的passwd文件统计输出行数并显示输出内容

5)转换/etc/目录中passwd文件中的所有字母为大写并统计文件行数


6)请用脚本非交互模式编写文件westos.file内容为:
hello linux
hello westos
hello linux
westos linux is very nice !!

Linux中的输入输出管理相关推荐

  1. 干货 !玩转Linux中的输入输出管理(1)

    1 理解什么输入输出的定义 1)字符设备 字符设备就是显示字符到屏幕上的设备文件 2)stdin 标准输入 编号为0 键盘 鼠标 打字机 3)stdout 标准正确输出 标号为1 4)stderr 标 ...

  2. Linux中的输入输出管理及如何获得帮助

    1. 输入与输出概念 (1)在当前shell窗口中输入命令时,输入的命令会被放入/proc/2255/fd/0中,而正确的输出会被放入/proc/2255/fd/1中,错误的输出会被放入/proc/2 ...

  3. 专业介绍Linux中的进程管理

    Linux中的进程管理 1.什么是进程? 1)进程就是系统中处于执行期的工作. 对于[执行]两个字需要作出特别解释:执行并不同于运行,因为系统中的进程的状态大概分为四种: 进程状态 R(Running ...

  4. 深入探究系统中的输入输出管理

    系统中的输入输出管理 1.理解系统中的输入输出 shell中的指令----->cpu产生运算结果----->字符设备(默认/dev/pst) 输入输出系统是计算机系统中的主机与外部进行通信 ...

  5. java linux 权限管理_权限管理java实现(源于Linux中的权限管理算法)

    这个帖子由来已久吧,我也是到处搜到的,然后仔细学习,果然博大精深,然后加强点弄点自己的东西 我已声明 部分转载!! 向大家介绍一种很不错,也是Linux中的权限管理算法. 定义a^b为:a的b次方 假 ...

  6. Linux 中的包管理器是什么?它是如何工作的?

    文章目录 1.Linux 中的包管理器是什么? 2.什么是包? 3.包管理器如何工作? 4.不同类型的包管理器 1.Linux 中的包管理器是什么? Linux 发行版之间的主要区别之一是包管理系统( ...

  7. Linux中磁盘的管理(格式化、分区、挂载)

    文章目录 Linux中磁盘的管理(分区.格式化.挂载) 一.认识磁盘 1.什么是磁盘: 2.磁盘运行机理: 3.磁盘的扇区.磁道.柱面: 4.磁盘的分类: 二.磁盘的分区 1.为什么要分区 (1)易于 ...

  8. Linux中的进程管理

    Linux中的进程管理 Linux中的进程管理 Linux中的进程管理 1.进程 进程的定义 进程和线程 进程状态 2.进程查看命令 ps pgrep pidof top 3.进程优先级 4.进程前后 ...

  9. 大数据与云计算学习计划 (一) 云计算系统管理 6 Linux中RPM软件包管理操作 、 Yum软件包仓库操作(概念与实操)

    大数据与云计算学习计划 (一) 云计算系统管理 6 Linux中RPM软件包管理操作 . Yum软件包仓库操作(概念与实操) 一.RPM软件包管理 1.常见软件包类型 2.RPM包文件名特征 3.RP ...

最新文章

  1. IOS UISearchDisplayController 点击搜索出现黑条问题解决方案
  2. 百度java验证码不显示不出来,Java-使用百度链接时,遇到无法弹出用户登录框的问题...
  3. d3.js 教程 模仿echarts legend功能
  4. bootstrap评分插件 Bootstrap Star Rating Examples
  5. FizzBu​​zz Kata与Java流
  6. c++二进制转十进制_进制转换:二进制、八进制、十进制、十六进制相互转换
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园多媒体大赛设计平台
  8. 最新csdnJS逆向分析
  9. ARM嵌入式系统网络驱动中的重要数据结构
  10. 整合 activiti 7 springcloud
  11. 黑客入侵WinXP常用七个技巧
  12. 短信验证码和邮箱验证码
  13. c++ 获取文件夹文件并排序
  14. 万字综述 | 一文读懂知识蒸馏
  15. 中国最受欢迎50大技术博客评选结果详见
  16. 看教程学虚幻四——粒子特效之魔法阵
  17. 面试官怎样面试出合格的技术人员
  18. perl/tk_在Perl / Tk中使用高级小部件
  19. 【阅读论文】第八章--多图像的质量增强--博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病
  20. 应用交付工程师应该具备的关键能力(售前篇)

热门文章

  1. Gurobi Optimizer的安装教程
  2. 在 VS Code 里逛知乎、发文章?Zhihu on VSCode 来啦!重新定义内容创作!
  3. R语言I绘制等高线图
  4. BMC Biology:香港城市大学孙燕妮组发表高准确度预测病毒宿主的工具
  5. 中国科学7月微生物组专刊:赵立平、秦楠、东秀珠领衔
  6. 扩增子图片解读7三元图:美的不要不要的,再多用也不过分
  7. matlab cam orbit,如何在MATLAB中平滑旋转3D绘图?
  8. php7 swoole 扩展,PHP7.2加入swoole扩展
  9. R语言使用ggplot2包的快速可视化函数qplot绘制分组箱图(jitter、分组颜色配置)实战
  10. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序