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)?

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$ '

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$ '

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

5
Używanie ${STY#[0-9]*.}pozwala uniknąć konieczności przepuszczania rur sed.
dimo414,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.