2015-05-03 3 views
2

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

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

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

ответ

4

В примере

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

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

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

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

0

Более портативный являются

tput rev 

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

tput sgr0 

очистить режим реверса.

+0

верно, но вопрос * был * о экранирующих последовательностях –

+1

http://xyproblem.info/ – msw

+0

Я пытаюсь сделать некоторые обновления в эмулятор терминала vt100 так понять, как ANSI символьных коды работы (против как работает tput) очень полезно. Тем не менее, я не знал о 'tput'. – neubert

1

Другой способ:

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

Или:

printf "\e[07mTEXT\e[0m" 
1

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

# \e[7m starts inverse video 
# \e[m (short for \e[0m) resets all video parameters to their default values 
printf '\e[7maaa\e[m' 
Смежные вопросы