Używam różnych sesji ekranowych do różnych projektów. Ekran początkowy jak screen -S project1
. Teraz chciałbym wspomnieć o „projekcie 1” w linii hardstatus.
Nazwa sesji można uzyskać od zmiennej STY środowiska: STY=13539.project1
.
Ale jak to zrobić na ekranie? Próbowałem wykonać komendę backtick i% `na hardstatus, ale wydaje mi się, że nie potrafię tego zrobić poprawnie.
Co ja zrobiłem:
.screenrc:
hardstatus string '%H:%`'
backtick 0 30 30 echo $STY
nie ma szczęścia, pusty% `.
backtick 0 30 30 sessionname
wciąż nie ma szczęścia, nazwa sesji: Nie znaleziono
źródło
backtick
: (1.) jestbacktick
wbudowane bash? polecenie gnu-screen? binarny plik wykonywalny? czy jest strona man? (2.) Wiem, że to działa, ponieważ próbowałem, ale jak uzyskać dwuliniowe polecenie do wykonania, gdy wydaje się, że.screenrc
składnia gnu-screen wymaga jednego wiersza dlahardstatus
polecenia? (3.) Jak zmodyfikowałbym twoje polecenie, aby umożliwić dołączanie tekstu po nazwie sesji?backtick
toscreen
polecenie. Wyszukaj go na stronie podręcznika użytkownika dlascreen
. Najlepszym rozwiązaniem może być opublikowanie nowego pytania dotyczącego reszty zadawanych pytań. Nie sądzę, aby dane wyjściowe typu hardstatus mogły zajmować dwie linie na ekranie. Możesz użyćsed
lubawk
zamiastgrep
robić to, cogrep
dzieje się w moim przykładzie, a także dołączyć dodatkowy tekst.%`
ibacktick
istnienie na osobnych liniach ... nie wyglądały na powiązane, ale teraz, gdy czytam dokumentacjębacktick
, widzę, że te dwa są powiązane / konieczne / ważne-składnia (aczkolwiek dość dziwna składnia IMO).Dla mnie to łatwo działa z wstawieniem
%S
w hardstatus.MWE (.screenrc):
Jednak wyświetla nazwę sesji bez identyfikatora (jak
${STY#*.}
); w npproject1
.(Ta sama odpowiedź na inne pytania tutaj i tutaj dla kompletności).
źródło