Перенаправление Bash Stderr не работает в некоторых случаях - PullRequest
0 голосов
/ 06 января 2019

У меня есть два случая, в которых я не обнаружил, что перенаправление 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>

Где здесь проблема?

1 Ответ

0 голосов
/ 06 января 2019
  1. кошка с ошибкой не grep, как упомянуто Сайрусом

  2. Команда дерева показывает «Ошибка открытия каталога» в стандартном выводе

Итак, команда показывает, если мы используем 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

...