我有两种情况可以分享,我没有发现stderr重定向(2>)可以正常工作:
在两种情况下,正在执行操作的文件/目录都不存在。
案例1 :
在管道中输入2条命令时:
[root@example ~]# cat test2.txt | grep -i 'third'
cat: test2.txt: No such file or directory
[root@example ~]# cat test2.txt | grep -i 'third' 2> /dev/null
cat: test2.txt: No such file or directory
但是重定向仅与grep一起用作命令即可:
[root@example ~]# grep -i 'third' test2.txt
grep: test2.txt: No such file or directory
[root@example ~]# grep -i 'third' test2.txt 2> /dev/null
<redirection worked properly>
我知道先使用cat再使用grep并没有任何意义,但我只是对此感到好奇。
案例2 :
使用tree
命令时:
[root@example ~]# tree /var/crash2
/var/crash2 [error opening dir]
0 directories, 0 files
[root@example ~]# tree /var/crash2 2> /dev/null
/var/crash2 [error opening dir]
0 directories, 0 files
但是ls
命令不是这种情况:
[root@example ~]# ls -ld /var/crash2
ls: cannot access /var/crash2: No such file or directory
[root@example ~]# ls -ld /var/crash2 2> /dev/null
<redirection worked properly>
这里出问题了吗?
答案 0 :(得分:0)
cat的错误不是Cyrus提到的grep
tree命令在标准输出中显示“错误打开目录”
因此,该命令显示了是否使用2> / dev / null
root@ubuntu:~# tree -if test 2>/dev/null
test [error opening dir]
0 directories, 0 files
您之前提到的同一件事曾被报告为错误,请参见:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=76594