你以为Linux命令行只能简单输入输出?学会这些技巧,效率提升10倍!
理解Linux的输入输出系统
字符设备:数据的通道
Linux中有一类特殊的"文件"叫做字符设备,它们是程序与硬件通信的桥梁:

常见字符设备解析:
/dev/tty:当前终端
/dev/null:黑洞设备,写入的数据永远消失
/dev/zero:无限提供空字符的源
/dev/random:真随机数生成器
程序的三个标准数据流
每个程序都有三个默认的数据通道:
| 通道 | 文件描述符 | 默认设备 | 用途 |
| 标准输入 stdin | 0 | 键盘 | 程序接收输入 |
| 标准输出 stdout | 1 | 屏幕 | 程序正常输出 |
| 标准错误 stderr | 2 | 屏幕 | 程序错误信息 |
查看实际运行:

重定向:改变数据流向
将原本要输出到屏幕上的内容,重新输入到其他设备中或文件中
输出重定向:让结果去该去的地方
基础输出重定向:

输入重定向:从文件读取输入
单行输入重定向:

多行输入重定向:

高级用法:Here String:

追加模式:积累而不是覆盖
| 追加定向类型符号 | 作用 |
| >> | 追加正确输出到文件 |
| 2>> | 追加错误输出到文件 |
| &>> | 追加所有输出到文件 |

它会把 find 命令执行产生的标准输出内容(也就是查找过程中匹配到文件的正常提示信息),以“追加”的方式写入到 lee.out 文件里。如果 lee.out 文件原本就存在,新内容会添加在文件已有内容的末尾;要是文件不存在,就会自动创建该文件。
管道:命令协作的桥梁
基础管道操作

处理错误输出的管道2>&1
如果有权限错误,错误信息直接显示在屏幕,不进入管道 解决方案:合并错误输出到标准输出

Tee命令:分叉数据流
作用是双向输出——既把命令的标准输出显示在终端屏幕上,同时又将其保存到指定文件中,相当于“复制一份输出,一份看、一份存”。
1. 基本语法
命令 | tee [选项] 文件名
既查看结果又保存到文件![]()
总结
Linux的输入输出管理就像给数据流动安装了一个智能交通系统:
重定向是单行道,让数据流向指定目的地
管道是立交桥,让不同命令的数据流畅协作
tee命令是分流器,一份数据多个用途
最好的学习方式就是实践!打开终端,尝试本文中的每个例子,很快你就能成为输入输出管理的高手!
如果有权限错误,错误信息直接显示在屏幕,不进入管道
解决方案:合并错误输出到标准输出
243

被折叠的 条评论
为什么被折叠?



