Странная escape-последовательность

Мне нужна помощь в определении того, что представляют эти escape-последовательности. Я вижу, что эта последовательность автогенерируется на консоли моего сервера, но я не уверен, в чем причина этого.

Последовательность выхода: ^ [[[D

Я проверил эту схему escape-последовательностей как ссылку: http://ascii-table.com/ansi-escape-sequences-vt-100.php , но не нашел ничего подходящего.

  • Как отключить сообщения в unix, если mesg и chgrp не разрешены?
  • Вернитесь в графический интерфейс с текстовой консоли со многими серверами X11?
  • Проблема tty: двоичный беспорядок вместо «текстовых хороших данных»
  • Отправка сценария в tty вместо vt (определенная проблема, приветствуются другие решения)
  • Перенаправить tty в стандартный
  • Низкоуровневая последовательная конфигурация?
  • Является ли количество tty максимальным количеством одновременных сеансов?
  • Как использовать экран, когда / dev / tty отключен?
  • 2 Solutions collect form web for “Странная escape-последовательность”

    ПРИМЕЧАНИЕ. Это так, как я понимаю вещи, так что это может быть немного!

    Символы ^ [ обычно означают ключ Escape. Это Control ( ^ ) + открытая квадратная скобка ( [ ).

    выдержка из символов Escape – символ ASCII escape

    Символ «escape» ASCII (восьмеричный: \ 033, шестнадцатеричный: \ x1B или ^ [или в десятичном формате 27) используется во многих устройствах вывода для запуска серии символов, называемых управляющей последовательностью или escape-последовательностью. Как правило, escape-символ сначала отправлялся в такой последовательности, чтобы предупредить устройство о том, что следующие символы должны интерпретироваться как контрольная последовательность, а не как простые символы, затем один или несколько символов будут следовать, чтобы указать некоторое подробное действие, после чего устройство вернется к обычному интерпретации символов. Например, последовательность ^ [, за которой следуют печатные символы [2; 10H], приведет к тому, что терминал DEC VT102 переместит свой указатель на 10-ю ячейку второй строки экрана. Позднее это было разработано для кодов выхода ANSI, охватываемых стандартом ANSI X3.64. Управляющий символ также запускает каждую командную последовательность в командном языке принтера Hewlett Packard.

    В системах, где вы используете UTF-8, эта escape-последовательность на самом деле является 2 символами, поэтому теперь она ^ [ затем добавлена [ .

    выдержка из кода escape ANSI – Элементы последовательности

    Существует односимвольный CSI (155 / 0x9B / 0233). ESC + [двухсимвольная последовательность чаще используется, чем односимвольная альтернатива, подробнее см. Коды управления C0 и C1. Только двухсимвольная последовательность распознается устройствами, поддерживающими только ASCII (7-разрядные байты) или устройствами, поддерживающими 8-битные байты, но использующими диапазон символов управления 0x80-0x9F для других целей. На терминалах, использующих кодировку UTF-8, обе формы занимают 2 байта (CSI в UTF-8 – 0xC2, 0x9B) [обсуждение], но ESC + [последовательность понятна.

    Зная вышеуказанные 2 части информации, это сделало бы вашу escape-последовательность Esc + [ + D, которая будет работать, большой сюрприз, обратный символ.

    выдержка из последовательностей ANSI Escape

     Esc[ValueD Cursor Backward: Moves the cursor back by the specified number of columns without changing lines. If the cursor is already in the leftmost column, ANSI.SYS ignores this sequence. 

    Рекомендации

    • Esc Key
    • Символ окончания передачи
    • Управляющие символы
    • Персонажи побега
    • Код выхода ANSI
    • ANSI Escape последовательности – (коды ANSI Escape)

    Это звучит как плохая копия в сценарий профиля оболочки.

    Как указано @slm, ' ^[ + [ ' – обычная escape-последовательность, но вы говорите, что у вас есть ^[ + [ + [ '. Когда я просматриваю коды выхода терминала эмулятора терминала, я не вижу никаких кодов, которые являются ESC, а затем 2 скобки.

    Поскольку ESC является непечатаемым символом, он часто представляется в текстовых редакторах как ^[ . Я предполагаю, что кто-то редактировал скрипт профиля, который имел этот код escape, и попытался скопировать его в другую систему. Но они скопировали визуальное представление ESC ( ^[ ) вместо самого ESC.
    Однако это приведет к простому наблюдению ^[[D , а не ^[[[D Для этого, возможно, копия / вставка была сделана, набрав ее вместо этого, и это опечатка.

    В любом случае, чтобы исправить это, вам нужно найти скрипт профиля, который имеет это и исправить. Если вы используете bash, попробуйте следующее:

     fgrep -r '[[[' /etc/bashrc /etc/bashrc.d /etc/bash_profile /etc/profile /etc/profile.d ~/.profile ~/.bashrc ~/.bash_profile 

    Как только вы его нашли, его легко исправить. В редакторе vi просто удалите ^[[ символы и в режиме вставки Ctrl + V, затем ESC . Это добавит буквенный символ ESC.

    Linux и Unix - лучшая ОС в мире.