Это означает заставлять его указать на то же место, которое делает другой дескриптор файла. Необходимо делать это очень редко кроме очевидной отдельной обработки дескриптора стандартной погрешности (stderr
, fd 2
, /dev/stderr -> /proc/self/fd/2
). Это может прибыть удобное в некоторые сложные случаи.
Усовершенствованное Руководство по созданию сценариев Bash имеет этот более длительный пример уровня журнала и этот отрывок:
# Redirecting only stderr to a pipe.
exec 3>&1 # Save current "value" of stdout.
ls -l 2>&1 >&3 3>&- | grep bad 3>&- # Close fd 3 for 'grep' (but not 'ls').
# ^^^^ ^^^^
exec 3>&- # Now close it for the remainder of the script.
В Исходном Колдовстве Волшебника мы, например, используем его для различения различных выводов из того же блока кода:
(
# everything is set, so run the actual build infrastructure
run_build
) 3> >(tee -a $C_LOG >> /dev/stdout) \
2> >(tee -a $C_LOG 1>&2 > $VOYEUR_STDERR) \
> >(tee -a $C_LOG > $VOYEUR_STDOUT)
Этому добавили дополнительную замену процесса для входа причин (СОГЛЯДАТАЙ решает, нужно ли данные показать на экране или просто зарегистрироваться), но некоторые сообщения должны всегда представляться. Для достижения этого мы печатаем их к дескриптору файла 3 и затем обрабатываем его особенно.
man grep 2>/dev/null |
GREP_COLORS=$(man grep 2>/dev/null |
grep '^ *ms=01;31' -m1):ne \
grep '^ *GREP_COLORS *$\|^ *ne ' -A9 --color=always |
most
работает на меня. Кстати, я только что установил most
, чтобы разобраться в этом, и мне это нравится. Спасибо.
GREP_COLORS
Specifies the colors and other attributes
used to highlight various parts of the
output. Its value is a colon-separated list
of capabilities that defaults to
ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36
with the rv and ne boolean capabilities
omitted (i.e., false). Supported
capabilities are as follows.
ne Boolean value that prevents clearing
to the end of line using Erase in
Line (EL) to Right (\33[K) each time
a colorized item ends. This is
needed on terminals on which EL is
not supported. It is otherwise
useful on terminals for which the
back_color_erase (bce) boolean
terminfo capability does not apply,
when the chosen highlight colors do
...