обратное видео не работает

Я пытаюсь включить обратное видео на bash/xterm, чтобы текст был черным, а передний план белым. Но это не работает. Вот моя команда:

echo -n -e \\x1B\\x07maaa\\x1B[m

Любые идеи, почему он ведет себя не так, как ожидалось?


person neubert    schedule 03.05.2015    source источник


Ответы (4)


В примере

echo -n -e \\x1B\\x07maaa\\x1B[m

\\x07m не может быть правильным, так как это будет ASCII BEL. Возможно, вы имели в виду что-то вроде этого:

echo -n -e \\x1B[7maaa\\x1B[m

\\x1B — это экранирующий символ. Все остальные символы относятся к диапазону печатных символов ASCII. Это предполагает, что ваш echo интерпретирует escape-последовательности таким образом (bash делает).

person Thomas Dickey    schedule 03.05.2015

Другой путь:

echo -n -e "\e[07mTEXT\e[0m"

Or:

printf "\e[07mTEXT\e[0m"
person Jahid    schedule 03.05.2015

Будет намного проще использовать команду printf bash (и, как указал Томас Дики, вы используете неправильную последовательность для включения обратного видео). Спрашивать себя, сколько обратных косых черт вам нужно сложить, почти всегда неправильный вопрос.

# \e[7m starts inverse video
# \e[m (short for \e[0m) resets all video parameters to their default values
printf '\e[7maaa\e[m'
person chepner    schedule 03.05.2015

Более портативные

tput rev

для реверсивного режима и

tput sgr0

для сброса реверсивного режима.

person msw    schedule 03.05.2015
comment
верно, но вопрос был о управляющих последовательностях - person Thomas Dickey; 03.05.2015
comment
Я пытаюсь внести некоторые обновления в эмулятор терминала vt100, поэтому понимание того, как работают escape-коды ANSI (по сравнению с тем, как работает tput), очень полезно. Тем не менее, я не знал о tput. - person neubert; 04.05.2015