Итак, вы хотите изменить цвета терминала и сбросить их при выходе?
Это возможно благодаря .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'sответпервый)
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
(который находится в моих dotfiles, так что он в любом случае оказывается на большинстве моих компьютеров):
[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"
Вы можете изменить 336699
шестнадцатеричный цвет на любой желаемый.
решение4
На Apple Mac/OSX setterm
эта функция недоступна, но ее можно использовать osascript
с помощью небольшого скрипта оболочки:
#!/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
сеанса
Профиль по умолчанию bash
в OSX не использует source .bash_aliases
, поэтому вам может потребоваться добавить что-то вроде этого ~/.bash_profile
:
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
- Дополнительную информацию о том, как изменить цвета терминала в OSX, см.этот ТАК ответ.