2009-12-15 9 views
6

Usando masilla en Windows, puede guardar sesiones que se conectan a un determinado host y usar un cierto color de texto ... esto fue súper útil para mí ya que trabajo con un montón de hosts remotos y me pregunto si existe (debe haber) una forma de obtener Terminal (en Snow Leopard) para emular este comportamiento.¿Cuál es una manera fácil de que el terminal use un color diferente basado en el nombre de host ssh?

Me pregunto cómo lo haría 1. Guardar una conexión (por ejemplo [email protected]) y tener esa conexión siempre abierta con un determinado color de texto (por ejemplo, # 00ff00) 2. Lo ideal es tener cualquier ventana de terminal detectar en qué host se encontraba y cambiar su color en consecuencia. Entonces, si estuviera en mi entorno regular de Terminal y emitiera un ssh [email protected] exitoso, cambiaría automáticamente el color del texto de esa ventana (o pestaña) de terminal a # 00ff00

¡Avíseme, gracias!

+0

Vea también http://stackoverflow.com/q/18715941/754997 –

Respuesta

4

En la terminal puede definir perfiles con diferente color de fondo de ventana, opacidad, etc. También en los perfiles puede especificar un comando de inicio. Puede configurar un perfil diferente para cada host que use con un comando de inicio de "ssh me @ thathost", pero esto solo funcionaría para las nuevas ventanas. Los perfiles son fáciles de acceder a través de Shell -> Nueva ventana.

+0

oh, sí, eso resuelve el # 1 para mí, muchas gracias. Todavía estoy interesado en ver si alguien puede hacer # 2, pero si no hay nada después de un día o así, con mucho gusto lo marcaré como la respuesta correcta –

+0

¡Esto es genial! Y pensar que casi sugerí un lío de AppleScript y/o scripts de shell y códigos de escape ANSI. – benzado

+0

Sí, yo también estaba pensando en el asunto del escape. Mi PS1 cambia mágicamente la barra de título para reflejar el host y el directorio en el que estoy, pero no recuerdo cómo funciona. Puedes intentarlo configurando tu PS1 así. Uso zsh pero podría funcionar en bash: export PS1 = $ '% {\ e [0; 34m%} \ {% {\ e [0m%}% n% {\ e [0; 36m%} @% {\ e [0m%}% m% ~% {\ e [0; 34m%} \}% {\ e [0m%}% {\ e [0; 36m%} $% {\ e [0m%} ' – spieden

10

OK, si insistes en invocar ssh desde la línea de comandos, aquí hay algo que debería hacer el truco: escribir un script de shell y guardarlo en alguna parte como colorssh.sh. Cuando se ejecuta, busca sus argumentos para un host coincidente y establece los colores de la ventana de terminal activa de forma apropiada. Luego invoca el ssh real, pasando por esos argumentos. Cuando ssh devuelve la ejecución a la secuencia de comandos, restablece los colores a la normalidad.

Dado que es probable que desee seguir escribiendo ssh en lugar de colorssh.sh, puede establecer un alias en su .profile.

¿En cuanto al script en sí? Aquí está el codez:

#!/bin/bash 

function setTerminalColors { 
    osascript \ 
     -e "tell application \"Terminal\"" \ 
     -e "tell selected tab of front window" \ 
     -e "set normal text color to $1" \ 
     -e "set background color to $2" \ 
     -e "end tell" \ 
     -e "end tell" 
} 

for ARG in $* 
do 
    case "$ARG" in 
     host.example.com) 
     [email protected]) 
      setTerminalColors "{0,65535,65535}" "{65535,0,0}" 
      ;; 
     [email protected]) 
      setTerminalColors "{65535,65535,0}" "{0,65535,0}" 
      ;; 
    esac 
done 

ssh $* 

# back to normal 
setTerminalColors "{0,0,0}" "{65535,65535,65535}" 

Tendrás que editar la secuencia de comandos para agregar nuevas combinaciones de host/color.

Tenga en cuenta que los colores se deben especificar como un triplete RGB de enteros en el rango 0-65535. Lo sé, raro, ¿verdad?

Técnicamente, la porción de AppleScript cambia las propiedades en desuso. Se supone que debes cambiar los colores de una ventana a través de su propiedad "configurar ajustes", pero sospecho que eso cambiaría todas las ventanas usando ese conjunto de configuraciones, no solo el actual.

Además, esta secuencia de comandos supone que negro sobre blanco es su configuración "normal". Si ese no es el caso, podría cambiar la secuencia de comandos para guardar los valores actuales antes de ejecutar o utilizar los colores de la configuración predeterminada establecida.

+0

gracias, esto es realmente genial y hace exactamente lo que estaba pidiendo. Sin embargo, lo pensé y realmente no es gran cosa abrir una pestaña nueva con un perfil guardado, así que probablemente lo haga más a menudo. Supongo que es más común y más útil, así que voy a marcarlo como la respuesta correcta, pero gracias de nuevo por el guión ya que emplearé ambos métodos. –

+2

Neil, ¡me estás matando! Ya sabes, si quieres ser quisquilloso, tu pregunta no es realmente sobre programación en primer lugar. :-) – benzado

Cuestiones relacionadas