2023年3月24日星期五

什么是数据流重导向

standard output

标准输出:指令执行所回传的正确信息

standard error output

标准错误输出:指令执行失败后,所回传的错误信息

例如,系统默认有/etc/crontab但是没有/etc/vbirdsay,此时如果下达"cat /etc/contab /etc/vbirdsay"这个指令是,cat会进行:

标准输出:读取/ect/crontab后,将该文件内容显示在屏幕上。

标准错误输出:因为无法找到/etc/vbirdsay,因此在屏幕上显示错误信息。

无论正确还是错误的数据都是默认输出到屏幕上,这导致信息紊乱。数据流重导向可以将两类信息分别传送到其他文件或这设备,分别传送所使用的特殊字符如下:

1.标准输入 (stdin):代码为0,使用<或<<

2.标准输出 (stdout):代码为1,使用>或>>

3.标准错误输出(stderr):代码为2,使用2>或2>>

举例如下

#观察你的系统根目录(/)下个目录的文件名、权限与属性,并记录下来
ll/
ll/ > ~/rootfille
ll ~/rootfile

在上面这个例子中,将ll/原本应该显示在屏幕上的信息重导向到~/rootfile中了。

重导向到的文件~/rootfile如果不存在,将会创建这个文件,如果这个文件已经存在,将会覆盖掉这个文件,如果不希望覆盖而是追加,那么应该使用>>

#利用一般用户身份搜索/home下面是否有名为.bashrc的文件
find /home -name .bashrc
find /home -name .bashrc > list_rigth 2> list_error
#两面的两条指令将会实现将正确信息和错误信息输出到同一个文件中
find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list

没有评论: