Obtenha comandos SSH de uma linha para mostrar cores

Obtenha comandos SSH de uma linha para mostrar cores

Gostaria de ativar a saída de texto colorido em comandos SSH de uma linha, mas não consigo fazê-lo funcionar no OS X, Ubuntu 14.10 ou OpenSUSE 12.2.

Se eu fizer ssh em um servidor e digitar, digamos, ls --color=autono prompt, ele funcionará perfeitamente, mostrando diretórios, links simbólicos e arquivos regulares em cores diferentes, no entanto, se eu colocar o comando em uma linha única de ssh no mesmo sistema: ssh user@host "ls --color=auto", a saída não será colorida.

A digitação echo $TERMme dá xterm-256colorse devo ou não colocá-lo em uma declaração de uma linha.

Isso se aplica principalmente a erros de codificação de cores e avisos em compilações remotas, mas seria bom ativá-lo para tudo.

Algum conselho?

Responder1

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

lssó gera cores quando está gravando em um terminal. Quando você especifica um comando para sshser executado no host remoto, o ssh não aloca um TTY (interface de terminal) por padrão. Portanto, quando você executa o comando acima, o ssh não aloca um terminal no sistema remoto, ls vê que não está gravando em um terminal e não gera cores.

Você pode executar o ssh com a -topção de alocar um terminal. O seguinte deve imprimir cores:

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

Se sshestiver sendo executado de forma não interativa e sua própria saída local não estiver indo para um terminal, ele ignorará um único -tsinalizador. Neste caso, você pode especificar -tmais de uma vez para forçar o ssh a alocar um TTY no sistema remoto:

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

Responder2

Eu sugiro usar --color=alwaysno caso de ls, para forçar a cor. E para ter cores em outros aplicativos que suportam coloração, mas não suportam --color=value, você também pode tentarssh <host> -t "TERM=${TERM} <command>"

informação relacionada