Wie man Fenster mit Registerkarten im Gnu-Bildschirm öffnet und Befehle in jedem Fenster ausführt


30

Wann startet die Sitzung? screen -S name1

Ich möchte Tabs-Fenster in dieser Bildschirmsitzung öffnen, wie wenn Tabs in Gnome-Terminal wie folgt geöffnet werden

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

Also, wie geht das?


BEIDE wollen wissen, wie man Tabs öffnet, die dem Gnome-Termini entsprechen, und wollen einen Befehl ausführen, nachdem ein offener Tab ausgeführt wurde
Ahmed Zain El Dein

Die unten beschriebene Technik zeigt also die Registerkarten, nach denen Sie dann suchen? Benötigen Sie nur eine Möglichkeit, einen Befehl in ihnen auszuführen?
slm

Aber eigentlich bin ich Anfänger und verstehe nicht, was ich genau tun soll. Ich dachte, dass es eine Syntax zum Öffnen von Tabs auf dem Bildschirm gibt, aber es sieht so aus, als würde ich ein paar Dateien zu einer Datei hinzufügen
Ahmed Zain El Dein

ok ich bekomme, dass du willst, dass ich das und das in dieser Datei auf meinem Heim kopiere, aber was ich frage, ist Bildschirm-t Name gibt dem Bildschirm einen Titel, wie ich weiß, und ich möchte auch diese Registerkarten in einer benannten Sitzung öffnen Zum Beispiel screen -S name1 --tab -e "some commands"hoffe ich, dass Sie bekommen, worüber ich frage?
Ahmed Zain El Dein

mmmm das sind vordefinierte tabs mit einer bestimmten nummer das ist nicht das, was ich frage sir :) ich weiß nicht, wie viele tabs ich zur laufzeit brauche was ich will ist etwas ähnlich wie der gnome terminal befehl gnome-terminal --tab -e "commands " --tab -e " commands dies öffnet ein fenster von Terminal mit zwei Registerkarten zum Beispiel meine ich :) Danke
Ahmed Zain El Dein

Antworten:


73

1. Registerkarten im Bildschirm

Sie möchten Folgendes zu Ihrer .screenrc-Datei hinzufügen:

screen -t tab1
screen -t tab2

Hier ist eine nette einfache .screenrc-Datei, mit der Sie mit einer Statusleiste usw. beginnen können. HINWEIS: Diese befindet sich normalerweise in Ihrem Home-Verzeichnis /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}]'

Bildschirmfoto

ss der Bildschirmsitzung

2. Registerkarten im Bildschirm (mit darin ausgeführten Befehlen)

Im folgenden Beispiel .screenrcwerden 2 Registerkarten erstellt und jeweils 3 Echobefehle ausgeführt.

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

Bei dieser Technik werden Bildschirme selectund stuffBefehle verwendet, um zunächst eine der Registerkarten auszuwählen und dann eine Zeichenfolge in diese einzufügen.

Bildschirmfoto

ss des Bildschirms mit Registerkarten und Befehlen

3. Erstellen von Nr. 2 ohne Verwendung einer .screenrcDatei

Wenn Sie nach einem Szenario suchen, in dem Sie:

  1. Erstellen Sie eine Bildschirmsitzung
  2. Laden Sie es mit Tabs
  3. Lassen Sie jede Registerkarte ihre eigenen Befehle ausführen
  4. keine .screenrcDatei benötigen

Dann ist dies das Richtige für Sie! Seien Sie aber vorbereitet. Dieser kann mit den Kommandozeilen etwas knifflig werden.

Für den Anfang erstellen wir eine Bildschirmsitzung:

$ screen -AdmS myshell -t tab0 bash

Die Schalter -AdmShaben folgende Funktionen:

( Weitere Informationen finden Sie auf der Bildschirm-Manpage. )

-EIN

    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 Sitzungsname

    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.

Jetzt lass es uns mit Tabs und deren Befehlen laden:

$ 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

Mit diesen drei Befehlen werden drei zusätzliche Registerkarten erstellt und vim, ping google und eine Bash-Shell gestartet. Wenn wir die Bildschirmsitzungen auflisten, sehen wir Folgendes:

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

Wenn wir uns mit der Bildschirmsitzung verbinden, myshell und die darin enthaltenen Registerkarten auflisten , sehen wir Folgendes:

$ screen -r myshell

Drücken Sie diese Tastenkombination: Ctrl+ Agefolgt von Shift+"

Num Name                                                                   Flags

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

Wechseln zu 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

Bildschirmfoto

ss des Bildschirms initiiert von cli

Die obigen Befehle sind der grundlegende Weg, um das zu erreichen, wonach das OP gesucht hat. Dies kann natürlich mithilfe von Bash-Aliasen oder sogar Shell-Skripten komprimiert und verfeinert werden. Dies dient lediglich dazu, die Fähigkeit zu demonstrieren und den Weg zu weisen!

Verweise


2
Wenn ich das Q nicht verpasse, möchte er zu Beginn der Sitzung einen Befehl ausführen. Normalerweisescreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium

Sie denken, er meint, einen Bildschirm mit Registerkarten zu öffnen und einen Befehl in einem von ihnen auszuführen?
slm

Ja. Führen Sie einen Shell-Befehl beim Start auf dem Bildschirm aus, normalerweise, wenn Sie sich nach dem Start anmelden und abrufen Last login on ... Welcome to XXX, N new mails..... Mindestens das ist , wie ich die gelesen Überschrift des Q.
Runium

Lesen Sie seine Kommentare zum Q, er will beides.
slm

Gut gemacht, ich möchte auch abstimmen, aber mein geringer Ruf hat mich davon abgehalten :)
Ahmed Zain El Dein
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.