Как изменить название окна монетного двора?

MinTTY – это новая консоль по умолчанию для Cygwin.

Что такое команда оболочки (что-то, что я могу добавить в .bashrc, или даже лучше, в .zshrc), чтобы изменить заголовок окна MinTTY?

Я хотел бы, чтобы заголовок окна являлся путём к текущему каталогу и обновлял его при переключении каталогов внутри консоли.

Прочитав некоторые ответы на этот вопрос, я не смог быстро понять, почему название моего терминала остается неизменным.

Недостаточно следующей командной строки:

 echo -ne "\e]0;MYTITLE\a" 

Вам нужно будет проверить, что другие переменные среды не включают эту директиву. Например, при установке по умолчанию Cygwin вы можете иметь следующее определение подсказки:

 PS1=\[\e]0;\w\a\]\n\[\e[32m\]\[email protected]\h \[\e[33m\]\w\[\e[0m\]\n$ 

Как вы видите, первая часть подсказки определяет заголовок окна:

 \e]0;\w\a 

То, что я сделал, чтобы изменить это поведение, заключается в том, чтобы по умолчанию сохранить исходное значение PS1 и предоставить способ установки пользовательского заголовка. Вы можете добавить в него следующее .bashrc :

 function settitle() { export PS1="\[\e[32m\]\[email protected]\h \[\e[33m\]\w\[\e[0m\]\n$ " echo -ne "\e]0;$1\a" } function settitlepath() { export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\[email protected]\h \[\e[33m\]\w\[\e[0m\]\n$ " } 

Таким образом, вы можете получить путь в заголовке окна:

 settitlepath 

Или задать пользовательскую строку:

 settitle "MYWonderfullTest here" 

Надеюсь это поможет

Вы можете изменить его с помощью управляющей последовательности xterm для этого, например:

 echo -ne '\e]0;Title\a' 

См. По адресу : http://code.google.com/p/mintty/issues/detail?id=241.

В bash переменная PROMPT_COMMAND может быть установлена ​​для хранения нескольких команд, разделенных точками с запятой. Вы можете использовать это, чтобы сделать тот же самый параметр названия, как описано в другом ответе, который говорит о zsh.

 1) echo $ PS1 и скопируйте эту строку в буфер обмена или текстовый редактор, как в
    Эхо $ PS1
 2) отредактируйте файл ~ / .bash_profile и добавьте код оболочки ниже, заменив $ PS1 по мере необходимости, но сохраните переменную $ {TERMINAL_TITLE} в «ложном» состоянии.
 3) Сохраните файл и установите переменную окружения TERMINAL_TILE, как в
    Export TERMINAL_TITLE = "My Custom Title"
 4) Настройте свой профиль bash, как в
    ,  ~ / .bash_profile
 наслаждаться

 Если [-z "$ {TERMINAL_TITLE}"]
 тогда
   PS1 = '\ [\ e] 0; \ w \ a \] \ n \ [\ e [32m \] \ u @ \ h \ [\ e [33m \] \ w \ [\ e [0m \] \ N \ $ '
 еще
   PS1 = '\ [\ e] 0; $ {TERMINAL_TITLE} \ a \] \ n \ [\ e [32m \] \ u @ \ h \ [\ e [33m \] \ w \ [\ e [0m \ ] \ N \ $ '
 фи

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

 zsh -xv 

Изменение каталога явно вызывает другую функцию под названием title() после precmd() и chpwd() , эффективно перекрывая их. Поэтому я включил это в мой .zshrc, и это сработало.

 function settitle() { echo -ne "\033]2;"$1"\007" } function title() { settitle $(cygpath -m `pwd`) } 

Если вы предпочитаете вместо этого использовать chpwd() или precmd() , просто отключите функцию title(){} : title(){} .

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

Мой ярлык mintty настроен как:

 C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /usr/bin/bash.exe -l -c /scripts/connect.sh 

Сценарий connect.sh, который я написал, который вызывается в ярлыке выше, подскажет мне для сервера, с которым я хочу подключиться, и выполнить функцию разрешения, определенную в скрипте.

connect.sh

 #!/bin/bash echo "Enter servername when prompted" echo -n "servername: " read servername function settitle() { echo -ne "\033]2;"$servername"\007" } function title() { settitle $(cygpath -m `pwd`) } settitle ssh [email protected]$servername 

Поместите это в .zshrc:

 # Change title of MinTTY to current dir function settitle() { echo -ne "\033]2;"$1"\007" } function chpwd() { settitle $(cygpath -m `pwd`) } 

Последовательность специальных символов в определении функции делает MinTTY изменением названия окна.

В zsh , если вы определяете функцию со специальным именем chpwd, она будет вызываться после каждого chdir .

Работает на WinXP, с Cygwin 1.7 и MinTTY работает zsh.

Попробуйте добавить это в .bash_profile

export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD/#$HOME/~}\007"'

Меня устраивает.

Interesting Posts

Disambiguate перегруженный указатель функции участника передается как параметр шаблона

Можно ли использовать запрос Algolia в FirestoreRecyclerOptions?

Самый простой способ объединить выпуск в один JAR-файл

Как сделать крановые интерфейсы постоянными после перезагрузки?

В IndexedDB есть способ сделать отсортированный составной запрос?

Кажется, создается объект из интерфейса; как это работает?

Почему компиляторы C и C ++ допускают длину массива в сигнатурах функций, когда они никогда не применяются?

Соблюдать весь диск?

Сохранение новой записи Opera Wand для ранее уволенного сайта

Как остановить анализ XML-документа с помощью SAX в любое время?

Как получить доступ к старым разделам после установки Ubuntu?

Как использовать std :: sort для сортировки массива в C ++

Android: невозможно найти явный class активности … startActivity from the PreferenceActivity

Удаление Технического предварительного просмотра Windows из Центра обновления Windows

Вызов C ++ dll из Java

Давайте будем гением компьютера.