
Me gustaría habilitar la salida de texto en color en los comandos de una sola línea SSH, pero parece que no puedo hacerlo funcionar en OS X, Ubuntu 14.10 u OpenSUSE 12.2.
Si ingreso a un servidor y escribo, digamos, ls --color=auto
en el mensaje, funciona bien, mostrando directorios, enlaces simbólicos y archivos normales en diferentes colores; sin embargo, si pongo el comando en una sola línea ssh en el mismo sistema: ssh user@host "ls --color=auto"
, la salida no está coloreada.
Escribir echo $TERM
me indica xterm-256color
si lo pongo o no en una declaración de una sola línea.
Esto es principalmente para errores de codificación de colores y advertencias en compilaciones remotas, pero sería bueno habilitarlo para todo.
¿Algún consejo?
Respuesta1
ssh user@host "ls --color=auto"
ls
solo genera colores cuando escribe en un terminal. Cuando especifica un comando para ssh
ejecutar en el host remoto, ssh no asigna un TTY (interfaz de terminal) de forma predeterminada. Entonces, cuando ejecuta el comando anterior, ssh no asigna una terminal en el sistema remoto, ls ve que no está escribiendo en una terminal y no genera colores.
Puede ejecutar ssh con la -t
opción de asignar una terminal. Lo siguiente debería imprimir colores:
ssh -t user@host "ls --color=auto"
Si ssh
se ejecuta de forma no interactiva y su propia salida local no va a una terminal, ignorará un solo -t
indicador. En este caso, puede especificar -t
más de una vez para forzar a ssh a asignar un TTY en el sistema remoto:
ssh -tt user@host "ls --color=auto"
Respuesta2
Sugeriría usarlo --color=always
en caso de ls, para forzar el color. Y para tener colores en otras aplicaciones que admiten colorear, pero no admiten --color=value
, también puedes intentarssh <host> -t "TERM=${TERM} <command>"