Set screen-title from shellscript
Czy Można ustawić Screen-Title
używając skryptu powłoki?
Myślałem o czymś takim jak wysłanie komend klawiszowych Strg+A Shift-A Name <Enter>
Szukałem około godziny, jak emulować naciśnięcia klawiszy w skrypcie powłoki, ale nie znalazłem odpowiedzi.
Dzięki za pomoc!Beerweasle
9 answers
Możesz ustawić tytuł ekranu / xterm używając następujących linii:
#!/bin/bash
mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'
[UPDATE] - na życzenie dołączam również rozwiązanie zaproponowane przez @ Espo poniżej:
W zależności od wersji xterm lub dystrybucji Linuksa powyższa linia może lub nie może działać i możesz spróbować xterm-defaults:
#!/bin/bash
mytitle="Some title"
echo -e '\033]2;'$mytitle'\007'
Aby uzyskać więcej informacji, zobacz: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 lub zapoznaj się z odpowiedzią @Espo poniżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-24 07:43:16
Z http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3
Sekwencje ucieczki Xterm
Tytuły okien i ikon mogą zostać zmienione w uruchomionym xterm za pomocą XTerm sekwencje ucieczki. Następujące sekwencje są użyteczne pod tym względem:
ESC]0;stringBEL
-- Ustaw nazwę ikon i tytuł okna na stringESC]1;stringBEL
-- Ustaw nazwę ikony na stringESC]2;stringBEL
-- Ustaw tytuł okna na stringGdzie ESC jest postacią ucieczki (\033), a BEL jest znakiem dzwonu (\007).
Drukowanie jednej z tych sekwencji w xterm spowoduje okno lub tytuł ikony do zmiany.
Uwaga: sekwencje te dotyczą większości pochodne xterm, takie jak nxterm, kolor-xterm i rxvt. Inny terminal typy często używają różnych ucieczek; Zobacz też załącznik do przykładów. Na pełna lista sekwencji xterm escape zobacz plik ctlseq2.txt, który przychodzi z xterm dystrybucja, lub xterm.seq, który pochodzi z rxvt Dystrybucja.
Drukowanie sekwencji ucieczki
Dla informacji, które są stałe przez cały okres istnienia tej powłoki, takich jak host i nazwa użytkownika, będzie / align = "left" / łańcuch w pliku rc powłoki:
echo -n "\033]0;${USER}@${HOST}\007"
Powinien produkować tytuł jak username@hostname, zakładając powłokę zmienne $USER I $HOST są ustawione prawidłowo. Wymagane opcje dla echo maja różnią się w zależności od powłoki (patrz przykłady poniżej).
Dla informacji, które mogą ulec zmianie podczas żywotność powłoki, np. prąd working directory, te ucieczki naprawdę trzeba stosować za każdym razem monit się zmienia. W ten sposób ciąg jest aktualizowany przy każdym poleceniu wystawiasz i możesz śledzić informacje takie jak bieżąca praca katalog, nazwa użytkownika, nazwa hosta itp. Niektóre powłoki zapewniają specjalne funkcje w tym celu niektórzy nie i my trzeba wstawić tytuł sekwencje bezpośrednio do ciągu zachęty. To jest zilustrowane w następnej sekcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 13:49:53
Poniżej przedstawiono inne sposoby zmiany nazw tytułów ekranów:
Dodanie następujących ustawień do .ssh/config
ustawia tytuł ekranu automatycznie po zalogowaniu się do systemu przy użyciu SSH:
Host *
PermitLocalCommand yes
LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\"
Zamiast %h
, która reprezentuje nazwę hosta komputera, z którym się łączysz, możesz użyć %n
, która jest rzeczywistą nazwą / aliasem używanym do połączenia z komputerem.
Uwaga: Aby móc używać parametrów localhost %N I %h, potrzebujesz OpenSSH >= v5.1. Sprawdź 'man ssh_config', aby uzyskać więcej informacji na temat polecenia lokalnego.
Aby automatycznie przywrócić tytuł, z powrotem do nazwy hosta localhost, po zamknięciu sesji SSH, możesz dodać sekwencję specjalną do zmiennej prompt PS1
w .bashrc
:
export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
export PS1=${PS1}'\[\033k\h\033\\\]'
fi
Te sztuczki są szczególnie przydatne podczas korzystania z konfiguracji .screenrc
, która pokazuje, na jakim ekranie 'zakładka' aktualnie pracujesz. Dodaj coś podobnego do .screenrc
, aby to zadziałało:
caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-19 22:38:08
Wypróbuj poniższe polecenia, nie musisz edytować żadnego pliku lub konfiguracji jak ~/.bashrc, może być używany w czasie wykonywania.
Ustaw statyczny tekst jako tytuł: (mój tytuł)
export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Ustaw zmienną lokalną / globalną jako tytuł: ($USER)
export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Set command output as title: (hostname)
export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Ustaw na wartość domyślną (Cofnij):
export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-20 01:30:36
set_screen_title ()
{
echo -ne "\ek$1\e\\"
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-06 13:49:17
Możesz również wywołać screen i powiedzieć mu, aby ustawił tytuł:
screen -X title "new title"
Jeśli jesteś w oknie ekranu, ustawi nazwę tego okna. Jeśli nie ma Cię na ekranie, ustawi nazwę ostatnio otwartego okna.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-24 22:14:32
Aby dodać do odpowiedzi Espo, sekwencje escape xterm można również zastosować do zmiennej 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
Przykład
PS1='\e]0;string\a'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-04 22:17:32
Aby włączyć automatyczną aktualizację tytułu podczas przeskakiwania z ssh, dodaj to do
~/.bashrc
ssh() {
echo -n -e "\033k$1\033\\"
/usr/bin/ssh "$@"
echo -n -e "\033k`hostname -s`\033\\"
}
echo -n -e "\033k`hostname -s`\033\\"
Zobacz http://linuxepiphany.blogspot.com.ar/2010/05/good-screenrc-config-setup.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-09 19:06:05
# add the following in your ~/.bashrc or ~/.bash_profile
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
Lub jeszcze lepiej Skopiuj całą koncepcję dostosowywania konfiguracji bash między wieloma hostami z tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-28 14:36:23