首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash stderr重定向在某些情况下不起作用

Bash stderr重定向在某些情况下不起作用
EN

Stack Overflow用户
提问于 2019-01-06 05:50:46
回答 1查看 92关注 0票数 0

我有两个案例要分享,在这些案例中,我发现stderr重定向(2>)没有像预期的那样工作:

在这两种情况下,正在执行操作的文件/目录都不存在。

案例1

在管道中发出两个命令时:

代码语言:javascript
复制
[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作为命令进行重定向即可:

代码语言:javascript
复制
[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命令时:

代码语言:javascript
复制
[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命令的情况并非如此:

代码语言:javascript
复制
[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>

这里的问题在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-06 07:59:55

  1. 有错误的猫,而不是Cyrus提到的grep
  2. 树命令在标准输出中显示“错误打开dir”。

因此,该命令显示如果我们使用2>/dev/null

代码语言:javascript
复制
root@ubuntu:~# tree -if test 2>/dev/null
test [error opening dir]

0 directories, 0 files

您之前提到的同一件事被报告为bug,请参阅:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=76594

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54059002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档