Я пытаюсь включить обратное видео на bash/xterm, чтобы текст был черным, а передний план белым. Но это не работает. Вот моя команда:
echo -n -e \\x1B\\x07maaa\\x1B[m
Любые идеи, почему он ведет себя не так, как ожидалось?
Я пытаюсь включить обратное видео на bash/xterm, чтобы текст был черным, а передний план белым. Но это не работает. Вот моя команда:
echo -n -e \\x1B\\x07maaa\\x1B[m
Любые идеи, почему он ведет себя не так, как ожидалось?
В примере
echo -n -e \\x1B\\x07maaa\\x1B[m
\\x07m
не может быть правильным, так как это будет ASCII BEL. Возможно, вы имели в виду что-то вроде этого:
echo -n -e \\x1B[7maaa\\x1B[m
\\x1B
— это экранирующий символ. Все остальные символы относятся к диапазону печатных символов ASCII. Это предполагает, что ваш echo
интерпретирует escape-последовательности таким образом (bash делает).
Другой путь:
echo -n -e "\e[07mTEXT\e[0m"
Or:
printf "\e[07mTEXT\e[0m"
Будет намного проще использовать команду 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'
Более портативные
tput rev
для реверсивного режима и
tput sgr0
для сброса реверсивного режима.
tput
.
- person neubert; 04.05.2015