Então você deseja alterar as cores dos terminais e redefini-las ao sair?
É possível graças a .ssh/config
, alias
, esetterm
Responder1
.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
No Bash, agora você pode:
some command
# all in default colors:
ssh your.production.host
# colors changed:
# ....
exit
# colors changed back! yeea!
Alternativa para setterm
:
Se você estiver usando gnome-terminal
, ou outro xterm
, e estiver frustrado com as opções limitadas de cores de setterm
, e/ou suas setterm
alterações estiverem sendo substituídas por códigos de cores em seu prompt de comando [ $PS1
], em vez de setterm
você pode querer usar xtermcontrol
, conforme demonstrado emesta resposta.
- Por exemplo,
xtermcontrol --bg '#600'
tornará o fundo do terminal vermelho escuro, embora possa ser necessário instalá-loxtermcontrol
antes de usá-lo(por exemplo,sudo apt install xtermcontrol
em sistemas baseados em Debian)
Responder2
(Leia o gaRexrespostaprimeiro)
setterm
mudou os argumentos em versões recentes:(mais informações: man setterm
)
.bash_aliases
:
Você ainda pode usarfunction ssh_alias() { ssh $@; setterm --default --clear all; } alias ssh=ssh_alias
--clear rest
e recarregar.bash_aliases
viaexec bash
.ssh/config
:Host myproject.pro HostName myproject.com User root IdentityFile ~/.ssh/myproject LocalCommand setterm --term linux --background white --foreground black --clear all
Responder3
Eu precisava disso ao me conectar aos meus próprios computadores. O que fiz foi tão simples quanto adicionar este trecho ao meu .bash_profile
(que está em meus dotfiles, então acaba na maioria dos meus computadores):
[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"
Você pode alterar 336699
para qualquer cor hexadecimal que desejar.
Responder4
No Apple Mac/OSX, setterm
não está disponível, mas você pode usar osascript
com um pequeno script de 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
- Isso leva um único argumento correspondente a um dos esquemas de cores
terminal
conhecidos(por exemplo, oceano)e pode ser invocado no lugar dassetterm
respostas acima, lembrando de adicioná-lo também~/.bash_aliases
para que o terminal volte ao esquema de cores original quando você sair dassh
sessão
O perfil padrão bash
no OSX não fonte .bash_aliases
, então você pode precisar adicionar algo assim para ~/.bash_profile
:
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
- Para obter informações adicionais sobre como alterar as cores dos terminais no OSX, consulteesta resposta SO.