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