How to fix shell prompt ( ps1 ) odd escape sequences after remote login from iTerm2

Переименование файлов с помощью башизмов

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

dir="The Dark Tower"
declare -i count=1
for file in "$dir"/*.mov; do
    mv "$file" "${dir}/${dir} ${count}.mov"
    count+=1
done
4
10.10.2017, 21:07
3 ответа

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

Убедитесь, что .iterm2_shell_integration.bash исходит от .bash_profile.

2
27.01.2020, 20:48

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

Я подключался по ssh через linux и подтверждаю, что исходное решение оказалось недостаточным. I

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

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

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

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

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

Исходный скрипт isiterm2.sh (написанный автором iTerm2 gnachman, можно найти здесь на 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 Terminal, так и iTerm2.

5
27.01.2020, 20:48

Это происходит из-за нестандартных управляющих кодов -Iterm2s:Собственные управляющие коды , которые были опубликованы здесь:Интеграция с оболочкой отображает недопустимые символы на терминалах 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"

0
27.01.2020, 20:48

Теги

Похожие вопросы