Сделайте 'большинство', пейджер правильно обрабатывает цвета от standard‑input

Это означает заставлять его указать на то же место, которое делает другой дескриптор файла. Необходимо делать это очень редко кроме очевидной отдельной обработки дескриптора стандартной погрешности (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 и затем обрабатываем его особенно.

10
16.08.2014, 06:54
1 ответ
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
         ...
1
27.01.2020, 20:03

Теги

Похожие вопросы