数据流重定向(redirect)就是将某个命令执行后应该要出现在屏幕上的数据,给它传输到其他的地方,例如文件或设备(打印机之类的)。这玩意在Linux的命令行模式下很重要,尤其是想要将某些数据存储下来时!
1 什么是数据流重定向
数据流重定向就是将数据标准输出和数据标准错误输出分别传送到文件或者设备中去; 分为以下三种:
- 标准输入 (stdin) :代码为 0 ,使用 < 或 <<
- 标准输出 (stdout)\(standard output):代码为 1 ,使用 > 或 >>
- 标准错误输出(stderr)\(standard error output):代码为 2 ,使用 2> 或 2>>
使用方法说明:
- 1> :以覆盖的方法将“正确的数据”输出到指定的文件或设备上;
- 1>>:以累加的方法将“正确的数据”输出到指定的文件或设备上;
- 2> :以覆盖的方法将“错误的数据”输出到指定的文件或设备上;
- 2>>:以累加的方法将“错误的数据”输出到指定的文件或设备上;
2. 使用示例:
创建一个用户:laofan ,
useradd laofan
当我们用laofan这个账户 执行find 命令时,由于权限问题会报错
su laofan #切换为laofan
find /home -name .bashrc #执行查找命令
由于/home 下边还有我们建立的其他用户,这些账户的根目录你当然不能进入,所以就有错误和正确数据了。
情景一: 假如我想要将数据输出到 list 这个文件中
find /home -name .bashrc > list
结果: list里边存了刚刚那个 正确的输出数据,屏幕上还会有错误的信息出现
情景二: 我想要把正确的与错误的信息分别存入不同的文件
find /home -name .bashrc > list_right 2> list_error
结果: 此时屏幕上不会出现任何信息了。刚刚执行的结果中,有 Permission 的那几行错误信息都会进入 list_error文件中,正确的输出数据会到 list_right文件中!
3. 垃圾桶黑洞: /dev/null
#将错误信息丢弃,屏幕只显示正确的信息
find /home -name .bashrc 2> /dev/null
#将命令的数据全部写入文件list
find /home -name .bashrc &> list
#将命令的数据全部丢进垃圾桶
find /home -name .bashrc &> /dev/null