首页 > 服务器学习 > Linux > bash的输入重定向和输出重定向
2016
12-16

bash的输入重定向和输出重定向

标准输入和输出:

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

由于输入和输出的设备文件名写起来比较繁琐,所以bash中为这3种设备都起了一个代号,即文件描述符。

输入重定向(一般比较少用到):

命令 0< 文件名:如wall 0< test:把test文件的内容广播出去

输出重定向

标准输入重定向:本来命令或者错误命令的输出应该是输出到我们操作的界面上,现在改变了输出的方向,输出到指定文件或设备当中。

1、命令 > 文件:以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中

2、命令 >> 文件:以追加的方式,把命令的正确输出输出到指定的文件或设备当中

标准错误输出重定向

1、错误命令 2> 文件:以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中

1、错误命令 2>> 文件:以追加的方式,把命令的错误输出输出到指定的文件或设备当中

上面的重定向命令如果指定的文件不存在,会自动创建文件

由于正确输出和错误输出的重定向格式不一样,现实应用中我们既然知道一个命令会报错,那我们执行就完全没有意义了。所以我们需要能统一重定向正确输出和错误输出的格式

命令 > 文件 2>&1:以覆盖的方式,把正确输出和错误输出都保存到同一个文件中。

命令 >> 文件 2>&1:以追加的方式,把正确输出和错误输出都保存到同一个文件中。

命令 &> 文件:以覆盖的方式,把正确输出和错误输出都保存到同一个文件中。

命令 &>> 文件:以追加的方式,把正确输出和错误输出都保存到同一个文件中。

命令>>文件a 2>>文件b:把正确输出追加到文件a中,把错误输出追加到文件b中。

在Linux中有一个特殊的文件/dev/null,可以理解成黑洞,所有不管是覆盖还是追加到这个文件的内容都是看不了的,所以在有些时候我们只需要执行一个命令,不管是错误执行还是正确执行,我们都不想看到任何输出,仅仅是执行就足够了,那么可以用重定向的方法把执行的输出结果写入到这个文件中:命令 &> /dev/null。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。