如何在Gnu屏幕中打开选项卡窗口并执行每个命令


30

当会话开始时,命名为任何这样的名称 screen -S name1

我想在此屏幕会话中打开标签窗口,就像在gnome-terminal中打开标签时一样

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

那么该怎么做呢?


BOTH我想知道如何打开的选项卡类似GNOME终端,我想我打开标签后执行一些命令在它运行的时间
艾哈迈德·扎因厄尔尼诺戴恩

因此,我下面描述的技术会显示您正在寻找的选项卡?只需要一种在其中运行命令的方法?
slm

但是实际上我是begınner并且我不理解您要我做的事情我以为有语法可以在屏幕上打开选项卡,但是似乎我会在某些文件中添加一些标签
艾哈迈德·扎因·

好的,我明白了,您要我复制此文件并将其复制到我家中的该文件中,但是我要询问的是屏幕-t名称为屏幕提供了一个标题,正如我所知,并且我也想在命名会话中打开这些标签例如,screen -S name1 --tab -e "some commands"我希望你能得到我所要问的?
Ahmed Zain El Dein

嗯,那是一个预定义的选项卡,带有一定数量,这不是我要问的先生:)我不知道我在运行时需要多少个选项卡,这类似于gnome terminal命令,gnome-terminal --tab -e "commands " --tab -e " commands 它将打开一个窗口。终端有两个标签,例如,我的意思是:)谢谢你
艾哈迈德·扎因·艾尔丁

Answers:


73

1.屏幕中的标签

您正在寻找将此添加到您的.screenrc文件中:

screen -t tab1
screen -t tab2

这是一个不错的基本.screenrc,可让您开始使用状态栏等。注意:通常位于主目录中/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}]'

屏幕截图

屏幕会话的ss

2.屏幕中的选项卡(内部运行命令)

.screenrc下面的示例将创建2个选项卡,并在每个选项卡中运行3个echo命令。

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

该技术利用屏幕selectstuff命令来首先选择一个选项卡,然后将字符串“塞入”其中。

屏幕截图

带选项卡和命令的屏幕ss

3.在不使用.screenrc文件的情况下创建#2

如果您正在寻找可以实现以下目的的方案:

  1. 创建屏幕会话
  2. 用标签加载它
  3. 让每个选项卡运行各自的命令
  4. 不需要.screenrc文件

那么这就是给你的!不过要做好准备。使用命令行可能会有些棘手。

首先,让我们创建一个屏幕会话:

$ screen -AdmS myshell -t tab0 bash

交换机-AdmS执行以下操作:

(有关更多详细信息,请参见屏幕手册页

-一种

    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会话名称

    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.

现在,让我们开始使用选项卡及其命令来加载它:

$ 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个命令将创建3个其他选项卡,并运行vim,ping google和启动bash shell。如果我们列出了屏幕会话,我们将看到以下内容:

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

如果我们连接到屏幕会话myshell,并列出它包含的选项卡,我们将看到以下内容:

$ screen -r myshell

按下以下组合键:Ctrl+ A后跟Shift+"

Num Name                                                                   Flags

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

切换到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

屏幕截图

从cli启动的屏幕ss

上面的命令是完成OP寻找的基本方法。当然,可以使用Bash别名甚至shell脚本来简化和完善这一功能,这仅是为了演示功能和展示方式!

参考文献


2
如果我没有错过Q,他想在会话开始时执行命令。通常screen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium

您认为他的意思是,打开带有选项卡的屏幕,然后在其中一个选项卡中运行命令?
slm

是。在启动时屏幕上运行一些shell命令,通常就像在boot和get之后登录时一样Last login on ... Welcome to XXX, N new mails....。至少我是这样看《 Q》的标题
。– Runium

阅读他对Q的评论,他希望两者兼而有之。
slm

干得好,我也想投票,但我的小名声阻止了我:)
艾哈迈德·扎因·艾尔丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.