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

Ahmed Zain El Dein
źródło
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

slm
źródło
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