bash - while - shell读取文件




从shellscript设置屏幕标题 (7)

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

我想过发送键命令ctrl + A shift - 一个 Name 输入

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


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

将以下设置添加到.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'。

要自动恢复标题,返回到localhost主机名的标题,关闭SSH会话后,可以在.bashrc添加一个转义序列来提示变量PS1

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"

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

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

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

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

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

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

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

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

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

您可以使用以下行设置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#s3http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3或参考以下@Espo的答案。


我解决这个问题的方法是创建一个bash脚本并将其添加到我的〜/ .bashrc文件中:

set-title() {
  ORIG==$PS1
  TITLE="\e];[email protected]\a"
  PS1=${ORIG}${TITLE}
}

现在当我在任何bash shell会话中时,我输入“set-title desired_title”并将其更改为“所需标题”。 这适用于Ubuntu的多个版本,目前在Kinetic 16.04上

我从here得到了这个解决方案。 我一直在寻找它,找不到它,并认为我会在这里发布它给任何感兴趣的人。



要添加到Espo的答案,xterm转义序列也可以应用于Bash PS1变量

ESC]0;stringBEL -- Set icon name and window title to string
ESC]1;stringBEL -- Set icon name to string
ESC]2;stringBEL -- Set window title to string

PS1='\e]0;string\a'

set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}






xterm