Entonces, ¿quieres cambiar los colores de los terminales y restablecerlos al salir?
Es posible gracias a .ssh/config
, alias
, ysetterm
Respuesta1
.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
En Bash, ahora puedes:
some command
# all in default colors:
ssh your.production.host
# colors changed:
# ....
exit
# colors changed back! yeea!
Alternativa a setterm
:
Si está utilizando gnome-terminal
, u otro xterm
, y se siente frustrado por las opciones de color limitadas de setterm
, y/o sus setterm
cambios están siendo anulados por códigos de color en su símbolo del sistema [ $PS1
], en lugar de setterm
hacerlo, es posible que desee utilizar xtermcontrol
, como se demuestra enesta respuesta.
- Por ejemplo,
xtermcontrol --bg '#600'
hará que el fondo del terminal sea de color rojo oscuro, aunque es posible que tengas que instalarloxtermcontrol
antes de usarlo.(por ejemplo,sudo apt install xtermcontrol
en sistemas basados en Debian)
Respuesta2
(Lea gaRexrespuestaprimero)
setterm
ha cambiado los argumentos en versiones recientes:(más información: man setterm
)
.bash_aliases
:
Aún puedes usarfunction ssh_alias() { ssh $@; setterm --default --clear all; } alias ssh=ssh_alias
--clear rest
y recargar.bash_aliases
a través deexec bash
.ssh/config
:Host myproject.pro HostName myproject.com User root IdentityFile ~/.ssh/myproject LocalCommand setterm --term linux --background white --foreground black --clear all
Respuesta3
Necesitaba esto para conectarme a mis propias computadoras. Lo que hice fue tan simple como agregar este fragmento a mi .bash_profile
(que está en mis archivos de puntos, por lo que de todos modos termina en la mayoría de mis computadoras):
[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"
Puede cambiar el 336699
color hexadecimal que desee.
Respuesta4
En Apple Mac/OSX, setterm
no está disponible, pero puedes usarlo osascript
con un pequeño 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
- Esto requiere un único argumento correspondiente a uno de los esquemas de color
terminal
que conoce.(por ejemplo, océano)y puede invocarse en lugar desetterm
las respuestas anteriores, recordando agregarlo también para~/.bash_aliases
que el terminal vuelva al esquema de color original cuando salga de lassh
sesión.
El perfil predeterminado bash
en OSX no tiene origen .bash_aliases
, por lo que es posible que deba agregar algo como esto a ~/.bash_profile
:
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
- Para obtener información adicional sobre cómo cambiar los colores del terminal en OSX, consulteesta respuesta SO.