I/O设备:就是把信息输入进计算机,然后计算机把信息反馈输出的设备,例如输入设备:键盘,输出设备:显示器。就是I/O设备
- 每个设备内部都有寄存器,这个寄存器是用来和计算机的CPU交互的
键盘上每次敲击一个按键,这样的信息都会被键盘控制送到键盘寄存器中,然后cpu去键盘寄存器读取这个信息。就是这样完成交互的
I/O port(接口):cup上有很多接口分配给不同的情况需要连接的设备,port实际上就是和cup这些接口连接时确切的地址,让CPU可以通过接口找到I/O设备
文件描述符:file descriptor 简写:FD
- 输入设备:INPUT:标准输入,stdin,固定描述符:0
- 输出设备:OUPUT:标准输出,stdout,固定描述符:1
标准错误,stderr,固定描述符,2
输出设备,传递两个数据流,第一个是正常的输出。第二个是在运行过程中的产生的错误也是需要表达出来的,而表达方式一般也就是显示到显示器中让人看到。所以像显示器即要承担标准输出的数据也要负责标准错误的数据流
I/O 的重定向
正常的I/O设备有这自己的标准输入,标准输出。当这些标准的输入、输出、我不想让他出现默认的地方,给它改下位置。比如保存到文件中去,或者其他地方。这就叫做I/O的重定向
I/O重定向的操作
# tr 'a-z' 'A-Z' < /etc/fstab //这个“<”小于号就是输入的重定向,不从键盘中获取输入信息去 fstab中去获取信息
- I/O重定向
- 输入重定向:< ,<<
- <:输入重定向
- <<:此处创建文件,常用于在脚本中创建文件或生成菜单
- << EOF EOF 此处生成文件 ::用法可以寻找0217 01视频1:23:处解释
- 输出重定向:>, >>
- >:覆盖输出 :如果我们把方向指向一个文件,那么文件中原来的内容都会被删除,然后写入新的内容。
- >> : 附加输出:指向一个存在的文件,会把信息填写在文件的后面,并不删除原来的信息
- set -C :禁止使用覆盖重定向之已经存在的文件;
- set +C :关闭上述特性;
- >| : 在-C特性下强制覆盖重定向;
- 输出重定向,只能用于正常输出的重定向不能用错误输出的重定向
- 错误输出重定向:
- 2>:覆盖输出 :如果我们把方向指向一个文件,那么文件中原来的内容都会被删除,然后写入新的内容。
-2 >> : 附加输出:指向一个存在的文件,会把信息填写在文件的后面,并不删除原来的信息
- 2>:覆盖输出 :如果我们把方向指向一个文件,那么文件中原来的内容都会被删除,然后写入新的内容。
- 输入重定向:< ,<<
//同时重定标准输出和错误输出 # ls /etc >tmp/etc.out 2> /tmp/etc.err //在+C特性下,成功了重定向到etc.out文件,失败了重定向到etc.err文件 //命令格式 同时重定标准输出和错误输出: 命令 > /path/to/outfile 2>/path/to/errfile 命令 &> /path/to/somefile //无论成功和失败都会被定向到同一个文件 命令 > /path/to/somefile 2>&1//无论成功和失败都会被定向到同一个文件,成功写入标识符1,错误写入标识符2
/dev/null :bit bucket(位桶),所有发往这里的数据全部都会被悄悄丢弃
管道:管道为此而生↓
- Linux:使用目的单一的小程序,组合小程序完成复杂任务 管道不能再第一个管道里创建一个变量,在第二个管道中使用 command1 | commadn2 | command3 | 。。。。
- 分叉输出:tee,命令不会处理,会送到下一个管道
// 命令解释:使用tee后 把输出结果保存到/tmp/a.out,同时又用wc -l命令统计行数。 # cat /etc/rc.d/rc.sysinit | tee /tmp/a.out |wc -l
- I/O重定向