2

Это вопрос из чистого любопытства:

У меня есть пользовательская настройка PS1 в bash, которая является просто текущим каталогом, за которым следует строчная лямбда (λ), например . Я случайно использовал cat с бинарным файлом, отменил вывод и впоследствии заставил символ λ превратиться в два японских символа ホサ до конца сеанса. При вставке этого символа из другого места он также отображался как эти два японских символа.

Теперь мой вопрос: как изменился вывод этого двоичного файла, как bash интерпретирует символы Юникода?

1 ответ1

5

Мой вопрос: как изменился вывод этого двоичного файла, как bash интерпретирует символы Юникода?

Стандартные терминалы Unix поддерживают команды ANSI/VT-100, которые могут управлять курсорами, цветами и шрифтами. Когда вы вводите двоичный файл на экран, вполне вероятно, что некоторые из двоичных символов будут случайно совпадать с такими управляющими кодами и устанавливать свойства вашего терминала.

Чтобы вернуть терминал в состояние по умолчанию, выполните:

reset

Примеры контрольных последовательностей VT-100

Если вы хотите, чтобы текст на вашем терминале мигал, введите:

echo -e '\E[5m'

Если вы хотите переключить дисплей в обратном направлении, введите:

echo -e '\E[7m'

В качестве более сложного примера рассмотрим команду make которая может выводить много информации. Чтобы было легче заметить важные вещи, вы можете выделить ERR в обратном видео, отображая WARNING жирным шрифтом. Следующий код добавляет последовательности управления VT-100 в вывод make чтобы получить эту подсветку на терминале:

make 2>&1 | sed -e 's/.*\bERR.*/\x1b[7m&\x1b[0m/i' -e 's/.*\bWARN.*/\x1b[1m&\x1b[0m/i'

Вышеизложенное добавляет последовательности управления намеренно. Когда двоичный файл набирается на экране, невозможно сказать, какие управляющие последовательности VT-100 будут случайно активированы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .