Domanda Imposta il titolo della schermata da shellscript


È possibile impostare il Screen-Title usando uno script di shell?

Ho pensato a qualcosa come inviare i comandi chiave Strg+A Shift-A Name <Enter>

Ho cercato circa un'ora su come emulare le sequenze di tasti in uno script di shell, ma non ho trovato la risposta.

Grazie per l'aiuto!

Beerweasle


44
2017-11-06 13:37


origine


risposte:


È possibile impostare il titolo dello schermo / xterm usando le seguenti linee:

#!/bin/bash

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

[AGGIORNAMENTO] - Su richiesta includo anche la soluzione proposta da @Espo di seguito:

A seconda della versione di xterm o della distribuzione di Linux, la riga sopra può o non può funzionare e puoi provare i valori predefiniti di xterm:

#!/bin/bash

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

Per maggiori informazioni sui dettagli vedi: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 oppure consultare la risposta di @Espo di seguito.


45
2017-11-06 13:49



A partire dal http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

sequenze di fuga di xterm

I titoli delle finestre e delle icone possono essere modificati   in un xterm in esecuzione usando XTerm   sequenze di fuga. Il seguente   le sequenze sono utili a questo riguardo:

  • ESC]0;stringBEL - Imposta il nome dell'icona e il titolo della finestra su stringa
  • ESC]1;stringBEL - Imposta il nome dell'icona su stringa
  • ESC]2;stringBEL - Imposta il titolo della finestra su stringa

dove ESC è il carattere di fuga   (\ 033) e BEL è il carattere della campana   (\ 007).

Stampa di una di queste sequenze all'interno   il xterm causerà la finestra o   titolo dell'icona da modificare.

Nota: queste sequenze si applicano alla maggior parte   derivati ​​xterm, come nxterm,   color-xterm e rxvt. Altro terminale   i tipi spesso usano fughe diverse; vedere   l'appendice per gli esempi. Per il   elenco completo delle sequenze di escape di xterm   guarda il file ctlseq2.txt, che viene   con la distribuzione xterm, o   xterm.seq, che viene fornito con rxvt   distribuzione.

Stampa delle sequenze di escape

Per informazioni che è costante   per tutta la durata di questa shell,   come host e username, lo farà   basti semplicemente echeggiare la fuga   stringa nel file rc della shell:

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

dovrebbe produrre un titolo simile   username @ hostname, assumendo la shell   le variabili $ USER e $ HOST sono impostate   correttamente. Le opzioni richieste per   l'eco può variare a seconda della shell (vedi esempi)   sotto).

Per informazioni che possono cambiare durante   la vita della shell, come la corrente   directory di lavoro, queste fughe   davvero bisogno di essere applicato ogni volta   il prompt cambia. In questo modo il   la stringa viene aggiornata ad ogni comando   emetti e puoi tenerne traccia   informazioni come il lavoro corrente   directory, nome utente, nome host, ecc.   Alcune shell forniscono funzioni speciali   per questo scopo, alcuni no e noi   devono inserire le sequenze del titolo   direttamente nella stringa di richiesta. Questo   è illustrato nella prossima sezione.


19
2017-11-06 13:49



I seguenti sono altri modi per scrivere la rinomina dei titoli di schermo:

Aggiunta delle seguenti impostazioni a .ssh/config imposta automaticamente il titolo dello schermo all'accesso a un sistema tramite SSH:

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

Invece di %h, che rappresenta il nome host della macchina con cui ci si connette, è possibile utilizzarlo %n, che è il nome / alias effettivo che hai usato per connetterti alla macchina.

NOTA: è necessario OpenSSH> = v5.1 per poter utilizzare i parametri Localhost% n e% h. Controlla 'man ssh_config' per maggiori informazioni su LocalCommand.

Per ripristinare automaticamente il titolo, tornare a quello del nome host dell'host locale, dopo aver chiuso la sessione SSH, è possibile aggiungere una sequenza di escape alla variabile prompt PS1 in .bashrc :

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

Questi trucchi sono particolarmente utili quando si usa a .screenrc config che ti mostra in quale schermata 'tab' stai attualmente lavorando. Aggiungi qualcosa come il seguente a .screenrc per farlo funzionare:

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

10
2018-06-22 14:03



Prova i seguenti comandi, non c'è bisogno di modificare alcun file o configurazione come ~ / .bashrc, può essere usato in fase di runtime.

Imposta il testo statico come titolo: (Il mio titolo)

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

Imposta la variabile locale / globale come titolo: ($ USER)

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

Imposta l'output del comando come titolo: (nome host)

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

Imposta su predefinito (Ripristina indietro):

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

8
2018-03-20 00:52



set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}

7
2017-11-06 13:49



Puoi anche chiamare lo schermo e dirgli di impostare un titolo:

screen -X title "new title"

Se ti trovi in ​​una finestra di schermo, imposterà il nome di quella finestra. Se non sei nella schermata, imposterà il nome della finestra aperta più di recente.


3
2018-02-24 22:14



Per aggiungere alla risposta di Espo, le sequenze di escape di xterm possono essere applicate anche a Bash PS1 variabile

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

Esempio

PS1='\e]0;string\a'

2
2018-05-04 22:17



Per abilitare l'aggiornamento automatico del titolo saltando con ssh, aggiungilo a

~ / .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\\"

Vedere http://linuxepiphany.blogspot.com.ar/2010/05/good-screenrc-config-setup.html


1
2018-02-08 02:54