Параметры перенаправления IO tcsh
перенаправляют stdout и stderr одновременно или только stdout.
Один из вариантов - перенаправить stdout на /dev/tty
, а затем дублировать stderr в stdout и tee
.
% (command > /dev/tty) |& tee stderr.log
Обратите внимание, что это всегда будет записываться на консоль, даже если оно используется в скрипте, который вы затем выполняете в другом месте.
Вы можете вызвать другие оболочки изнутри tcsh, поэтому стоит упомянуть, что они могут сделать.
Совместимые с Bourne оболочки могут обрабатывать только stdout, но имеют синтаксис для управления файловыми дескрипторами, используя третий файловый дескриптор в качестве временного хранилища, мы можем обменивать stdout и stderr. Последовательность 3>&2 2>&1 1>&3 3>&-
выполняет это и затем закрывает дескриптор файла 3.
$ (command 3>&2 2>&1 1>&3 3>&- | tee stderr.log) 3>&2 2>&1 1>&3 3>&-
Bash и некоторые другие оболочки, как процесс замещения поддержки ЗШ, которая позволяет использовать команду в качестве источника <(...)
или назначения >(...)
.
$ command 2> >(tee stderr.log)
Если вы не против тирады, http://www.grymoire.com/unix/CshTop10.txthttp://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot и имеют приличную информацию о некоторых из грубых краев (т) CSH котирования, переназначение, условные и псевдонимов. Однако некоторые данные об определенных ошибках устарели.
Но я хочу только перенаправить STDERR в файл, а не как STDOUT, так и STDERR. – user3867146
Приношу свои извинения, я неправильно понял. – Carpetsmoker