2012-05-15 19 views
6

Ho una sessione di schermo in esecuzione con diverse finestre. Voglio collegarlo, creare una nuova finestra sullo schermo e avviare una shell in quella nuova finestra.Collega alla sessione 'schermo' con la creazione di una nuova finestra sullo schermo

Domanda: Come posso farlo dalla riga di comando al di fuori della sessione dello schermo?

Ho già provato molto, e. g. screen -x (ma si collega a una delle finestre dello schermo esistenti, non ne crea una nuova né avvia una nuova shell). Ogni suggerimento è benvenuto.

L'ambiente è Linux (Ubuntu 12.04).

+0

Sembra che ci sia un modo standard di farlo. Puoi cercare nella [mailing list] (http://lists.gnu.org/archive/html/screen-users/) – tuxuday

+0

L'avrei accettato come risposta perché ho trovato qualcosa lì, grazie! :) – Alfe

+0

@Alfe se hai trovato una risposta corretta, postala tu stesso. Puoi accettare la tua risposta dopo un po 'se è una risposta adeguata. Inoltre sono curioso: P – KurzedMetal

risposta

6

ho trovato qualcosa sulla mailing list, grazie tuxuday :)

lo sto facendo ora in questo modo:

#!/bin/bash 
screen -X screen -t NEWWINDOW # create new window (switches existing attached terminal) 
sleep 0.1 
screen -X other # switch existing attached terminal back to its old window 
sleep 0.1 
gnome-terminal -e 'screen -x -p NEWWINDOW' # connect to new window 

io non sono sicuro di quei posti letto, forse aren' È necessario in tutti gli ambienti, ma posso aspettare facilmente quegli 0.2.

Il mio .bash_aliases modifica il titolo della finestra dello schermo con un ritardo, quindi lo scomodo NEWWINDOW non si attacca a lungo (e quindi non ostacola ulteriori chiamate a questo script).

+2

Il trucco che ho ricevuto dalla mailing list era il 'screen -X altro'. – Alfe

+1

dai uno sguardo a questo [post di blog] (https://rohieb.wordpress.com/2010/07/30/gnu-screen-start-with-multiple-windows-and-commands/). Si consiglia di utilizzare un file di comando di sessione (solo un file con tutti i comandi come 'screen',' select' e 'other') ed eseguire' screen -X source sessionfile' invece di chiamare 'screen -X' più volte.Buon approccio – KurzedMetal

+0

Sto chiamando 'screen -X' solo due volte ... ma se quello script cresce, l'approccio del file di comando della sessione vale la pena dare un'occhiata di sicuro :) – Alfe

3

Aggiungi nuova finestra separata per sesion_name ed eseguire command

screen -S sesion_name -x -X screen bash -c 'command; exec bash' 
2

Per scegliere una finestra di aderire, utilizzare l'opzione -p. Dare + creerà uno nuovo, in modo che il comando è semplice:

screen -x session_name -p + 

Questo è documentato nella pagina man:

pn ̲ u ̲ m ̲ b ̲ e ̲ r ̲ _o ̲ r ̲ _n ̲ a ̲ m ̲ e ̲ | ̲ - ̲ | ̲ = ̲ | ̲ + ̲

Preselect a window. This is useful when you want to reattach to a 
specific windor or you want to send a command via the "-X" option 
to a specific window. As with screen's select commant, "-" selects 
the blank window. As a special case for reattach, "=" brings up the 
windowlist on the blank window. 
+0

Ho esaminato di nuovo la mia pagina di manuale (versione 4.00.03jw4) e ho trovato solo il '-p numero_or_name' (non il' | - | = | + '). Poi ho guardato una versione leggermente più recente (4.01.00devel) e ho trovato la tua linea sinossi. Confondendo è che il testo che hai incollato proviene dalla pagina man precedente (non descrive nulla di '+') mentre la nuova manpage nei miei test aveva questo testo aggiuntivo che descrive il '+': '... mentre un" + "crea un nuovo finestra. Il comando non verrà eseguito se non è possibile trovare la finestra specificata. Quindi questa è una nuova opzione! Grazie per avermelo fatto notare, penso che risolva il mio problema. – Alfe