Come aprire le finestre delle schede nella schermata Gnu ed eseguire i comandi all'interno di ciascuna


30

quando inizia la sessione denominata qualsiasi nome come questo screen -S name1

voglio aprire le finestre delle schede in questa sessione dello schermo come quando le schede aperte in gnome-terminal in questo modo

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

quindi come fare questo?


ENTRAMBI Vorrei sapere come aprire le schede di comando a gnome termınal e voglio eseguire alcuni comandi dopo che ho aperto la scheda in esecuzione
Ahmed Zain El Dein

Quindi la tecnica che ho descritto di seguito mostra le schede che stai cercando allora? Hai solo bisogno di un modo per eseguire un comando al loro interno?
slm

ma in realtà sono un principiante e non capisco cosa vuoi che faccia esattamente, ho pensato che ci fosse una sintassi per aprire le schede sullo schermo e poi sembra, ma sembra che aggiungerò un po 'di liquido a un po'
Ahmed Zain El Dein

ok ho capito che vuoi che copi questo e il passato in questo file sulla mia casa ma quello che sto chiedendo è lo schermo -t nome dà un titolo allo schermo come so e voglio anche aprire quelle schede in una sessione denominata per esempio screen -S name1 --tab -e "some commands"spero che tu ottenga ciò di cui ti sto chiedendo?
Ahmed Zain El Dein,

mmmm quelle sono schede predefinite con un certo numero, questo non è quello che sto chiedendo, signore :) Non so quante schede ho bisogno in fase di esecuzione ciò che voglio è qualcosa di simile al comando gnome terminal gnome-terminal --tab -e "commands " --tab -e " commands questo aprirà una finestra di terminale con due schede per esempio intendo :) grazie
Ahmed Zain El Dein

Risposte:


73

1. Schede nella schermata

Stai cercando questo per aggiungere al tuo file .screenrc:

screen -t tab1
screen -t tab2

Ecco un bel .screenrc di base per iniziare con una barra di stato, ecc. NOTA: in genere si trova nella home directory /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}]'

immagine dello schermo

ss della sessione schermo

2. Schede nella schermata (con i comandi eseguiti all'interno)

L'esempio .screenrcseguente creerà 2 schede ed eseguirà 3 comandi echo in ciascuna.

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

Questa tecnica si avvale di schermate selecte stuffcomandi per selezionare inizialmente una delle schede e quindi "riempire" una stringa in essa.

immagine dello schermo

ss dello schermo con schede e comandi

3. Creazione n. 2 senza utilizzare un .screenrcfile

Se stai cercando lo scenario in cui puoi:

  1. creare una sessione schermo
  2. caricalo con le schede
  3. ogni scheda esegue i propri comandi
  4. non richiede un .screenrcfile

Quindi questo è quello che fa per te! Preparati però. Questo può diventare un po 'complicato con le righe di comando.

Per cominciare, creiamo una sessione schermo:

$ screen -AdmS myshell -t tab0 bash

Gli switch -AdmSeseguono le seguenti operazioni:

(Vedi la pagina man dello schermo per maggiori dettagli)

-UN

    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 nome sessione

    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.

Ora iniziamo a caricarlo con le schede + i loro comandi:

$ 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

Questi 3 comandi creeranno 3 schede aggiuntive ed eseguiranno vim, eseguiranno il ping di Google e avvieranno una shell bash. Se elenchiamo le sessioni dello schermo vedremo quanto segue:

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

Se ci colleghiamo alla sessione dello schermo, myshell ed elenchiamo le schede che contiene vedremo quanto segue:

$ screen -r myshell

Premi questa combinazione di tasti: Ctrl+ Aseguito da Shift+"

Num Name                                                                   Flags

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

Passare a 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

immagine dello schermo

ss dello schermo avviato da cli

I comandi sopra sono il modo di base per realizzare ciò che l'OP stava cercando. Questo ovviamente può essere condensato e perfezionato usando alias Bash o persino script di shell, questo è semplicemente per dimostrare la capacità e mostrare la strada!

Riferimenti


2
Se non mi manca la lettura della Q, vuole eseguire un comando all'avvio della sessione. Tipicamentescreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium

Pensi che significhi aprire una schermata con le schede ed eseguire un comando all'interno di una di esse?
slm

Sì. Esegui alcuni comandi shell all'avvio all'interno dello schermo, in genere come quando accedi dopo l'avvio e ottieni Last login on ... Welcome to XXX, N new mails..... Almeno è così che ho letto il titolo del Q.
Runium

Leggi i suoi commenti sulla Q, vuole entrambi.
slm

ben fatto vorrei votare anch'io ma la mia reputazione minore mi ha impedito :)
Ahmed Zain El Dein
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.