Exibe corretamente o título da sessão da tela GNU na barra de status

0

na tela GNU, quero que o título da sessão seja exibido na barra de status. Está funcionando, mas não exatamente como eu queria.

Eu tenho o seguinte backtick definido no meu .screenrc:

backtick 100 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

Como eu disse, ele exibe o título da sessão de tela, mas também o PID daquela sessão; mostra, por exemplo, algo como

1234.foo

em que foo é o nome dessa sessão.

Minha pergunta: Como posso remover os números, incluindo o ponto, para mostrar apenas o nome da sessão? (Eu obviamente não estou muito familiarizado com o grep ...)

    
por Alf 25.09.2014 / 20:25

2 respostas

0

como eu disse no meu comentário para a resposta do yoshikaw, eu não sou capaz de usá-lo (embora eu tenha certeza de que há uma maneira de fazer isso).

No entanto, encontrei outra maneira de fazer o que eu quero usando o comando tr :

backtick 100 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*" | tr -d [:digit:]' | tr -d .

O primeiro comando tr apaga o PID (os números) e o segundo comando tr apaga o ponto.

    
por 09.10.2014 / 17:28
1

No seu caso, usando o awk para obter o nome da sessão da saída de screen -ls facilmente.

screen -ls | grep --color=no -o "$PPID[^[:space:]]*" | awk 'BEGIN { FS="."} { print $NF }'

no meu ambiente de teste:

(default sessionname)
$ screen -ls | grep --color=no -o "$PPID[^[:space:]]*"
12817.pts-5.hostname
$ screen -ls | grep --color=no -o "$PPID[^[:space:]]*" | awk 'BEGIN { FS="."} { print $NF }'
hostname

(sessionname is 'foo')
$ screen -ls | grep --color=no -o "$PPID[^[:space:]]*"
12817.foo
$ screen -ls | grep --color=no -o "$PPID[^[:space:]]*" | awk 'BEGIN { FS="."} { print $NF }'
foo

Se você usa a última versão do GNU Screen (> = 4.1.0), você pode usar %S escape string no legenda ou hardstatus para exibir o nome da sessão.

hardstatus alwayslastline "[%S] some strings you like..."
    
por 27.09.2014 / 17:53