Comando Screen define o título do shell para o nome do host atual

0

Gostaria de saber como definir o título do shell para o nome do host no qual estamos atualmente conectados. Meu cenário é assim. Eu entro no host A e, em seguida, abro a tela e crie várias novas janelas e ssh para diferentes hosts nessas janelas. Então, eu gostaria do título da tela na parte inferior para mostrar o host atual em que está.

    
por Sanjan 01.12.2017 / 04:52

1 resposta

1

Uma maneira de fazer isso é usar o recurso LocalCommand de ssh . Com esse método, uma seqüência de escape para alterar o título do terminal será impressa após uma conexão bem-sucedida com um host remoto.

Edite ou crie ~/.ssh/config para incluir algo como:

Host *
    PermitLocalCommand yes
    LocalCommand printf '3]0;%%s
printf '3]0;%s
lssh () {
    /path/to/ssh "$@"
    printf '3]0;%s
Host *
    PermitLocalCommand yes
    LocalCommand printf '3]0;%%s
printf '3]0;%s
lssh () {
    /path/to/ssh "$@"
    printf '3]0;%s%pre%7' "$(uname -n)"
}
7' "$(uname -n)"
7' '%h'
7' "$(uname -n)" }
7' "$(uname -n)"
7' '%h'

A desvantagem desse método é que o título permanece alterado após o logout do servidor remoto. Você pode contornar isso com:

%pre%

Se você quiser automatizar isso, você pode usar uma função:

%pre%

Esta resposta assume que o emulador de terminal usa as mesmas seqüências de escape do XTerm. Se este não for o caso, você deve verificar a documentação do seu emulador de terminal específico.

Uma ressalva no caso da tela GNU é que uma única janela de terminal pode conter várias janelas virtuais. Nesse caso, você poderia usar uma seqüência de escape diferente ( 3k%s3\ ) para definir o título interno de uma única janela virtual.

    
por 01.12.2017 / 09:01

Tags