it-roy-ru.com

Определение сценария оболочки

Возможно, вы определились со сценарием?

Европейский союз по защите окружающей среды.ctrl+Ashift-ANamename__enter

Это делается в виде сценария "Shell, mas não encontrei a resposta".

47
Beerweasle

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

#!/bin/bash

mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'

[ОБНОВЛЕНИЕ] - по запросу я также включаю решение, предложенное @Espo ниже:

В зависимости от вашей версии xterm или вашего дистрибутива linux приведенная выше строка может работать или не работать, и вы можете попробовать xterm-defaults:

#!/bin/bash

mytitle="Some title"
echo -e '\033]2;'$mytitle'\007'

Для получения дополнительной информации см .: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 или обратитесь к ответу @Espo ниже.

46
Shirkrin

От http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

xterm escape-последовательности

Названия окон и значков могут быть изменены в работающем xterm с помощью XTerm escape последовательности Следующие последовательности полезны в этом отношении:

  • ESC]0;stringBEL - установить имя иконки и заголовок окна в строку
  • ESC]1;stringBEL - установить имя иконки в строку
  • ESC]2;stringBEL - установить заголовок окна в строку

где ESC - escape-символ (\ 033), а BEL - символ колокола (\ 007).

Печать одной из этих последовательностей в xterm вызовет окно или название значка, которое будет изменено.

Примечание: эти последовательности применимы к большинству производные xterm, такие как nxterm, color-xterm и rxvt. Другой терминал типы часто используют разные экранированные символы; увидеть приложение для примеров. Для полный список escape-последовательностей xterm смотрите файл ctlseq2.txt, который приходит с дистрибутивом xterm, или xterm.seq, который поставляется с rxvt распределение.

Печать escape-последовательностей

Для информации, которая является постоянной на протяжении всей жизни этой оболочки, например, Host и username, это будет достаточно просто повторить побег строка в файле оболочки rc:

    echo -n "\033]0;${USER}@${Host}\007"

должен производить заголовок, как username @ hostname, при условии, что Shell установлены переменные $ USER и $ Host правильно. Обязательные параметры для Эхо может варьироваться в зависимости от Shell (см. примеры .__ ниже).

Для информации, которая может измениться в течение время жизни оболочки, например текущее рабочий каталог, эти побеги действительно нужно применять каждый раз Стремительные изменения. Таким образом, Строка обновляется с каждой командой Вы выпускаете и можете отслеживать информация, такая как текущая работа каталог, имя пользователя, имя хоста и т. д. Некоторые оболочки предоставляют специальные функции для этого некоторые не делают, и мы должны вставить заголовки последовательности прямо в строку подсказки. Это иллюстрируется в следующем разделе.

19
Espo

Ниже приведены другие способы написания сценария переименования заголовков экрана:

Добавление следующих параметров в .ssh/config автоматически устанавливает заголовок экрана при входе в систему с использованием SSH:

Host *
  PermitLocalCommand yes
  LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\" 

Вместо %h, который представляет имя хоста машины, к которой вы подключаетесь, вы можете использовать %n, который является фактическим именем/псевдонимом, который вы использовали для подключения к машине.

ПРИМЕЧАНИЕ. Вам нужно OpenSSH> = v5.1, чтобы иметь возможность использовать параметры Localhost% n и% h. Проверьте 'man ssh_config' для получения дополнительной информации о LocalCommand.

Чтобы автоматически вернуть заголовок обратно к имени хоста localhost, после закрытия сеанса SSH вы можете добавить escape-последовательность к вашей переменной Prompt PS1 в .bashrc:

export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
    export PS1=${PS1}'\[\033k\h\033\\\]'
fi

Эти приемы особенно полезны при использовании конфигурации .screenrc, которая показывает, на какой «вкладке» экрана вы работаете в данный момент. Добавьте что-то вроде следующего к .screenrc, чтобы это работало:

caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"
11
Johnny Halfmoon

Попробуйте приведенные ниже команды, нет необходимости редактировать какой-либо файл или конфигурацию, например ~/.bashrc, может использоваться во время выполнения.

Установить статический текст в качестве заголовка: (My Title)

export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '

Установить локальную/глобальную переменную в качестве заголовка: ($ USER)

export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '

Установить вывод команды в качестве заголовка: (имя хоста)

export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '

Установить по умолчанию (Вернуть назад):

export PS1='\[\e]0;\[email protected]\h: \w\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
10
Seff
set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}
7
Randy Proctor

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

screen -X title "new title"

Если вы находитесь в окне экрана, оно установит имя этого окна. Если вы не на экране, он установит имя последнего открытого окна.

3
idbrii

Чтобы добавить ответ Espo, escape-последовательности xterm можно также применить к переменной Bash PS1

ESC]0;stringBEL -- Set icon name and window title to string
ESC]1;stringBEL -- Set icon name to string
ESC]2;stringBEL -- Set window title to string

Пример

PS1='\e]0;string\a'
2
Steven Penny

Чтобы включить автоматическое обновление заголовков при переходе по ssh, добавьте это в ~/.bashrc:

ssh() {
  echo -n -e "\033k$1\033\\"
  /usr/bin/ssh "[email protected]"
  echo -n -e "\033k`hostname -s`\033\\"
}
echo -n -e "\033k`hostname -s`\033\\"

Смотрите http://linuxepiphany.blogspot.com.ar/2010/05/good-screenrc-config-setup.html

1
mijhael3000
 # add the following in your ~/.bashrc or ~/.bash_profile
 Prompt_COMMAND='printf "\033]0;%[email protected]%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

или даже лучше скопируйте всю концепцию для настройки ваших bash-конфигов между многими хостами из здесь

0
Yordan Georgiev

Моим решением этой проблемы было создание скрипта bash и добавление его в мой файл ~/.bashrc:

set-title() {
  ORIG==$PS1
  TITLE="\e];[email protected]\a"
  PS1=${ORIG}${TITLE}
}

Теперь, когда я нахожусь в любом сеансе оболочки bash, я набираю «set-title требуемый_титл», и он меняется на «желаемый заголовок» . Это работает для нескольких версий Ubuntu, в настоящее время на Kinetic 16.04

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

0
Flurin Arner