ekranın oturum adını hardstatus'a nasıl ekleyebilirim?


17

Farklı projeler için farklı ekran oturumları kullanıyorum. Başlangıç ​​ekranı gibi screen -S project1. Şimdi, zor durum satırında 'proje1' den bahsetmek istiyorum.

Oturum adı, STY: ortam değişkeninden elde edilebilir STY=13539.project1.
Ama bunu ekrana nasıl getirebilirim? Backtick komutunu ve% `i hardstatus'ta denedim, ama doğru yapamıyorum.

Ben ne yaptım:

.screenrc:

hardstatus string '%H:%`'
backtick 0 30 30 echo $STY

şanssız, boş% `.

backtick 0 30 30 sessionname

hala şans yok, oturum adı: Bulunamadı

Yanıtlar:


18

Bu dizeyi (istenirse ek bilgilerle birlikte) aşağıdakilere ekleyebilirsiniz $PS1:

\[\e]0;$STY\007

değişkenin değerlendirmesini geciktirmek için tek tırnak içine alın. Ardından bunu şu adrese ekleyin ~/.screenrc:

hardstatus string '%H:%h'

Ne yazık ki, özellik için ortaya çıkardığı komutların ortamında screenayarlanmamış .$STYbacktick

Yukarıdaki seçenek yerine başka bir seçenek:

hardstatus string '%H:%`'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

Bunun avantajı, sessionnamekomut kullanılarak yapılan değişiklikleri takip etmesidir. İlk seçenek değil.

Düzenle:

Gönderen burada :

$ STY henüz ekran kaynakları .screenrc olduğunda ayarlanmadığından, bu hileyi .screenrc dosyasında kullanabilirsiniz:

    screen 
    screen $SHELL -c 'screen -X caption always "$STY"' 

İlk pencereye bir ekran komutu gönderirim.


1
Şununla başlayan çözüm için backtick: (1.) backtickbir bash yerleşik mi? gnu-ekran komutu? bir ikili yürütülebilir? bir man sayfası var mı? (2.) Çalıştığını biliyorum çünkü denedim ama gnu-screen .screenrcsözdizimi hardstatuskomut için bir satır gerektirdiğinde yürütmek için nasıl iki satırlık bir komut alırsınız ? (3.) oturum adından sonra bazı metinlerin eklenmesine izin vermek için komutunuzu nasıl değiştirebilirim?
Trevor Boyd Smith

@TrevorBoydSmith: backtickbir screenkomuttur. Bunu man sayfasında arayın screen. Sorduğunuz soruların geri kalanıyla ilgili yeni bir soru yayınlamanız en iyisi olabilir. Hardstatus çıktısının ekranda iki satır içerebileceğini sanmıyorum. Örneğimde ne yaptığını kullanmak yerine sedveya awkyerine ek metin ekleyebilirsin. grepgrep
sonraki duyuruya kadar duraklatıldı.

"İki satır" dediğimde, ne demek istediğimi yeniden ifade edeyim, sabit durum için iki satırlı bir ekran istemiyorum. Ben %` ve backtickayrı satırlarda varlık ile karıştı ... onlar ilgili görünmüyordu ama şimdi ben ilgili / gerekli / geçerli-sözdizimi (oldukça garip sözdizimi IMO olsa da) görmek için belgeleri okuyunbacktick .
Trevor Boyd Smith

3

Benim için bu %S, zor durumdaki yerleştirme ile kolayca çalışır .

MWE (.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

Ancak, oturum adı kimliği olmadan görüntülenir (gibi ${STY#*.}); sizin örnekte: project1.

(Tamlık için burada ve burada diğer sorulara aynı cevap ).


2
FYI, "% S" gnu-screen'in yeni sürümlerinde (benim için Fedora 21 sürümünde çalışır) çalışır, ancak eski sürümleri (CentOS 6 sürümünde benim için çalışmaz) çalışmaz.
Trevor Boyd Smith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.