我想让我的终端背景颜色根据主机名改变。我这样做的主要原因是想通过额外的方式提醒自己我在哪个服务器上,这样我就不会做傻事。
有没有什么方法可以让它在我本地机器上时使用标准的茄子背景,然后当我 ssh 到生产 Web 服务器或我可以指定的其他主机时将其变为红色?
答案1
您可以使用 ssh/config 的 localcommand 选项在使用别名时运行命令。我使用
host hostname
user myusername
localcommand xtermcontrol --bg '#abc'
这取决于 xtermcontrol 和您的术语是否为 xterm。可能还有其他应用程序适用于其他术语。
这种方法的唯一问题是,当您调用 ssh 时,会发生这种情况。没有办法撤消颜色更改。我通过围绕 ssh 包装一个函数来实现这一点,但这也有其缺点。
function ssh() {
FG=$(xtermcontrol --get-fg)
BG=$(xtermcontrol --get-bg)
$(which ssh) "$@"
xtermcontrol --fg="$FG"
xtermcontrol --bg="$BG"
}
答案2
似乎没有任何gnome-terminal
功能在现有窗口添加新标签从命令行。但是有几个选项可以实现您想要的功能。
每个命令配置文件
为您将通过 SSH 连接到的每台主机创建一个新gnome-terminal
配置文件。如果您只有几台经常连接的主机,这可能是最简单的方法。每个配置文件可以定义不同的标题、前景色、背景色、自定义命令和其他设置。然后,您可以使用File -> Open Tab
所选配置文件打开新选项卡。
可重复使用的配置文件
创建一个新的gnome-terminal
配置文件,用于在每次要连接到不同的 SSH 主机时打开一个新窗口(基于此AskUbuntu 答案那斯蒂法诺指出)。如果您经常连接到许多不同的主机,这将非常有用。这将不允许您gnome-terminal
仅根据背景/前景颜色区分连接到不同主机的不同窗口,但每个窗口将有不同的标题。
- 根据配置文件创建一个新的
gnome-terminal
配置文件( )并将其命名为“RemoteHost”(注意,“RemoteHost”中没有空格以使命令更容易)。File -> New Profile
Default
- 在选项卡下
Title and Command
,更改:Initial title:
至“远程主机”When terminal commands set their own titles:
到Replace initial title
- 在选项卡下
Colors
,更改:- 取消选中
Use colors from system theme
Build-in schemes:
到Custom
Text color:
以及Background color:
您选择的颜色。请记住,某些命令(如ls
)使用颜色作为其输出,并且您不想选择会使输出难以读取的颜色。
- 取消选中
- 单击
Close
按钮保存您的新个人资料。 gnome-terminal
现在,您可以使用命令为每个远程 SSH 主机打开一个新窗口gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost
。-t
选项设置gnome-terminal
窗口标题,-x
选项执行终端中其余的命令行。您甚至可以制作一个alias
以缩短总击键次数。
命令行
我发现这篇博文使用以下脚本,该脚本使用xdotool
和wmctrl
命令(默认情况下它们未在 Ubuntu 上安装,因此您可能需要先安装它们)来使用gnome-terminal
Ctrl+ Shift+t键盘快捷键在当前gnome-terminal
窗口中打开新选项卡。可以对其进行修改,以使用特定配置文件打开新选项卡并为您执行一些命令。
#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
/usr/bin/gnome-terminal "$@"
else
pgrep -u "$USER" gnome-terminal | grep -qv "$$"
if [ "$?" == "0" ]; then
WID=`xdotool search --class "gnome-terminal" | head -1`
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID
else
/usr/bin/gnome-terminal
fi
fi
其他
您可以发挥创造力并尝试一些其他的事情。
这超级用户回答基本上使用一些“脚本”杂技来创建gnome-terminal
用于打开新窗口的临时配置文件。您可以对其进行修改以供使用。
你也许可以用这个StackOverflow 问答以及更多“脚本”杂技,用于gnome-terminal
在您通过 SSH 连接到远程主机时动态更改标题。它不会像背景/前景颜色更改那样突出,但它总是比标准Terminal
标题更好。
答案3
如果您愿意在每个 ssh 会话中使用一个新的 gnome-terminal 窗口,那么这将在 Gnome 中运行。
创建一个名为“远程”的新配置文件(具有不同的背景颜色)
将以下内容插入到
.bash_aliases
,或.bashrc
### add to .bash_aliases, for differentiating between local and remote hosts sshhelper() { gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1"; } alias sshc=sshhelper
现在sshc remote-machine
打开新的gnome-terminal 与“远程”配置文件的会话。这将区分本地和远程配置文件。
为了容纳多个配置文件/主机,请创建多个配置文件并放置如下内容.bash_aliases
:
### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
HOST=`echo $1 | cut -d'@' -f2`
case $HOST in
Production ) PROFILE="Red" ;;
Test ) PROFILE="Green" ;;
# ... if you have more cases ...
*) PROFILE="Default" ;;
esac
gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}
# alias ssh=sshhelper # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper
现在sshc Production
将使用“红色”配置文件打开一个新的会话窗口,sshc Test
将使用“绿色”配置文件打开一个新的会话窗口,其他主机将使用“默认”配置文件。
答案4
从这里的 stack*** 站点收集所有信息是我发现的针对 mint mate + mate 终端(与 gnome 相同)的最简单的解决方案。
- 在伴侣终端定义第二个配置文件,具有不同的背景。
- 检查默认键是否有效 Alt+PageDown / Alt+PageUp 应该可以改变配置文件以及背景。
sudo apt get install xdotool
现在您可以修改 /etc/ssh/ssh_config,以便它可以在每次 ssh 会话建立后更改配置文件:
Host *
PermitLocalCommand yes
LocalCommand xdotool key Alt+Page_Down
现在,在终端中建立每个 ssh 连接后,配置文件将被更改,并且您将永远不会再将不需要的 sql 更新放入生产数据库:)
但是,在 ssh 连接关闭后,没有简单的解决方案可以恢复到默认配置文件。但这对我来说已经足够了,我没再寻找更多信息。