Cara membuka tab windows di Gnu-screen & menjalankan perintah di dalamnya

30

ketika memulai sesi bernama nama apa saja seperti ini screen -S name1

Saya ingin membuka tab jendela di sesi layar ini seperti ketika membuka tab di terminal gnome seperti ini

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

jadi bagaimana melakukan ini?

Ahmed Zain El Dein
sumber
KEDUA ı ingin tahu cara membuka tab sımılar to gnome termınal dan ı ingin menjalankan beberapa perintah ın ıt setelah ı buka tab ın jalankan tıme
Ahmed Zain El Dein
Jadi teknik yang saya jelaskan di bawah ini menunjukkan tab yang Anda cari? Hanya perlu cara untuk menjalankan perintah di dalamnya?
slm
tetapi sebenarnya saya adalah pengemis dan saya tidak mengerti apa yang Anda ingin saya lakukan dengan tepat, saya pikir ada sintaks untuk membuka tab di layar dan juga tetapi tampaknya saya akan menambahkan beberapa file ke beberapa file
Ahmed Zain El Dein
ok saya mengerti bahwa Anda ingin saya menyalin ini dan melewati file ini di rumah saya, tetapi apa yang saya tanyakan adalah layar -t nama memberi judul ke layar seperti yang saya tahu dan juga saya ingin membuka tab tersebut dalam sesi bernama misalnya screen -S name1 --tab -e "some commands"saya harap Anda mendapatkan apa yang saya tanyakan?
Ahmed Zain El Dein
mmmm itu adalah tab yang ditentukan sebelumnya dengan jumlah tertentu ini bukan yang saya minta pak :) saya tidak tahu berapa banyak tab yang saya butuhkan dalam jangka waktu yang saya inginkan adalah sesuatu yang mirip dengan perintah terminal gnome gnome-terminal --tab -e "commands " --tab -e " commands ini akan membuka satu jendela terminal dengan dua tab misalnya maksudku :) terima kasih
Ahmed Zain El Dein

Jawaban:

73

1. Tab di layar

Anda sedang mencari ini untuk ditambahkan ke file .screenrc Anda:

screen -t tab1
screen -t tab2

Berikut ini adalah .screenrc dasar yang bagus untuk membantu Anda memulai dengan bilah status dll. CATATAN: Ini biasanya terletak di direktori home Anda /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}]'

tangkapan layar

sesi layar

2. Tab di layar (dengan perintah dijalankan di dalam)

Contoh di .screenrcbawah ini akan membuat 2 tab dan menjalankan 3 perintah gema di masing-masing.

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}]'

Teknik ini menggunakan layar selectdan stuffperintah untuk awalnya memilih salah satu tab, dan kemudian "memasukkan" string ke dalamnya.

tangkapan layar

ss layar dg tab & perintah

3. Membuat # 2 tanpa menggunakan .screenrcfile

Jika Anda mencari skenario di mana Anda dapat:

  1. buat sesi layar
  2. muat dengan tab
  3. minta setiap tab menjalankan perintahnya sendiri
  4. tidak memerlukan .screenrcfile

Maka ini adalah satu untuk Anda! Bersiaplah. Yang ini bisa sedikit rumit dengan baris perintah.

Sebagai permulaan mari kita buat sesi layar:

$ screen -AdmS myshell -t tab0 bash

Switch -AdmSmelakukan hal berikut:

(Lihat halaman manual layar untuk lebih jelasnya)

-SEBUAH

    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 sessionname

    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.

Sekarang mari kita mulai memuatnya dengan tab + perintah mereka:

$ 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

3 perintah ini akan membuat 3 tab tambahan dan menjalankan vim, ping google, dan meluncurkan bash shell. Jika kita mencantumkan sesi layar kita akan melihat yang berikut:

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

Jika kita terhubung ke sesi layar, myshell , dan daftar tab di dalamnya kita akan melihat yang berikut:

$ screen -r myshell

Tekan kombinasi tombol ini: Ctrl+ Adiikuti oleh Shift+"

Num Name                                                                   Flags

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

Beralih ke 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

tangkapan layar

ss layar dimulai dari cli

Perintah di atas adalah cara dasar untuk mencapai apa yang dicari OP. Ini tentu saja dapat dipadatkan dan disempurnakan menggunakan alias Bash atau bahkan skrip shell, ini hanya untuk menunjukkan kemampuan dan menunjukkan jalan!

Referensi

slm
sumber
2
Jika saya tidak salah baca Q dia ingin menjalankan perintah pada awal sesi. Biasanyascreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium
Anda pikir maksudnya, buka layar dengan tab, dan jalankan perintah di dalam salah satunya?
slm
Iya nih. Jalankan beberapa perintah shell saat startup di dalam layar, biasanya seperti ketika Anda masuk setelah boot dan dapatkan Last login on ... Welcome to XXX, N new mails..... Setidaknya begitulah cara saya membaca tajuk Q.
Runium
Baca komentarnya di Q, dia ingin keduanya.
slm
Bagus sekali, saya juga ingin memilih tetapi reputasi kecil saya mencegah saya :)
Ahmed Zain El Dein