2015-02-13 2 views
1

Я хотел бы перенаправить как stdout, так и stderr в файл1, но также перенаправить только stderr в файл2. Это возможно? У меня есть рабочий скрипт для части 1, но я не могу понять, как дополнительно писать stderr в file2, не переписывая перенаправление на file1 (на самом деле первый stderr-перенаправление идет в stdout, который затем переходит в файл1). Я пытаюсь сделать это, так что файл1 может содержать инструкции и ошибки печати, как если бы я работал в консоли, а файл2 просто регистрирует ошибки.redirect stderr to stdout И отдельный файл? - perl, linux

Любая идея о лучшем способе достижения этого без слишком большого отклонения от того, что у меня уже есть?

open STDOUT, '>', "$file1" or die $!; # redirect stdout to file 
open STDERR, '>&STDOUT' or die $!; # redirect standard error to stdout 
# now how to *also* redirect STDERR to $file2? 

Благодаря

Edit: Я не считаю, что это дубликат this question; это так, я скучаю по нему. Они хотели получить вывод на экран и в файл журнала, я хочу, чтобы stdout/stderr перешел в тот же файл в дополнение к тому, что только stderr перешел в другой файл. Я не хочу (или не вижу) никакого вывода на экране. Это похоже на мое 3-е время, написанное в Perl, так что для меня это очень ново. Я смотрел на это часами (в том числе уже глядя на «дублирующийся» пост, который вы связали), и не может найти разумного решения моей проблемы.

+0

Я бы посмотрел на ['Capture :: Tiny'] (https://metacpan.org/pod/Capture::Tiny#USAGE) –

+0

Кто-то хочет объяснить проголосовавший? – user20408

+0

@ user20408: SO - это среднее место, вы можете получить downvote-and-run здесь ... Во всяком случае, пока ваш вопрос не совсем обман, может быть, это обман, когда вы рассматриваете ответы на псевдо-обман. Повторяю повторное голосование, но, пожалуйста, взгляните на них. – einpoklum

ответ

3

Вы можете попробовать модуль Perl IO::Tee, который позволяет перенаправить вывод на более чем один дескриптор вывода.

+0

Я видел тэв всюду, когда я делал свой поиск, поэтому я заглянул в него. Я все еще не мог понять, как перенаправить stderr на оба stdout (а затем отправить их в файл1) и file2. Я мог только узнать, как перенаправить stderr и stdout в тот же файл, или перенаправить stdout на консоль и файл. Я искал какое-то время, и мне это просто не ясно. Благодарю. – user20408

Смежные вопросы