www.3112.net > Linux:关于输出重定向 这里的2>&1是什么意思呢?

Linux:关于输出重定向 这里的2>&1是什么意思呢?

ls a.txt b.txt 1>file.out 2>file.out这样写的话你没考虑stdout和stderr的缓冲.stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕;而stderr是无缓冲的,会直接输出.重定义到文件后,stdout就变成全缓冲(而不是行缓冲),得等到缓冲区满(一般8192B)才会实际写入;而stderr不管怎么样重定向,都是无缓存,向其输入数据后,马上实际写入.这样有可能导致file.out文件内容错乱,stdout和stderr内容前后顺序颠倒

执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr).分别用三个数字表示,0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错

LINUX默认输入是键盘,输出是显示器.你可以用重定向来改变这些设置.比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,用了重定向后可以直接把一个已经写好的文件用'<'指向这条命令,就直接可以统计这个文件的字符数等了.输出也是一样,你可以把屏幕输出重定向到一个文件里,再到文件里去看结果.

&gt;&amp;2 即 1&gt;&amp;2 也就是把结果输出到和标准错误一样;之前如果有定义标准错误重定向到某log文件,那么标准输出也重定向到这个log文件如:ls 2&gt;a1 &gt;&amp;2 (等同 ls &gt;a1 2&gt;&amp;1)把标准输出和标准错误都重定向到a1,终端上看不到任何信息.

重定向'>'的意思是经左边的东西重新输入到右边的文件或者程序中追加重定向">>"的意思是将左边的内容追加到右边,并不是覆盖啊,>是会覆盖文件的更多linux重定向文件建议参考www.linuxprobe.com/chapter-03.html.linux需要一个学习的过程,加油

&>表示前面的和后面一致.一般 1 表示标准输出,2表示错误输出. > xxx.txt默认值为1如果这样写, echo "" >xxxx.txt 2&1 表示 错误也输出到 xxxx.txt

在您实现输出的那行命令后面加上>、>>、、2>>来实现重定向.>是每一次重定向时将原先的内容先删除然后写入新的数据.>>是每一次重定向时将新的内容加入到就内容的后面.是将命令执行报错时,将错误信息重定向至指定文件,并且每次执行都会先删除旧的再加入新的.2>>和上面一条命里作用一样,只是将新的错误信息加到原来信息的后面举例:1.ls /etc/passwd > user2.ls /etc/passwd >> user3.ls idjsoigjs > test4.ls idjsoigjs >> test5. mail 用户名 -s "邮件题目" 评论0 0 0

2>&1 将标准错误重定向到标准输出1>/dev/null 将标准输出重定向至/dev/null这个虚拟的空设备即程序不输出任何信息

2>&1 是标准错误拷贝了标准输出的行为,最终结果就是标准输出和错误都被重定向到相同的路径了

&gt; 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`&gt;`,将日志文件清空(文件大小变成0字节);&gt;&gt;这个是将输出内容追加到目标文件中.如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响.

网站地图

All rights reserved Powered by www.3112.net

copyright ©right 2010-2021。
www.3112.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com