Mostra il nome della sessione della schermata GNU e il titolo della finestra nel prompt della shell


11

C'è un modo per presentare il nome della sessione dello schermo GNU e il titolo della finestra nel prompt della shell (diciamo, il prompt di Bash definito da PS1)?

Risposte:


14

Lo schermo fornisce alcune variabili d'ambiente (dalla screenmanpage (1)):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

"Al momento della creazione" significa che se rinumerate una finestra (usando il numbercomando screen ), la shell non verrà informata della modifica e $ WINDOW sarà sempre lo stesso del primo numero di finestra.

Puoi usare qualcosa come:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
Perfetto! Questo è quello che stavo cercando. A proposito, c'è un modo per ottenere il titolo della finestra, anziché il numero della finestra?
brandizzi,

Non che io sappia, non c'è api per lo schermo e quando si emettono comandi non viene prodotto alcun output: si passa alla finestra corrente nella schermata. Per esempio screen -xr 2466 -X windows.
Arcege,

Anche se probabilmente rientra nel caso di rinumerazione, c'è un modo per accedere al nome della finestra se è impostato con Ctrl-a A?
Thalis K.,

1
Se GNU screenè stato compilato con l' -Qopzione (query), quindi è possibile eseguire alcuni comandi, come ad esempio titlee windowsed avere la visualizzazione dei dati sullo standard output, tuttavia, senza un fine riga.
Arcege,

3

Uso sempre nomi di sessioni dello schermo precisi. Quindi posso aggiungere lo STY env var dello schermo, con l'id numerico rimosso (grazie a dimo414), su PS1. Non lo decoro con parentesi graffe o altro perché non sono sempre in una sessione. Esempio semplice:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

Lo uso questo:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

rimuove il numero di processo da ${STY}
include il numero della finestra (come indicato "al momento della creazione")
include il titolo della finestra (come restituito da screen -Q title)

Appunti:

  • la prima volta che viene eseguito, screen -Qattende una sequenza di tasti di ritorno
  • ho impostato il titolo della finestra con Ca CA e quindi ho il mio .profile per aggiornare il prompt

5
L'uso ${STY#[0-9]*.}evita di dover passare attraverso sed.
dimo414,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.