Intereting Posts
Выполнение нескольких команд sed в одних и тех же файлах одновременно Eclipse недавно установлен с официального репо: JVM завершен, код выхода = 1 Ключевое слово xmodmap не работает Как файл хоста фактически используется в сетях unix / linux? Печать с гостевой ОС Linux с хостом Windows Является ли ssh-сервер, используемый в переадресации портов, рассматривается как прокси-сервер? Получите pwd / cwd с переменной $ HOME Он-лайн персональные страницы с терминала Могу ли я использовать Unix для балансировки нагрузки на два сервера Linux? Как изменить набор символов между разделителями для точной строки? Как я могу вручную скопировать автоматическую систему полного шифрования Manjaro Setup? Медленное время отклика с помощью оболочки Gnome в полноэкранном режиме Virtualbox Извлечение времени из журналов с использованием tcl ожидается скрипт init.d игнорируется в дистрибутиве на основе yocto массовое переименование файлов, не работающих

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

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

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

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

Строки не являются фактически 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"