Jak otwierać okna kart na ekranie GNU i wykonywać polecenia w każdym z nich


30

kiedy rozpoczyna się sesja o takiej nazwie screen -S name1

Chcę otworzyć okna kart w tej sesji ekranu, tak jak podczas otwierania kart w terminalu gnome w ten sposób

gnome-terminal --tab -e "some commands"

więc jak to zrobić?


ZARÓWNO chcę wiedzieć, jak otwierać zakładki do gnome terminal i chcę wykonać jakieś polecenie po tym, jak otworzę zakładkę po uruchomieniu
— Ahmed Zain El Dein

Więc technika, którą opisałem poniżej, pokazuje karty, których szukasz? Potrzebujesz sposobu na uruchomienie w nich polecenia?
— slm

ale tak naprawdę jestem początkujący i nie rozumiem, co chcę, abym dokładnie robił. Sądziłem, że istnieje składnia do otwierania kart na ekranie, ale wydaje się, że dodam trochę lich do jakiegoś filmu
— Ahmed Zain El Dein

ok, rozumiem, że chcesz, żebym skopiował to i przeszłość do tego pliku w moim domu, ale pytam o screen -t nazwa daje tytuł ekranu, jak wiem, a także chcę otworzyć te karty w nazwanej sesji na przykład screen -S name1 --tab -e "some commands"mam nadzieję, że dostaniesz to, o co pytam?
— Ahmed Zain El Dein

mmmm to są wstępnie zdefiniowane zakładki z określoną liczbą, to nie o to proszę pana :) nie wiem, ile zakładek potrzebuję w czasie wykonywania, czego chcę, jest coś podobnego do polecenia terminalu gnome, gnome-terminal --tab -e "commands " --tab -e " commands to otworzy jedno okno na przykład terminal z dwiema zakładkami :) dziękuję
— Ahmed Zain El Dein

Odpowiedzi:


73

1. Zakładki na ekranie

Szukasz tego, aby dodać do pliku .screenrc:

screen -t tab1
screen -t tab2

Oto niezły podstawowy plik .screenrc na początek z paskiem stanu itp. UWAGA: Zazwyczaj znajduje się w katalogu domowym /home/<username>/.screenrc.

screen -t validate #rtorrent
screen -t compile #irssi
screen -t bash3
screen -t bash4
screen -t bash5
altscreen on
term screen-256color
bind ',' prev
bind '.' next
#
#change the hardstatus settings to give an window list at the bottom of the
#screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

zrzut ekranu

ss sesji ekranowej

2. Karty na ekranie (z poleceniami uruchamianymi w środku)

Poniższy przykład .screenrcutworzy 2 zakładki i uruchomi po 3 polecenia echa.

screen -t tab1                                                                                     
select 0                                                                                           
stuff "echo 'tab1 cmd1'; echo 'tab1 cmd2'; echo 'tab1 cmd3'^M"                                     
screen -t tab2                                                                                     
select 1                                                                                           
stuff "echo 'tab2 cmd1'; echo 'tab2 cmd2'; echo 'tab2 cmd3'^M"                                     

altscreen on                                                                                       
term screen-256color                                                                               
bind ',' prev                                                                                      
bind '.' next                                                                                      
#                                                                                                  
#change the hardstatus settings to give an window list at the bottom of the                        
#screen, with the time and date and with the current window highlighted                            
hardstatus alwayslastline                                                                          
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'              
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

Ta technika wykorzystuje ekrany selecti stuffpolecenia, aby początkowo wybrać jedną z zakładek, a następnie „upchnąć” ciąg znaków.

zrzut ekranu

ss ekranu w / kart i poleceń

3. Tworzenie nr 2 bez użycia .screenrcpliku

Jeśli szukasz scenariusza, w którym możesz:

  1. utwórz sesję ekranową
  2. załaduj go kartami
  3. każda zakładka ma własne polecenia
  4. nie wymaga .screenrcpliku

To jest ten dla ciebie! Bądź jednak przygotowany. Ten może być trochę trudny z wierszami poleceń.

Na początek utwórz sesję ekranową:

$ screen -AdmS myshell -t tab0 bash

Przełączniki -AdmSwykonują następujące czynności:

(Patrz strona ekran mężczyzna więcej szczegółów)

-ZA

    Adapt the sizes of all windows to the size of the  current terminal. 
    By default, screen tries to restore its old window sizes when
    attaching to resizable terminals

-d -m

    Start screen in "detached" mode. This creates a new session but
    doesn't attach to it. This is useful for system startup scripts.

-S nazwa sesji

    When creating a new session, this option can be used to specify a
    meaningful name for the session. This name identifies the session for
    "screen -list" and "screen -r" actions. It substitutes the default
    [tty.host] suffix.

Teraz zacznijmy ładować go za pomocą kart + ich poleceń:

$ screen -S myshell -X screen -t tab1 vim
$ screen -S myshell -X screen -t tab2 ping www.google.com
$ screen -S myshell -X screen -t tab3 bash

Te 3 polecenia utworzą 3 dodatkowe karty i uruchomi vim, ping google i uruchomi powłokę bash. Jeśli wymienimy sesje ekranowe, zobaczymy:

$ screen -ls
There is a screen on:
        26642.myshell   (Detached)
1 Socket in /var/run/screen/S-root.

Jeśli połączymy się z sesją ekranową, myShell i wymienimy zawarte w niej zakładki, zobaczymy:

$ screen -r myshell

Naciśnij tę kombinację klawiszy: Ctrl+, Aa następnie Shift+"

Num Name                                                                   Flags

  0 tab0                                                                       $
  1 tab1                                                                       $
  2 tab2                                                                       $
  3 tab3                                                                       $

Przełączanie na tab2 :

64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=443 ttl=55 time=41.4 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=444 ttl=55 time=33.0 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=445 ttl=55 time=30.1 ms

zrzut ekranu

ss ekranu zainicjowanego z cli

Powyższe polecenia są podstawowym sposobem na osiągnięcie tego, czego szukał PO. Można to oczywiście skondensować i udoskonalić za pomocą aliasów Bash, a nawet skryptów powłoki, to tylko w celu zademonstrowania możliwości i wskazania drogi!

Referencje


2
Jeśli nie przeczytam Q, chce wykonać polecenie na początku sesji. Zazwyczajscreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
— Runium

Myślisz, że ma na myśli, otwórz ekran z kartami i uruchom polecenie w jednym z nich?
— slm

Tak. Uruchom komendę powłoki podczas uruchamiania na ekranie, zwykle tak, jak podczas logowania po uruchomieniu systemu Last login on ... Welcome to XXX, N new mails..... Przynajmniej tak czytam nagłówek Q.
— Runium

Przeczytaj jego komentarze na temat Q, chce obu.
— slm

dobra robota, też chciałbym zagłosować, ale moja niewielka reputacja uniemożliwiła mi :)
— Ahmed Zain El Dein
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.