Я использую vi
/nvi
(НЕТ vim
) потому что это просто и незаметно.
vim
любит, когда так сильно звуковые сигналы его тяжелее и несколько неочевидный отключены. Я должен был физически удалить внутренний динамик компьютера, прежде чем в конечном счете найдено, который проложил под землей - касательно приблизительно, как сделать это :)
set vb t_vb=
Также я не использую окраску синтаксиса, серый по черному мне является самым красивым.
И возможно я слишком глуп для выяснения этого tangled-multi-key-pressed emacs
путем только три сочетания клавиш, которые я помню, являются CTRL-ALT-DEL.
Идея состоит в том, чтобы мое приложение знало для не окраски вывода, если программа не может распечатать, скажем, вывод входа от через задание крона в файл, никакая потребность зарегистрироваться окрашенный выводом, но при выполнении вручную, мне нравится просматривать окрашенный вывод
В каком языке Вы пишете свое приложение?
Нормальный подход должен проверить, является ли устройство вывода tty, и если это, проверьте, окрашивает ли тот тип терминальных поддержек.
В bash
, это было бы похоже
# check if stdout is a terminal...
if test -t 1; then
# see if it supports colors...
ncolors=$(tput colors)
if test -n "$ncolors" && test $ncolors -ge 8; then
bold="$(tput bold)"
underline="$(tput smul)"
standout="$(tput smso)"
normal="$(tput sgr0)"
black="$(tput setaf 0)"
red="$(tput setaf 1)"
green="$(tput setaf 2)"
yellow="$(tput setaf 3)"
blue="$(tput setaf 4)"
magenta="$(tput setaf 5)"
cyan="$(tput setaf 6)"
white="$(tput setaf 7)"
fi
fi
echo "${red}error${normal}"
echo "${green}success${normal}"
echo "${green}0.052${normal} ${bold}${green}2,816.00 kb${normal}"
# etc.
В C Вы должны сделать намного больше ввода, но можете достигнуть того же результата с помощью isatty и функций, перечисленных в man 3 terminfo
.
Это должно быть достаточно:
$ tput colors
При рассмотрении страницы справочника you'ill замечают это:
SYNOPSIS
tput [-Ttype] capname [parms ... ]
И...
capname
indicates the capability from the terminfo database. When term‐
cap support is compiled in, the termcap name for the capability
is also accepted.
termcap colors
находится в terminfo базе данных, таким образом, можно попросить ее. Если у Вас есть нулевой статус выхода, то termcap компилируется в. Но если у Вас есть что-то как:
$ tput unknowntermcap
tput: unknown terminfo capability 'unknowntermcap'
$ echo $?
4
Это показывает, что unknowntermcap не существует. Так, это:
$ tput colors
8
$ echo $?
0
Шоу, что Ваша команда была правильной.
Удачи
colors
не документируется в tput
страница справочника(!), таким образом, я должен искать число> = 8 в stdout или коде возврата 0?
– l0b0
24.03.2011, 09:43
colors
возможность документируется в terminfo (5). Тестирование использования tput -T dumb colors
, tput -T vt220 colors
, tput -T linux colors
, tput -T xterm colors
предполагает, что общие ценности -1
(никакая цветная поддержка) и 8
(8 цветов). Обратите внимание, что это только применяется после проверки, что устройство вывода является терминалом (например. [ -t 1 ]
или isatty
).
– Mikel
25.03.2011, 02:20
tput colors
возвраты, что локальная терминальная база данных думает о терминале. Это может или не может соответствовать тому, как что терминал может на самом деле сделать, специально для терминального типа xterm
который прибывает во многие варианты (в пределах от черного цвета и белого цвета к 256 цветам). Примечание
– Gilles 'SO- stop being evil'
02.11.2011, 00:37
Идея состоит в том, чтобы мое приложение знало для не окраски вывода, если программа не может распечатать, скажем, вывод входа от через задание крона в файл, никакая потребность зарегистрироваться окрашенный выводом, но при выполнении вручную, мне нравится просматривать окрашенный вывод.
Для этого варианта использования, что обычно делают программы (например, GNU ls или GNU grep с --color=auto
) должен использовать цвета, если их вывод идет в терминал и никакие цвета иначе. Терминалы, которые не поддерживают последовательности изменения цвета ANSI, достаточно редки, что приемлемо заставить их пользователей переопределить выбор по умолчанию. В любом случае удостоверьтесь, что Ваше приложение имеет опцию вызвать цвета на или прочь.
В сценарии оболочки использовать [ -t 1 ]
протестировать, если стандартный вывод является терминалом.
# option processing has set $color to yes, no or auto
if [ $color = auto ]; then
if [ -t 1 ]; then color=yes; else color=no; fi
fi
Из программы с помощью API C звонить isatty(1)
.
# option processing has set use_color to 0 for no, 1 for yes or 2 for auto
if (use_color == 2) use_color = isatty(1);
Выполняя команды как меньше и рассмотрение вывода из программы, как которая выводы с помощью цветов, вывод отображены неправильно,
[ESC [0; 32m0.052ESC [0m ESC [1; 32m2,816.00 kbESC[0m]
Попытайтесь использовать less --RAW-CONTROL-CHARS
.
В этом примере я использую logtool, который печатает вывод с помощью цветов.
Без - НЕОБРАБОТАННЫЕ СИМВОЛЫ УПРАВЛЕНИЯ:
$ head -20 /var/log/messages | logtool | less
ESC[0mESC[0;37mMar 20 11:43:52ESC[0mESC[1;36m host1ESC[0mESC[0;37m rsyslogd:ESC[0m ^GESC[0;31mlast message repeated 14 timesESC[0mESC[0m
С - необработанный CHAR управления (Воображают это, находится в симпатичных цветах. Кроме того, я не уверен почему это ^G
отображается.):
$ head -20 /var/log/messages | logtool | less --RAW-CONTROL-CHARS
Mar 20 11:43:52 host1 rsyslogd: ^Glast message repeated 14 times
Это было бы отказом less
не будучи установленным интерпретировать Escape ANSI; искать R
в $LESSOPTS
. Что касается определения, если система знает, Ваш терминал может иметь дело с цветами, tput colors
произведет или количество цветов, которые оно поддерживает или -1
если это не поддерживает цвета. (Обратите внимание, что некоторые терминалы могут использовать xterm
вместо xterm-color
как их терминальное описание, но все еще поддерживают цвета.)
Если Вы хотите добавить цвет для вывода, но только когда цвета поддерживаются, можно просто использовать tput
. http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html