Перенаправление нескольких текстовых потоков

10.3.3 Перенаправление нескольких текстовых потоков

Одновременно можно управлять как STDOUT, так и STDERR команды. Следующая команда создает как STDOUT, так и STDERR, поскольку один из указанных каталогов существует, а другой нет:

sysadmin@localhost:~$ ls /fake /etc/ppp
ls: cannot access /fake: No such file or directory
/etc/ppp:
ip-down.d  ip-up.d

Если в файл отправляется только STDOUT, STDERR все равно выводится на экран:

sysadmin@localhost:~$ ls /fake /etc/ppp > example.txt
ls: cannot access /fake: No such file or directory
sysadmin@localhost:~$ cat example.txt
/etc/ppp:
ip-down.d
ip-up.d

Если в файл отправляется только STDERR, STDOUT все равно выводится на экран:

sysadmin@localhost:~$ ls /fake /etc/ppp 2> error.txt
/etc/ppp:
ip-down.d
ip-up.d
sysadmin@localhost:~$ cat error.txt
ls: cannot access /fake: No such file or directory

И STDOUT, и STDERR можно отправить в файл, используя &символ амперсанда перед >символом стрелки. Набор &>символов означает 1>и , и 2>:

sysadmin@localhost:~$ ls /fake /etc/ppp &> all.txt
sysadmin@localhost:~$ cat all.txt
ls: cannot access /fake: No such file or directory
/etc/ppp:
ip-down.d
ip-up.d

Обратите внимание, что при использовании &>выходные данные отображаются в файле со всеми сообщениями STDERR вверху и всеми сообщениями STDOUT под всеми сообщениями STDERR:

sysadmin@localhost:~$ ls /fake /etc/ppp /junk /etc/sound &> all.txt
sysadmin@localhost:~$ cat all.txt
ls: cannot access '/fake': No such file or directory
ls: cannot access '/junk': No such file or directory
ls: cannot access '/etc/sound': No such file or directory
/etc/ppp:
ip-down.d
ip-up.d

Если вы не хотите, чтобы STDERR и STDOUT направлялись к одному и тому же файлу, их можно перенаправить в разные файлы с помощью обоих >и 2>. Например, чтобы указать STDOUT example.txtи STDERR error.txtвыполнить следующее:

sysadmin@localhost:~$ ls /fake /etc/ppp > example.txt 2> error.txt
sysadmin@localhost:~$ cat error.txt
ls: cannot access /fake: No such file or directory
sysadmin@localhost:~$ cat example.txt
/etc/ppp:
ip-down.d
ip-up.d

Last updated