所以您想更改终端颜色并在退出时将其重置回来?
这得益于.ssh/config
、alias
和setterm
答案1
.bash_aliases
:function ssh_alias() { ssh "$@"; setterm -default -clear rest; # If `-clear rest` gives error `setterm: argument error: 'rest'`, try `-clear reset` instead } alias ssh=ssh_alias
/etc/ssh/ssh_config
:# Ensure this line exists: PermitLocalCommand yes
.ssh/config
:Host your.production.host User root LocalCommand setterm -term linux -back red -fore white -clear rest
在 Bash 中,您现在可以:
some command
# all in default colors:
ssh your.production.host
# colors changed:
# ....
exit
# colors changed back! yeea!
替代setterm
:
如果您正在使用gnome-terminal
或其他xterm
,并且对 有限的颜色选择感到沮丧setterm
,和/或您的setterm
更改被命令提示符 [ ] 中的颜色代码覆盖,您可能希望使用,$PS1
而不是,如中所示setterm
xtermcontrol
这个答案。
- 例如,
xtermcontrol --bg '#600'
将使终端背景变成深红色,但xtermcontrol
在使用之前可能需要安装(例如sudo apt install xtermcontrol
基于 Debian 的系统)
答案2
(阅读 gaRex 的回复第一的)
setterm
在最近的版本中改变了参数:(更多信息:man setterm
)
.bash_aliases
:
您仍然可以通过以下方式使用function ssh_alias() { ssh $@; setterm --default --clear all; } alias ssh=ssh_alias
--clear rest
和重新加载.bash_aliases
exec bash
.ssh/config
:Host myproject.pro HostName myproject.com User root IdentityFile ~/.ssh/myproject LocalCommand setterm --term linux --background white --foreground black --clear all
答案3
我在连接自己的电脑时需要这个。我所做的很简单,只需将此代码片段添加到我的.bash_profile
(它在我的点文件中,因此无论如何它都会出现在我的大多数电脑中):
[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"
您可以将其更改336699
为您想要的任何十六进制颜色。
答案4
在 Apple Mac/OSX 上setterm
不可用,但您可以使用osascript
一个小 shell 脚本:
#!/bin/sh
DEFAULT_SCHEME=Basic
SCHEME=${1:-$DEFAULT_SCHEME}
SAFE_SCHEME=\"${SCHEME//\"/}\" # sanitize user input
/usr/bin/osascript <<EOF
tell application "Terminal"
set current settings of window 1 to settings set $SAFE_SCHEME
end tell
EOF
- 这需要一个对应于其中一个配色方案的
terminal
参数(例如海洋)并且可以代替setterm
上述答案来调用,记得还要将其添加到,~/.bash_aliases
以便退出会话时终端恢复为原始配色ssh
方案
OSX 上的默认bash
配置文件没有源.bash_aliases
,因此您可能需要添加如下内容~/.bash_profile
:
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
- 有关如何在 OSX 中更改终端颜色的更多信息,请参阅这个答案。