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

【Linux】输入输出管理

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

1.1 字符设备(Character Devices)

什么是字符设备

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

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

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

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

常见的字符设备文件

终端设备:

/dev/tty 							#当前终端。
/dev/tty0、/dev/tty1、/dev/tty2 	   #系统的虚拟控制台

伪终端:

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

1.2 程序的输入输出

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

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

image-20251025210358243

[!NOTE]

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

二 管理系统中的输入输出

2.1 什么是重定向?

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

重定向类型包括

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

2.2 输入重定向

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

image-20251025210618006

#单行输入重定向示例
vim test
test
TEST
testfile
TESTFILEtr 'a-z' 'A-Z' < lee ##把test文件中的内容定向到tr程序中
#多行输入重定向示例
tr 'a-z' 'A-Z' <<EOF (字符任意)
test 			#此处的test不能表示为文件名称只表示test字符
test1
EOF 			(当首字母再次出现表示录入结束)

2.3 输出重定向

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

重定向作用

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

输出重定向类型

类型符号作用
>重定向正确输出
2>重定向错误输出
&>重定向所有输出

以下的示例要在普通用户上完成,权限不多会报错误

正确输出重定向

image-20251025211123724

#重定向正确输出
find /etc -name passwd > test.out	#剩下的错误输出就会输出再屏幕终端上

错误输出重定向

image-20251025211138150

#重定向错误输出
find /etc -name passwd 2> test.err	#剩下的正确输出就会输出再屏幕终端上

重定向所有输出

image-20251025211250943

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

[!CAUTION]

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

2.4 追加定向类型

追加定向类型符号作用
>>追加正确食输出到文件
2>>追加错误输出到文件
&>>追加所有输出到文件
find /etc -name passwd >> test.out
find /etc -name passwd 2>> test.err
find /etc -name passwd &>> test.all

[!NOTE]

追加定向不会覆盖原文件内容

2.5 管道

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

image-20251025211532563

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

2>&1

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

image-20251025211554909

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

tee

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

image-20251025211617475

find /etc -name passwd 2>&1 | tee test.all | wc -l
http://www.dtcms.com/a/529826.html

相关文章:

  • 做购物网站的初衷建设网站有哪些好处和坏处
  • 从stc8g1k08+433MHZ无线点亮led 到stc8k1k17+433MHZ唯一配对并点亮小灯(过程问题总结)
  • 区域综合实验
  • 环保网站建设多少钱安徽池州建设厅网站
  • 搅拌机东莞网站建设技术支持河北邯郸特色美食
  • 将有序数组转换为二叉搜索树
  • 长春做网站公司长春seo公司网页设计师培训费用图片
  • 外贸网站 源wordpress rpc
  • 深圳建站服务中心火车头采集器和wordpress
  • 志愿者网站建设500万在北京几环买房
  • linux如何将运行进程设置为权限最高进程 当资源不足时,避免被内核kill掉
  • Windows环境变量终极指南
  • 我要学做网站seo优化是做什么的
  • 齐齐哈尔网站seo淄博网站制作首选专家
  • 向google提交网站微信抽奖小程序怎么做
  • 西安网站挂标广西金利建设有限公司网站
  • windows10安装WSL2 ubuntu24.04中安装vLLM vLLM中部署Qwen2.5-VL
  • 如何在Linux(Ubuntu)操作系统上查看文件的MD5,SHA256等校验码
  • 网站付的保证金怎么做会计凭证山东公司网站建设
  • 商城网站建设企业lamp 搭建wordpress
  • 做网站对企业有什么好处2022年网站能用的
  • 邯郸推广网站建设哪个好桐乡市城乡规划建设局网站
  • 布吉网站的建设中国菲律宾最新局势
  • 青海电商网站建设公司中国十大最著名品牌
  • ML 与 DL 常用数据集介绍
  • 佛山网站建设公司怎么样石家庄网站建设远策科技
  • 厦门u 网站建设如何选择昆明网站建设
  • 做网站生意多吗a5站长平台
  • 网站开发企业一级a做爰片免费网站孕交视频
  • 旅游网站设计规划书做视频网站视频用什么插件吗