Куда мои управляющие коды ANSI идут, когда я передаю по каналу к другому процессу? Я могу сохранить их?

@behrooz корректен. К сожалению, uname требует, чтобы Вы знали архитектуру. На самом деле я искал список архитектуры, и я нашел эту статью, которая отвечает на Ваш вопрос. В отношении uname -m:

GNU/Linux x86_64 указывает, что у Вас есть выполнение ядра Linux на 64 бита. Если Вы используете, видят i386/i486/i586/i686, это - ядро на 32 бита.

Определить, способны ли аппаратные средства к выполнению 64-разрядного ядра

grep flags /proc/cpuinfo

Ищите следующее в выводе (все флаги, полученные из этого ответа stackoverflow для того же вопроса)

  • lm отметьте означает CPU режима Long - ЦП на 64 бита
  • tm отметьте означает Защищенный режим - 32-разрядный ЦП
  • rm отметьте означает Реальный режим - ЦП на 16 битов

37
08.04.2011, 00:31
2 ответа

Много программ, которые генерируют цветной вывод, обнаруживают, если они пишут в TTY и выключают цвета, если они не. Это вызвано тем, что цветовые коды являются раздражающими, когда Вы только хотите получить текст, таким образом, они пытаются "сделать правильную вещь" автоматически.

Самый простой способ получить вывод цвета из программы как этот состоит в том, чтобы сказать этому писать цвет даже при том, что это не подключено к TTY. Необходимо будет прочитать документацию программы, чтобы узнать, имеет ли она ту опцию. (например, grep имеет --color=always опция.)

Вы могли также использовать expect сценарий unbuffer создать pseudo-tty как это:

echo barney | unbuffer grep barney | sed -n 1,$\ p
41
27.01.2020, 19:36
  • 1
    благодарит за ту информацию об обнаружении TTY и освобождать буфер фальшивке! –  shellter 07.04.2011, 19:01
  • 2
    @cjm.. Это не работает здесь (на Ubuntu 10.04 / колотят 4.1.5)..., но мои 10.04 repo только имеет-dev версию и ничто в бэкпортах... Немного поздно здесь, таким образом, я посмотрю снова завтра..., но как Вы сказали, эти программы колоризации, вероятно, переключаются по словам выходного места назначения (mhhh, но как они знают, что это - goiong к tty.. неважно).. и у них может быть опция вызвать его.. спасибо, –  Peter.O 07.04.2011, 19:25
  • 3
    @fred, они обычно используют isatty для обнаружения где stdout идет. Я не на самом деле уверен если unbuffer работы, когда Вы передаете по каналу в программу, а также из него; мне не установили его здесь для попытки. –  cjm 07.04.2011, 20:59
  • 4
    благодарит за unbuffer информация, это помогает моему выводу бота IRC как вывод в оболочке. –  LiuYan 刘研 11.11.2013, 11:05

Это работает на меня;-! (в текущей среде MingW)

echo barney | grep --color=always barney | sed -n '1,$p'
**barney**

# barney отображается как красный текст

$ grep --version
GNU grep 2.5.4

$ sed --version
GNU sed version 4.2.1
4
27.01.2020, 19:36
  • 1
    @shellter... да, этот конкретный grep пример работает на меня также.. Я не знал о той опции, пока Вы не отправили ответ, так спасибо за это...как бы то ни было. Я все еще задаюсь вопросом, существует ли некоторый общий способ сделать это...., например, tree is colorized a-la dircolors if the LS_COLORS environment variable is set and output is to tty ... Возможно(?), существует способ обмануть канал в размышление, что он производит к TTY.. или некоторое такое общее обходное решение.. –  Peter.O 07.04.2011, 17:44
  • 2
    я только что проверил man tree... Это также имеет подобную опцию, -C ... возможно, это - типичная функция программ тот цвет вывода управляющие коды.. –  Peter.O 07.04.2011, 17:47

Теги

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