Экран GNU: новая смена имени окна

Я использую эту остроту:

IP=$(/sbin/ifconfig | grep -e "inet:" -e "addr:" | grep -v "inet6" | grep -v "127.0.0.1" | head -n 1 | awk '{print $2}' | cut -c6-)

Использование ifconfig (широко доступный), не берет localhost обратитесь, не связывайте Вас с данным именем интерфейса, не принимайте во внимание IPv6, и пытается получить IP первого доступного сетевого интерфейса.

20
19.11.2013, 00:04
2 ответа

Делайте свое изменение оболочки заголовком окна каждый раз, когда это изменяет каталог, или каждый раз, когда это отображает подсказку.

Для Вашего ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

Или для Вашего ~/.zshrc (для zsh пользователей):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

Для получения дополнительной информации ищите в соответствии с Динамическими заголовками в Экранном руководстве, или в соответствии с “Заголовками (называющий окна)” в странице справочника.

21
27.01.2020, 19:44
  • 1
    I copypasted удар один на моем .bashrc и это испускает эти ошибки: удар: PROMPT_COMMAND: строка 0: синтаксическая ошибка около неожиданного маркера ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title' –  liewl 19.01.2011, 07:40
  • 2
    @David: Извините, точка должна была накопить команды в PROMPT_COMMAND если уже было что-то, но у меня были компоненты в неправильном порядке. –  Gilles 'SO- stop being evil' 19.01.2011, 10:08
  • 3
    Большой прием @Gilles. Для тех, кому нравится сохранять заголовки окон короткими, можно отбросить полный путь и только сохранить базовое имя. Просто замена $HOME/*) HPWD="~${HPWD#$HOME}";; с *) HPWD=`basename "$HPWD"`;; –   31.03.2011, 00:32

Вы можете поместить это в .bashrc, чтобы изменить имя терминала (имя окна) на последний каталог (или имя файла), в котором вы находитесь (работаете).

случай "$TERM" в xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"". ;; *) ;; esac

более подробно описано здесь: link

0
27.01.2020, 19:44

Теги

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