Gnu ekranındaki sekmelerin pencereleri nasıl açılır ve her biri içindeki komutların çalıştırılması


30

Ne zaman böyle bir isim verilen oturum başladığında screen -S name1

Bu ekran oturumundaki sekmelerin pencerelerini açmak istiyorum.

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

peki bunu nasıl?


HEMEN SÜRELERİ Gnome Terminale Sekmelerin Nasıl Açılacağını Bilmek İstiyorum ve Sekmeyi Açtıktan Sonra Bir Komut Çalıştırmak İstiyorum
Ahmed Zain El Dein

Yani aşağıda tarif ettiğim teknik o zaman aradığın sekmeleri mi gösteriyor? Sadece onlara bir komut çalıştırmak için bir yol mu ihtiyacınız var?
slm

ama aslında ben önemsiyim ve tam olarak ne yapmamı istediğimi anlamıyorum, ekranda sekmeleri açacak sözdizimi olduğunu sanmıştım, ancak bazı satırları ekleyeceğim gibi görünüyor
Ahmed Zain El Dein

tamam, bunu evimde bu dosyada kopyalamamı istiyorum, ancak benim istediğim şey ekran -t adının bildiğim gibi ekrana bir başlık vermesi ve aynı zamanda bu sekmeleri adlandırılmış bir oturumda açmak istiyorum Mesela screen -S name1 --tab -e "some commands"ne istediğimi anlamışsındır?
Ahmed Zain El Dein,

mmmm bunlar belirli bir numaraya sahip önceden tanımlanmış bir sekmedir, bu benim istediğim şey değil efendim :) Çalışma zamanında kaç tane sekmeye ihtiyacım olduğunu bilmiyorum ne istediğimi gnome terminal komutuna benzer bir şey gnome-terminal --tab -e "commands " --tab -e " commands bu bir pencere açacak Örneğin iki sekmeli terminal demek demek :) teşekkür ederim
Ahmed Zain El Dein

Yanıtlar:


73

1. Ekrandaki Sekmeler

.Screenrc dosyanıza eklemek için bunu arıyorsunuz:

screen -t tab1
screen -t tab2

İşte durum çubuğu vb. İle başlamanıza yardımcı olacak güzel bir temel .screenrc. NOT: Bu genellikle giriş dizininizde bulunur /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}]'

ekran görüntüsü

ekran oturumu ss

2. Ekrandaki sekmeler (içinde komutlar bulunan)

Aşağıdaki örnek .screenrc2 sekme oluşturacak ve her birinde 3 eko komutunu çalıştıracaktır.

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

Bu teknik, başlangıçta sekmelerden birini seçmek için ekran selectve stuffkomutlardan yararlanır ve ardından bir dizgiyi "doldurur".

ekran görüntüsü

Sekmeler ve komutlar ile ekran ss

3. Bir .screenrcdosya kullanmadan # 2 oluşturma

Yapabileceğiniz senaryoyu arıyorsanız:

  1. ekran oturumu oluşturmak
  2. sekmeleri ile yükleyin
  3. her sekmenin kendi komutlarını çalıştırmasını sağlayın
  4. .screenrcdosya gerektirmez

O zaman bu senin için olanı! Yine de hazırlıklı ol. Bu komut satırı ile biraz zor alabilirsiniz.

Yeni başlayanlar için bir ekran oturumu oluşturalım:

$ screen -AdmS myshell -t tab0 bash

Anahtarlar -AdmSaşağıdakileri yapar:

(Daha fazla detay için ekran man sayfasına bakınız)

-A

    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 oturum adı

    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.

Şimdi onu sekmeleri + komutlarıyla yüklemeye başlayalım:

$ 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

Bu 3 komut 3 ek sekme daha yaratacak ve vim'i çalıştıracak, google'a ping atacak ve bir bash kabuğu başlatacak. Ekran oturumlarını listelersek aşağıdakileri görürüz:

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

Ekran oturumuna bağlanırsak, myshell ve içerdiği sekmeleri listelediğimizde aşağıdakileri göreceğiz:

$ screen -r myshell

Bu tuş birleşimine basın: Ctrl+ Aardından Shift+"

Num Name                                                                   Flags

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

Geçme Sekme2'ye :

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

ekran görüntüsü

cli başlatılan ekran ss

Yukarıdaki komutlar, OP'nin aradığı şeyi başarmanın temel yoludur. Elbette bu, Bash takma adları veya hatta kabuk komut dosyaları kullanılarak yoğunlaştırılabilir ve rafine edilebilir; bu yalnızca kabiliyeti göstermek ve yolu göstermek içindir!

Referanslar


2
Eğer Q'yu kaçırmazsam, oturum başlangıcında bir komut vermek ister. Tipik olarakscreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium

Sence demek, sekmeli bir ekran açmak ve içlerinden birinin emrini vermek mi?
slm

Evet. Başlangıçta bazı kabuk komutunu çalıştırın içinde sen çizme sonra giriş ve aldığımda tipik olarak, ekranın Last login on ... Welcome to XXX, N new mails..... En azından Q'nun başlığını nasıl okuduğumu
söyle

Q hakkındaki yorumlarını okuyun, ikisini de istiyor.
slm

aferin ben de oy vermek istiyorum ama küçük itibarım beni engelledi :)
Ahmed Zain El Dein
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.