切换到远程计算机并返回时更改终端颜色


8

寻找一种方法在将ssh切换到远程计算机时自动更改终端颜色,并在退出ssh会话时恢复为默认颜色。简而言之,当我在远程计算机上工作时,想要其他颜色。

任何的想法?

ps:不想使用iTerm2,但要使用标准Terminal.app

Answers:


9

我正在使用以下内容。

有一个名为的shell命令myssh,其中包含以下内容:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

并使用bash别名进行连接,例如:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

当我想通过SSH进入Web服务器时,我只需ssweb在终端中编写代码,然后获得“自制”配置文件。ssh会话结束时,AppleScript设置回“基本”状态。

别名应放入$ HOME / .profile或类似的bash-startup文件中。

“自制”,“海洋”等是来自Terminal.app首选项的设置配置文件。您还可以设置不同的字体,编码等。

当然,您可以直接使用它(不使用别名),例如:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name

您如何为iterm2做到这一点?谢谢!
科苏

我停在“VIM”使用的iTerm时选择一些文本是后切出的选择,而不是副本..;(所以,不幸的是,我不是iTerm2解决方案的想法。
jm666

谢谢!一段时间以来,我一直在寻找各种灵活的方法来实现此目的,但是您的方法既简单又灵活。开发一个小型框架的好处是可以从不同的别名获取配置文件和命令,而不是散布一堆带有硬编码首选项集的单个脚本。
2012年

2

我知道已经有几个答案,但是这里有一个替代方法:

没有通用的方法来更改背景颜色,但是我们可以使用标准的方法来更改窗口标题。如果要登录许多非“ Unix服务器”设备(例如网络设备,路由器,交换机,防火墙等),则必须使用它们的外壳程序,并且无法安装自己的外壳程序变量。因此,这是另一种方式:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

将此添加到您的.bashrc

基本上,由于函数和别名优先于查找路径,因此使用ssh命令,并在“ @”之前和之后使用文本来设置HOST和USER变量,然后将其用于回显被ASCII代码识别的ASCII代码。终端并用于设置标题。

为此,您必须使用“ ssh user@host.blah”,而不是“ ssh -l user host.blah”

如果您不提供用户名,则会将其设置为您的当前用户名(显然,如果您使用的是自定义.ssh / config(我经常使用),那么这将不够准确,但我认为这已经足够了有用。

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.