Как исправить нечетные escape-последовательности командной строки (ps1) после удаленного входа в iTerm2

Я наблюдаю следующее странное приглашение после входа на мой удаленный компьютер с ubuntu 14.04. Это происходит только тогда, когда я использую терминал ubuntu gui, а не через шпатлевку. Любое предложение исправить?

Это результат после входа на удаленный сервер.

введите описание изображения здесь

5 Solutions collect form web for “Как исправить нечетные escape-последовательности командной строки (ps1) после удаленного входа в iTerm2”

Строки не являются фактически ANSI-последовательностями . Скорее, они запускались как последовательности ANSI, но были переведены (из-за некоторой ошибки сценариев) на вашем удаленном компьютере, так что большинство символов преобразуются в другую форму.

Например, последовательность ANSI

побег [ A

возможно с дополнительным ; перед А , но проблемный вывод показывает 133 ( [ – восьмеричный 133). Аналогично, снимок экрана показывает буквальный \033 а не escape-символ ASCII, в нескольких местах.

Очень вероятно, что разница между терминалом gui и шпатлевкой заключается в том, что у первого может быть установлен TERM на xterm-256color , тогда как PuTTY имеет собственную конфигурацию, а TERM не установлен в PuTTY (а по умолчанию – xterm ).

Ubuntu 14.04 не делал этого сам по себе (это было время от времени, и никто не жаловался на это ), так что это пост-установка «улучшение». Как и было предложено, начните с поиска в своем собственном .bashrc (или сценарии цветной темы, который вы добавили, – некоторые из них очень ошибочны).

Это похоже на интеграцию оболочки iTerm2. См. http://www.iterm2.com/documentation-shell-integration.html .

Проверьте, не найден ли файл .iterm2_shell_integration.bash .bash_profile.

Это действительно интеграция iTerm2. Вместо того, чтобы удалять его, просто сделайте то, что должны были сделать авторы iTerm2 внутри их сценария интеграции.

Я прошел через linux и подтвердил, что мое оригинальное решение было недостаточным. я

Существует ANSI-последовательность, в которой iterm будет реагировать на то, что работает независимо от того, какая оболочка / ssh активна. Для людей, желающих перевернуть их, будет printf '\x1b[1337n' . Я не знаю, почему скрипт интеграции iterm shell не делает этот запрос сам и залог, если он не размещен в iterm.

Ваш .bashrc (или какой-либо другой shell init, который вы нам) должен иметь что-то вроде:

test -r ~ / .iterm2_shell_integration.bash &&. ~ / .iterm2_shell_integration.bash

Возможно, без начального теста. Просто измените его на еще более уродливый:

isiterm2.sh && test -r ~ / .iterm2_shell_integration.bash &&. ~ / .iterm2_shell_integration.bash

Исходный скрипт isiterm2.sh (написанный автором gnachman от iTerm2, можно найти здесь на github . Ссылка в блоке цитат, встроенная выше, является модификацией этого оригинального скрипта с этими незначительными изменениями:

  • Добавить перенаправление на dev null на команду, которая могла бы выводить в некоторых случаях
  • Переключите escape-последовательности в формат echo -ne \ x, чтобы они были напечатаны ascii
  • Залог в Msys bash / git, пока я не займу некоторое время, чтобы понять, почему stty делает его сварливым

Это мой оригинальный неполный ответ

[[$ TERM_PROGRAM == "iTerm.app"]] && test -r ~ / .iterm2_shell_integration.bash &&. ~ / .iterm2_shell_integration.bash

TERM_PROGRAM устанавливается как терминалом OS X, так и iTerm2.

Эти данные очень похожи на escape-последовательности ANSI .

Они могут использоваться для переключения цвета ваших персонажей, изменения строки заголовка эмулятора терминала и многое другое.

Они работают, печатая эти коды непосредственно на экране и надеясь, что ваш эмулятор терминала правильно их понимает.

Некоторые (например, изменение цвета) реализованы практически во всех терминальных эмуляторах. Еще одна экзотика может быть реализована только в некоторых эмуляторах, а некоторые могут быть созданы только для одного конкретного эмулятора терминала. (например, шпатлевка)

Если эмулятор терминала не распознает коды, он игнорирует их и просто печатает «мусор» на экране.

В вашем случае у кого-то могут быть добавлены коды, специфичные для шпатлевки. В настоящее время трудно прочитать, что именно такое содержание в вашем случае.

Посмотрите в ~/.bashrc . Скорее всего, там определено ваше приглашение PS1. Это может дать вам намек, каково его намерение.

Если вы просто хотите избавиться от него, просто установите свою собственную подсказку PS1, и все должно быть хорошо.

Это происходит из-за нестандартных escape-кодов Iterm2s: Собственные коды Escape , которые были выпущены здесь: Интеграция Shell отображает недопустимые символы на терминалах Linux . Чтобы устранить эту проблему, выполните эти команды на удаленном сервере, на котором установлена ​​интеграция iTerm2:

  1. curl https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/isiterm2.sh > ~/.isiterm2.sh && chmod ug+x ~/.isiterm2.sh

  2. Измените свой .bash_profile (или .profile или где бы то ни было), чтобы условия интеграции оболочки оболочки на следующий скрипт:

    ~/.isiterm2.sh && test -e "$HOME/.iterm2_shell_integration.bash" && source "$HOME/.iterm2_shell_integration.bash"

  • Бесконечный цикл данных от dev / ttyUSB при отправке AT-команд
  • CentOS 7 Почему пакет звуковых сигналов не существует?
  • Что это за подчеркивающие команды?
  • Удалите каталог изнутри с помощью интерфейса командной строки
  • Портирование быстрых клавиш GNOME на URXVT
  • Как получить выход из удаленной оболочки
  • Перезапуск X в CentOS 5
  • Можно ли включить поддержку фреймбуфера в xterm
  • Как преобразовать несколько изображений tiff в координаты xyz в одном текстовом файле с помощью терминала?
  • перенаправление не выполняется
  • Странное поведение значения терминала PS1 в Mac против Ubuntu
  • Interesting Posts

    Установка Debian, установка / var / tmp / home в том же разделе

    ssh_exchange_identification: read: Сброс соединения с помощью одноранговой сети

    Почему мои сценарии if-up.d работают до завершения DHCP (v6)?

    Запустить скрипт на блокировку / разблокировку экрана

    Freeradius Ошибка привязки к порту для порта 0.0.0.0 1812

    Безопасен ли «add-apt-repository» против вредоносной сети («MITM»)?

    Почему ln -s не говорит, что сбой при создании символической ссылки на существующий символический каталог?

    Отображать только последние 10 (или n) строк длинного вывода команды

    Ошибка при замене части команды curl переменной

    Как iperf вычисляет пропускную способность и джиттер?

    Manjaro: SSD не распознается в BIOS после установки

    Подкаталог в / usr / bin действительно запрещен FHS

    Пропустить маршрутизацию через интерфейс `lo` для исходящих пакетов

    spotify на Debian: требуется устаревший пакет

    нежелательные символы с Epson TM-H6000 на GNU / Linux

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