Я обычно использую вариант 3: `program | grep .` печатает STDOUT красным цветом.
Dennis 11 лет назад
13
Печать в красном - это именно то, что я искал. Спасибо RedGrittyBrick & Деннис
Rauffle 11 лет назад
0
5
zebediah49
На основании вашего комментария запроса:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
Выглядит впечатляюще. Но не могли бы вы добавить вишни к своему дереву и объяснить, что оно делает? Не все здесь являются гуру - и ваша конструкция довольно сложна;)
Izzy 11 лет назад
3
Скобки для заказа. Я на самом деле получил эту точную форму из "я забыл-где", но смысл в том, чтобы использовать дополнительные файловые дескрипторы (помимо 1 = `stdout` и 2 =` stderr`), чтобы получить вывод внутреннего набора скобок, и запустить ` stdout` через одну команду `sed`, в то время как` stderr` проходит через другую.
zebediah49 11 лет назад
0
Вот это да. Не знал использовать эти дополнительные дескрипторы. Сначала я был немного смущен (мне нравится понимать, что я бегу - и меня немного путают с фигурными скобками). Но теперь понятно - и ИМХО именно то, что хотел ОП. Так что +1 от меня :)
Izzy 11 лет назад
0
Это помогло мне. Я хотел добавить больше данных в stderr. Это делает это и правильно выводит все обратно на stdout / stderr. `{{{ 2> & 3; } 3> & 1 1> & 2 | awk '' 1> & 3; } 3> & 2 2> & 1; } `
Bryan Drewery 11 лет назад
0
0
Hennes
Если вы хотите сделать это один раз, перенаправьте один из них в другое место.
Пример перенаправления стандарта с >.
ls -al> ls-l.txt (любой вывод здесь не из stdout, если вы видите что-то, это должен быть вывод stderr)
Для перенаправления stderr используйте 2>
Процесс создает постоянный поток вывода, некоторые для stdout, некоторые для stderr. Я хочу определить, какие именно, поскольку этот вывод идет на экран
Rauffle 11 лет назад
0
0
magna_nz
Вы можете просто перенаправить stderr в файл, и если что-то в нем обнаружится, это из stderr.
например ls -a 2> ls-all.txt
если по какой-либо причине была отправлена ошибка в stderr, она будет перенаправлена в этот файл.