Obtenga comandos SSH de una sola línea para mostrar el color

Obtenga comandos SSH de una sola línea para mostrar el color

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=autoen 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 $TERMme indica xterm-256colorsi 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"

lssolo genera colores cuando escribe en un terminal. Cuando especifica un comando para sshejecutar 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 -topción de asignar una terminal. Lo siguiente debería imprimir colores:

ssh -t user@host "ls --color=auto"

Si sshse ejecuta de forma no interactiva y su propia salida local no va a una terminal, ignorará un solo -tindicador. En este caso, puede especificar -tmá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=alwaysen 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>"

información relacionada