FreeBSD : приклад перенаправлення стандартного вивода STDOUT и STDERR

Коли Ви виконуєте програму в командному рядку, вона автоматично отримує два окремих канала для виводу - STDOUT (стандартний канал виводу) та STDERR (стандартний канал для помилок).

На прикладі PERL ви можете виводити повідомлення в будь-яки з цих каналі, помістивши відовідну назву відразу після команди print:
# cat print.pl
#!/usr/local/bin/perl


print STDOUT "I am ready.\n";
print STDERR "Error, I am not ready.\n";



Якщо ви виконаєте файл з цим кодом, Ви отримаєте
# perl print.pl
I am ready.
Error, I am not ready.


Перенаправимо станадртний вивод (STDOUT):
# perl print.pl > logger.stdout
Error, I am not ready.


Та ось так подивимость, що ми отримали в файлі logger
# cat ./logger.stdout
I am ready.


Щоб перенаправити станадртний вивод помилок (STDERR):
# perl ./print.pl 2> logger.stderr
I am ready.


Теперь заглягнемо в logger.stderr:
# cat logger.stderr
Error, I am not ready.


Та спробуєм перенаправити все в один файл:
# perl ./print.pl > logger 2>&1


Як і очікував, отримуєм
# cat logger
Error, I am not ready.
I am ready.


Ще можливо розділити це ось так:
# perl ./print.pl > logger.out 2> logger.err

# cat logger.out
I am ready.

# cat logger.err
Error, I am not ready.



Все добре, але наприклад це непрацює в csh. Та ось Вам робочій приклад:
# ( perl print.pl > logger.1 ) >& logger.2

# cat logger.1
I am ready.

# cat logger.2
Error, I am not ready.

Вы только посетили наш сайт, КОММЕНТИРОВАНИЕ будет доступно через несколько минут.
возможно у Вас отключен javascript, если включен - просто обновите страницу