it-swarm.cn

设置屏幕会话的名称

有没有一种方法可以为unix屏幕会话赋予特定的名称?例如,假设我多次运行相同的程序,每次都使用不同的参数,而我想知道哪个是哪个。

62
well actually

您可以使用-S name选项启动会话。在运行屏幕中,您可以通过键入CTRL-a, :sessionname name进行更改。您可以使用screen -ls查看正在运行的屏幕会话,并使用screen -xS name按名称连接到一个会话。

在单个屏幕会话中,您还可以命名每个窗口。输入CTRL-a, A,然后输入所需名称,即可完成此操作。您可以通过键入CTRL-a, "来查看命名窗口的交互式列表,然后从该列表中选择要切换到的窗口。

命名屏幕和屏幕内的终端对于记住它们是什么以及为什么要首先启动它们确实很有帮助。

73
Lars Yencken

这里有两个概念,我不确定要记住哪个概念:

  • 您可以有多个屏幕窗口。每个窗口都运行一个Shell或其他程序。所有窗口都由同一进程托管。 C-a c创建一个窗口,C-a nC-a p切换到下一个/上一个窗口,依此类推。
  • 您可以进行多个屏幕会话。每个会话都由其自己的进程托管,并且独立于所有其他会话。没有任何重新附加(-r-R)选项的开始屏幕将创建一个新会话。

Windows具有标题,可以通过-t命令行选项,C-a A键绑定,title命令或\ek转义序列来设置标题。有关更多详细信息,请参见 shellter的答案

会话可以具有名称。通常,您可以使用-S选项在命令行上设置名称;如果您未指定名称,则屏幕将显示一个名称。如果您使用多个屏幕会话,通常会给它们指定不同的会话名称。您可以使用screen -ls列出运行屏幕会话;每个会话行上的第一个单词是12345.sessionname,其中12345是屏幕进程ID。使用screen -r sessionnamescreen -r 12345恢复通过其名称或进程ID指示的会话。

24

啊...屏幕,它带我回来;-)

对于一个窗口

-t name
    sets the title (a.k.a.) for the default Shell or specified program. 
    See also the "shelltitle" .screenrc command.

对于从.screenrc开始的多个会话

screen -t top 2 Nice top
screen -t ....

这是指向 手册页的一个在线副本的链接,用于屏幕。

编辑:添加

要更改当前屏幕名称,请制作一个Shell脚本工具,例如

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

未经测试,我正在使用的系统上没有可用的屏幕。

12
shellter

在运行screen时:

Ctrl+a(或您的screen转义序列是什么)A

4
ninjalj

上面的答案已经告诉您启动屏幕时如何命名。他们还指出,屏幕启动后无法重命名。可以设置窗口标题,但用于附加到屏幕的名称仍为pid.pty.Host。

但是,为了获得有用的效果,我发现使用别名可以很好地工作。如果我忘记命名屏幕或在会话中发现自己却一堆屏幕,这些屏幕自然已成为特定任务的屏幕,那么我只需为该命令附加一个别名即可。

例:

alias goncompile='screen -r 2354'

单独发出alias命令将提醒您设置了哪些屏幕以及已设置要附加到它们的命令。

使用unalias删除它们。

3
caoimhin