Wyświetlanie nazwy sesji ekranowej GNU i tytułu okna w wierszu poleceń powłoki

11

Czy istnieje sposób przedstawienia nazwy sesji ekranowej GNU i tytułu okna w zachęcie powłoki (powiedzmy, zdefiniowany przez Bash monit PS1)?

brandizzi
źródło

Odpowiedzi:

14

Screen dostarcza niektóre zmienne środowiskowe (z screen(1) strony):

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

„W czasie tworzenia” oznacza, że ​​jeśli zmienisz numerację okna (używając numberpolecenia screen ), powłoka nie zostanie poinformowana o zmianie, a $ WINDOW pozostanie taki sam jak numer pierwszego okna.

Możesz użyć czegoś takiego jak:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '
Arcege
źródło
1
Doskonały! Właśnie tego szukałem. BTW, istnieje sposób na uzyskanie tytułu okna, zamiast numeru okna?
brandizzi,
Nie wiem, że nie ma interfejsu API dla ekranu, a kiedy wydajesz polecenia, nie ma wyjścia - przechodzi do bieżącego okna na ekranie. Na przykład screen -xr 2466 -X windows.
Arcege,
Chociaż prawdopodobnie jest to przypadek zmiany numeracji, czy istnieje sposób na uzyskanie dostępu do nazwy okna, jeśli jest ustawione za pomocą Ctrl-a A?
Thalis K.
1
Jeśli GNU screenzostało skompilowane z -Qopcją (zapytanie), możesz uruchamiać niektóre polecenia, takie jak titlei, windowsi wyświetlać dane na standardowe wyjście, jednak bez końcowego znaku nowej linii.
Arcege
3

Zawsze używam dokładnych nazw sesji ekranowych. Następnie mogę dodać ekran STY env var z usuniętym identyfikatorem numerycznym (dzięki dimo414) do PS1. Nie ozdabiam go nawiasami klamrowymi ani niczym innym, ponieważ nie zawsze jestem na sesji. Prosty przykład:

PS1='\u@\h ${STY#[0-9]*.} \w$ '
nastrój
źródło
1

Używam tego:

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

usuwa numer procesu z ${STY}
dołączonego numeru okna (jak wspomniano „w czasie tworzenia”)
zawiera tytuł okna (zwrócony z screen -Q title)

uwagi:

  • przy pierwszym uruchomieniu screen -Qczeka na naciśnięcie klawisza powrotu
  • ustawiłem tytuł okna za pomocą Ca CA, a następnie źródła mój .profile, aby zaktualizować monit
gotjosh
źródło
5
Używanie ${STY#[0-9]*.}pozwala uniknąć konieczności przepuszczania rur sed.
dimo414,