当前位置:  开发笔记 > 编程语言 > 正文

从shellscript设置屏幕标题

如何解决《从shellscript设置屏幕标题》经验,为你挑选了5个好方法。

是否可以使用shell脚本设置屏幕标题?

我想过发送关键命令ctrl+ A shift-A Name enter

我搜索了大约一个小时的关于如何模拟shell脚本中的击键,但没有找到答案.



1> Shirkrin..:

您可以使用以下行设置screen/xterm标题:

#!/bin/bash

mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'

[更新] - 根据要求我还包括以下@Espo提出的解决方案:

根据您的xterm版本或您的Linux发行版,上面的行可能会或可能不会工作,您可以尝试xterm-defaults:

#!/bin/bash

mytitle="Some title"
echo -e '\033]2;'$mytitle'\007'

有关详细信息,请参阅:http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3或参考以下@Espo的答案.


这不适合我.我在xterm和Konsole(来自KDE4)中测试过.``\ e] 2; title\a"`工作.
如果启用了“允许SendEvents”,则这将不起作用,这在ubuntu的最新版本中似乎是默认设置:https://bugs.launchpad.net/ubuntu/+source/xterm/+bug/495733

2> Espo..:

来自http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

xterm转义序列

可以使用XTerm转义序列在运行的xterm中更改窗口和图标标题.以下序列在这方面很有用:

ESC]0;stringBEL - 将图标名称和窗口标题设置为字符串

ESC]1;stringBEL - 将图标名称设置为字符串

ESC]2;stringBEL - 将窗口标题设置为字符串

其中ESC是转义字符(\ 033),BEL是钟形字符(\ 007).

在xterm中打印其中一个序列将导致窗口或图标标题被更改.

注意:这些序列适用于大多数xterm衍生物,例如nxterm,color-xterm和rxvt.其他终端类型通常使用不同的逃逸; 有关示例,请参阅附录.有关xterm转义序列的完整列表,请参阅文件ctlseq2.txt(随xterm分发一起提供)或xterm.seq(随rxvt分发一起提供).

打印转义序列

对于在此shell的整个生命周期中保持不变的信息(例如主机和用户名),只需回显shell rc文件中的转义字符串即可:

    echo -n "\033]0;${USER}@${HOST}\007"

应该生成一个像username @ hostname这样的标题,假设shell变量$ USER和$ HOST设置正确.echo的必要选项可能因shell而异(请参阅下面的示例).

对于可能在shell生命周期中更改的信息(例如当前工作目录),每次提示更改时都需要应用这些转义.这样,字符串就会根据您发出的每个命令进行更新,并且可以跟踪当前工作目录,用户名,主机名等信息.有些shell为此提供了特殊功能,有些则没有,我们必须插入标题序列直接进入提示字符串.这将在下一节中说明.



3> 小智..:

以下是编写屏幕标题重命名脚本的其他方法:

.ssh/config使用SSH登录系统时,添加以下设置以自动设置屏幕标题:

Host *
  PermitLocalCommand yes
  LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\" 

%h您可以使用%n,而不是代表您连接的计算机的主机名,这是您用于连接到计算机的实际名称/别名.

注意:您需要OpenSSH> = v5.1才能使用Localhost%n和%h参数.有关LocalCommand的更多信息,请查看'man ssh_config'.

要自动回复的标题,回到该本地主机的主机名,成交SSH会话之后,您可以添加一个转义序列给你提示变量PS1.bashrc:

export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
    export PS1=${PS1}'\[\033k\h\033\\\]'
fi

当使用.screenrc配置显示您当前正在使用的屏幕"选项卡" 时,这些技巧特别有用.添加如下内容以.screenrc使其正常工作:

caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"



4> Seff..:

尝试以下命令,无需编辑任何文件或配置,如〜/ .bashrc,可以在运行时使用.

将静态文本设置为标题:(我的标题)

export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

将local/global变量设置为title:($ USER)

export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

将命令输出设置为标题:(主机名)

export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

设为默认值(恢复后退):

export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '



5> Randy Procto..:
set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有