Definindo um nome para uma sessão de tela

44

Existe uma maneira de atribuir um nome específico a uma sessão de tela unix? Por exemplo, digamos que estou executando o mesmo programa várias vezes, cada um com parâmetros diferentes e quero dizer qual é qual.

bem, na verdade
fonte
Não é uma questão de programação. Deve ir para SuperUser ou Unix.
0xC0000022L

Respostas:

54

Você pode nomear uma sessão ao iniciá-la com a -S nameopção Na tela em execução, você pode alterá-lo digitando CTRL-a, :sessionname name. Você pode visualizar as sessões de tela em execução screen -lse conectar-se a uma por nome com screen -xS name.

Em uma sessão de tela única, você também pode nomear cada janela. Faça isso digitando CTRL-a, Ao nome que você deseja. Você pode visualizar uma lista interativa de janelas nomeadas digitando CTRL-a, "e selecione a lista para a qual deseja alternar.

Nomear telas e terminais nas telas é realmente útil para lembrar o que são e por que você os iniciou em primeiro lugar.

Lars Yencken
fonte
É possível renomear uma sessão da tela depois que ela é iniciada (usando :sessionname NEWNAME), mas é "geralmente desencorajado". A $STYvariável de ambiente ainda se refere ao nome original. Veja o screenmanual: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson
22

Existem dois conceitos aqui, e não tenho certeza de qual deles você tem em mente:

  • Você pode ter várias janelas de tela. Cada janela executa um shell ou outro programa. Todas as janelas são hospedadas pelo mesmo processo. C-a ccria uma janela C-a ne C-a palterna para a janela seguinte / anterior e assim por diante.
  • Você pode ter várias sessões de tela. Cada sessão é hospedada por seu próprio processo e é independente de todas as outras sessões. A tela inicial sem qualquer opção de reconexão ( -rou -R) cria uma nova sessão.

O Windows possui títulos, que podem ser definidos por meio da -topção de linha de comando, C-a Aligação de teclas, titlecomando ou \eksequência de escape. Veja a resposta do shellter para mais detalhes.

As sessões podem ter nomes. Você normalmente definiria o nome na linha de comando com a -Sopção; se você não especificar um nome, a tela cria um. Se você usa várias sessões de tela, normalmente atribui a eles nomes de sessão diferentes. Você pode listar a sessão da tela em execução com screen -ls; a primeira palavra em cada linha da sessão é 12345.sessionnameonde 12345 é o ID do processo de tela. Use screen -r sessionnameou screen -r 12345para retomar uma sessão indicada por seu nome ou ID do processo.

Gilles 'SO- parar de ser mau'
fonte
11
Nas ligações de teclas padrão, para alterar o título, você precisa usar Ca A.
enzotib
11

Ah ... Tela, isso me leva de volta ;-)

Para uma janela

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

Para várias sessões iniciadas no seu .screenrc

screen -t top 2 nice top
screen -t ....

Aqui está um link para uma cópia on-line da página de manual para tela.

Editar: adicionado

Para alterar o nome da tela atual, crie uma ferramenta de script de shell como

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

Não testado, não tenho tela disponível no sistema em que estou trabalhando.

shellter
fonte
Obrigado, isso ajuda muito. Existe alguma maneira de renomear uma sessão de tela já existente?
bem, na verdade,
@Charlotte: veja edições. Obrigado pelos votos!
precisa saber é o seguinte
Boa resposta @shellter! Estou curioso, você disse "me leva de volta" para dizer que você usa outra coisa hoje em dia (por exemplo, tmux), ou apenas que tem mais de 32 anos ?
tutuDajuju
11
@tutuDajuju: Gulp, agora que penso nisso, usei screenpelo menos 25 anos. Me retira, porque agora é um caso de uso especial que eu levaria screen. Normalmente, continuo abrindo X-Terms, mas lembro quando parecia impossível rodar Xem um PC 486 ;-) Felicidades!
shellter
@shellter FYI, eu corri o X em um PC 486 com 8Mb de RAM em 1992 ...
Eno
4

Durante a execução screen:

Ctrl+a(ou seja qual for a sua screensequência de escape)A

ninjalj
fonte
3

As respostas acima já informam como nomear uma tela quando você a inicia. Eles também apontam que uma tela não pode ser renomeada após ter sido iniciada. O título da janela pode ser definido, mas o nome usado para anexar à tela permanece pid.pty.host.

No entanto, para obter um efeito útil, descobri que o uso do alias funciona muito bem. Se eu esquecer de nomear uma tela ou me encontrar em uma sessão com várias telas que naturalmente se tornaram telas para tarefas específicas, basta definir um apelido para o comando anexar a elas.

exemplo:

alias goncompile='screen -r 2354'

A emissão do comando alias por si só lembrará as telas que você criou e o comando que você configurou para anexar a elas.

Use unaliaspara removê-los.

caoimhin
fonte