Я пытаюсь взять stderr
из команды и перенаправить его в команду logger -s
(который записывает свой вклад в syslog
и опции -s
посылает копию входных данных для стандарта logger
«s ошибка), а затем, наконец, в файл, как это:Перенаправление STDERR к Logger, а затем подать
#!/bin/bash
ping foobar 2> logger -s 2>> ~/mylog.log
к сожалению, это создает logger
файл и mylog.log
файл. Поэтому я предполагаю, что начальный 2>
создает файл logger
, а затем 2>>
создает новый файл mylog.log
.
Есть ли способ перенаправить stderr
в команду logger
?
EDIT
Я стараюсь избегать использования |
, потому что я хочу использовать перенаправление в if
тестов, а также.
Я также попробовал этот путь:
ping foobar 2> $(logger -s 2>> ~/mylog.log)
И это не сработало.
Не могли бы вы объяснить, что делать, если тесты, которые вы пытаетесь сделать, не работают с трубой? – ctn
Является ли 'logger' процессом или файлом? Как написано, код создает пустой файл 'logger' для стандартной ошибки, чтобы перейти к нему, затем меняет свое сознание и отправляет стандартную ошибку, чтобы добавить его в' mylog.log'. Вы хотите, чтобы стандартная ошибка была отправлена в оба файла: одна в режиме добавления и одна в режиме простой записи? –
@JonathanLeffler 'logger' - это программа unix, которую я пытаюсь использовать. Я непреднамеренно создаю файл журнала с использованием перенаправления, тогда как я хочу передать 'stderr' в программу unix-журнала logger и перенаправить его в файл. –