当前位置: 首页 > news >正文

Linux中输入输出管理技巧

一、输入输出使用到的系统资源 

1、字符设备(Character Devices)

什么是字符设备

        字符设备是 Linux 中的一类设备,支持以字符为单位进行数据传输。与块设备不同,字符设备不需要缓 冲区,即数据是逐字节直接传递的。典型的字符设备包括串口、键盘、鼠标、伪终端等。

字符设备的用途与典型应用场景

        字符设备的主要用途是与硬件直接交互,比如读取传感器数据或控制某些外设。典型场景包括

  • 提供用户空间与硬件交互的接口。
  • 模拟设备,用于调试或测试。
  • 创建自定义的和应用层通信的方法。

常见的字符设备文件

终端设备

/dev/tty                                              #当前终端

/dev/tty0、/dev/tty1、/dev/tty2         #系统的虚拟控制台

输入输出设备

/dev/sda、/dev/sdb                          #硬盘设备

/dev/sr0、/dev/scd0                         #光驱和CD-ROM

/dev/null                                           #空设备,相当于黑洞,写入的数据都会被丢弃

/dev/zero                                          #零设备,读取时会返回无限多的零字节

/dev/random和/dev/urandom           #随机数生成器。

伪终端

/dev/pts/*                                         #伪终端设备,用于终端仿真

2、程序的输入输出

程序的输入输出包含的信息有:

stdio标准输入,编号为0
stdout标准正确输出,编号为1
stderr标准错误输出

程序在开启后会在/proc/pid/fd/这个目录中利用系统中的输入输出设备文件在此目录中建立用于处理输 入输出字符的设备文件

二、管理系统中的输入输出

1.什么是重定向?

将原本要输出到屏幕上的内容,重新输入到其他设备中或文件中

重定向类型包括

  • 输入重定向
  • 输出重定向

2.输入重定向

指定设备(通常是文件或命令的执行结果)来代替键盘作为新的输入设备

tr 'a-z' 'A-Z' < test

将test中的所有字母输入给tr命令,将其中的小写字母转换为大写字母

在test1.sh文件中写入以下

tr 'a-z' 'A-Z' <<EOF
test
test1
EOF

注意:其中的EOF可更换成任意字符,其作用为标志输入的开始,结尾的EOF标志输入的结束。 

相关例题:Linux第二章第三章练习-CSDN博客

3.输出重定向

将原本要输出在屏幕上的结果放到指定的设备(通常是文件)

重定向作用

  1. 当屏幕输出的信息很重要,而且希望保存重要的信息备份
  2. 不干扰屏幕的使用,例如ping baidu
  3. 储存错误/报错日志
  4. 定时任务的运行结果
  5. 执行一个命令,把报错信息丢弃到/dev/null
  6. 执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件
输出重定向的类型
类型符号作用
>重定向正确输出
2>

重定向错误输出

&>重定向所有输出
重定向正确输出
find /etc -name passwd > test.out

重定向错误输出
find /etc -name passwd 2> test.err

注意因为这里没有错误输出,所以test.err文档中没有内容

重定向所有输出
find /etc -name passwd &> test.all

注意:

输出重定向会覆盖源文件内容

追加定向类型

追加定向类型符号作用
>>追加正确输出到文件
2>>追加错误输出到文件
&>>追加所有输出到文件

还是由于没有错误输出,所以文档中未能显示追加效果 

 

三、管道        |

        管道在Linux中是一种特殊的文件类型,它在内存中创建一个缓冲区,用于存储一个命令的输出和另一个 命令的输入。当使用管道连接命令时,前一个命令的标准输出(stdout)会被重定向到管道的写端,而 后一个命令的标准输入(stdin)会被连接到管道的读端。

统计/bin 目录中有多少文件
ls /bin/ | wc -l

可以让我们快捷的统计bin目录下的文件数量

2>&1

        当使用管道时,只有正确输出会被管道处理,错误输出是无法通过管道的,如果想让管道处理错误输出,需要把错误输出放到正确输出的设备中,2>&1就是用来完成此操作的。

统计find命令输出结果的行数
find /etc/ -name passwd 2>&1 | wc -l

注:find /etc/ -name passwd 正确输出两条,没有错误输出,所以wc输出行数为2。

注意:管道只能让正确输出通过

tee

        当输出通管道后,内容就被管道处理了,如果行看到输出内容需要对输出内容进行复制然后在通过管道处理

find /etc -name passwd 2>&1 | tee test.all | wc -l

相关练习:Linux第二章第三章练习-CSDN博客

相关文章:

  • jmeter线程组高并发(详细讲解)
  • 微信小程序实现动态二维码海报生成与保存 | 高效便捷的前端方案
  • UE5学习笔记 FPS游戏制作33 游戏保存
  • 数据库中的函数:高效操作与灵活运用
  • nut-collapse折叠面板(案例)
  • OSPF协议(数据包刨析)
  • NLP高频面试题(二十七)——SFT有哪几种参数微调方法?有什么优缺点?
  • 开源守护,智护童年——幼儿园未成年行为与安全智能监控系统
  • 贪心算法(14)(java)无重叠区间
  • SSL提供了哪些安全服务
  • 镜头光圈总结
  • Unity加载OSGB倾斜摄影数据
  • Android 确定废弃「屏幕方向锁定」等 API ,如何让 App 适配大屏和 PC/XR 等场景
  • Easysearch 如何短暂维护 Data 节点
  • Ubuntu 22.04安装MongoDB:GLM4模型对话数据收集与微调教程
  • 使用Google Gemini API密钥创建AI驱动的Chrome扩展程序
  • 便携免安装,畅享近 30 种 PDF 文档处理功能
  • 首个物业plus系列展 2025上海国际智慧物业博览会开幕
  • 制作service列表并打印出来
  • 【JavaSE】小练习 —— 图书管理系统
  • 找个网站怎么这么难/迅雷磁力链bt磁力天堂下载
  • 上海 网站开发 兼职/软件外包
  • 石家庄兼职做网站/张掖seo
  • 针对人群不同,网站做细分/百度推广个人怎么开户
  • 深圳网站制作价格/企业网站营销的典型案例
  • 简述网站与网页的区别/培训总结