linux 中 信息输出 重定向 总结

重定向


1      重定向符号

>               输出重定向到一个文件或设备 覆盖原来的文件
>!              输出重定向到一个文件或设备 强制覆盖原来的文件
>>             输出重定向到一个文件或设备 追加原来的文件
<               输入重定向到一个程序 

2 命令重导向示例

在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>


[test @test test]# ls -al > list.txt
将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!


[test @test test]# ls -al >> list.txt
将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!


[test @test test]# ls -al  1> list.txt   2> list.err
将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err


[test @test test]# ls -al 1> list.txt 2> &1
将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!

[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。

3 为何要使用命令输出重导向

• 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
• 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
• 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
• 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
• 错误讯息与正确讯息需要分别输出时。

注意:

如果 1 > 2> 后面的log文件不存在 则 会主动创建
ls / /hello 1> log.out
ls / /hello 1> log.out 2> log.err
1代表正确信息 2代表错误信息
输出重定向: 重定向从左到右绑定

ls / /hello 2>&1 1> mylog.log
从左向右绑定,错误输出绑定到标准输出,此时标准输出是输出到控制台,然后才是标准输出重定向到文件。两个重定向的绑定没有关系。
注意&1符号的替换,直接将输出绑定到资源,而不是绑定到文件描述符


分析:如果我这里没有 /hello 那么执行此命令 会有错
则2>&1 输出 重定向到控制台
mylog.log内不会有内容
2 重定向到1 时 还没有 mylog.log 文件 因此 打印到控制台就结束了


ls / /hello 1> mylog1.log 2>&1
和第一条指令的区别是什么?主要区别是在于 指定的文件是先有还是后有。 这里的指令 是无论正确还是错误都会发到log文件中

扫描二维码关注公众号,回复: 8527925 查看本文章

如果我这里没有/hello 会有错 2>&1 信息会重定向走通道1,通道1 是已经有指定文件的 所以 信息会写入文件中。

发布了20 篇原创文章 · 获赞 0 · 访问量 188

猜你喜欢

转载自blog.csdn.net/LIdahai_daylife/article/details/103533234