![連接到 SSH 主機時如何變更終端顏色](https://rvso.com/image/1365838/%E9%80%A3%E6%8E%A5%E5%88%B0%20SSH%20%E4%B8%BB%E6%A9%9F%E6%99%82%E5%A6%82%E4%BD%95%E8%AE%8A%E6%9B%B4%E7%B5%82%E7%AB%AF%E9%A1%8F%E8%89%B2.png)
那麼您想更改終端顏色並在退出時重置它們嗎?
這可能要歸功於.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 中的終端顏色的更多信息,請參閱這個答案。